From: "Saved by Windows Internet Explorer 7" Subject: Placebolotherapy -- Woodhead 336 (7653): 1087 -- BMJ Date: Fri, 16 May 2008 07:58:32 +0100 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01C8B72A.A28EB4F0" X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6000.16545 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: text/html; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.bmj.com/cgi/content/full/336/7653/1087-b Placebolotherapy -- Woodhead 336 (7653): 1087 -- = BMJ

You are seeing this message because your web browser does not support = basic=20 web standards. Find out = more=20 about why this message is appearing and what you can do to make your = experience=20 on this site better.

=0A= =0A=

DUNCAN BRIAN = DOUBLE=20 | View/Change=20 User Information | Email=20 alerts | Sign=20 Out | Click here if you are not DUNCAN BRIAN DOUBLE =

Home > Comment > BMJ=20 2008;336(7653):1087 (17 May), = doi:10.1136/bmj.39577.534688.3A


BMJ  2008;336:1087 (17 May),=20 doi:10.1136/bmj.39577.534688.3A

Letters

Placebo effect

Placebolotherapy

I am thinking of setting myself up as a placebolotherapist.1=20 Placebolotherapy=97the standard by which all other treatments = are=20 measured. At least as effective as all types of psychotherapy = and all=20 "alternative" healthcare treatments. Treats physical health=20 conditions and mental health problems (especially mood = disorders).=20 Evidence based. No spurious claims or pseudoscientific = explanations.=20 No reliance on ill defined terms such as "energy," "auras," = "crystal=20 power," or "spirituality."

Placebolotherapy is not a replacement for any proven treatment, = it=20 is an enormously helpful adjunct.

Placebolotherapists spend an hour with the "patient" in a = pleasant=20 room, giving them their full and undivided attention. They = explain=20 that what they are doing is backed up by rigorous scientific=20 evidence, is extremely effective, and that the patient will=20 feel better afterwards.

That=92s it. Cost =A350 a session. Research into placebo = shows that=20 the more value the patient puts on it, the more effective it = is (a=20 placebo injection is more effective than a placebo pill), so = an=20 expensive session will be more effective than a cheap = one.=20

Or should I set myself up as a homoeopath?

Nick J Woodhead, Mental Health Act coordination=20 manager

1 Bridgwater, Somerset TA6 4RN

nick.woodhead{at}sompar.nhs.uk


Competing interests: NJW often uses hot = lemon cold=20 cures.

References

  1. Pittrof R, Rubenstein I. The thinking = doctor=92s guide to=20 placebos. BMJ 2008;336:1020. (3 May.)[Free Full Text]=20

Related Article

The thinking doctor=92s guide to placebos=20
Rudiger Pittrof and Ian Rubenstein
BMJ 2008 336: 1020. [Extract] [Full = Text] [PDF] =

This article
Services
Google Scholar
  • Articles by Woodhead, N. J
PubMed
  • Articles by Woodhead, N. J
Related content

Online poll
Find out = more

Rapid responses for this article

There are no rapid responses = for this=20 article.

Most read last week



Student = BMJ

Risk of = surgery for=20 inflammatory bowel disease: record linkage studies

What can you learn from this BMJ paper? Read Leanne Tite's = Paper+

http://student.bmj.com/


Contact us - = Privacy policy - Web site terms & conditions - = Site map

HighWire Press - Feedback - Help - =A9 2008 BMJ Publishing Group Ltd. =

------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.bmj.com/icons/site/logo.bmj.gif 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 ------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.bmj.com/icons/shared/toc/free.gif R0lGODlhIAAHAIABANYTNP///yH5BAEAAAEALAAAAAAgAAcAQAIjjI+pqwDpTAzzVPjQ3Nl2Boah Q0pkd2YpVq1mW2IypZ5vVQAAOw== ------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.bmj.com/icons/site/icon.rss.gif R0lGODlhLAAQALMAAPzm0/KXRO+RQumBPOyLQOuHPvScReFxN+N0OfeiR/qsU/moSe++meR3Ou69 mP///yH5BAAAAAAALAAAAAAsABAAAAT/8LlJq704XykKEUJgGEmynEqqrmzrKgxRGAzjjOWpL83u /8BdgEBQPI4PhsJX6pWe0Kg0OhTAAMikLjHqjUaAMEBhUIjJ5jD5CwrhHFgtNxDo0ekPACMfCO8B fXp8dyABDnlKC3EMBgEgPW0CSQJ7kgwCcJaYAJEfBodIS3EGAkQ9RERJaQRYjEStBqioIgkwoQlH MQUFPbu7ea27cEnCwb4FATkLZkcJoAUDAz3R0UkDewMADtcP2dvY1MgmfkaTRwYN6TzpDRINhw1q WPFj8+wDBgugAAl/rO7q2LVz8K4bszENDioQiG/ZEQCf8hTYwwABgh4WM2rcyHHjgAAoL244SjHA CoEDBxokQMmypcuXLgc4WDKnFDRpFwXq3MmT5yEHNYIKHUq0qFGiDyIAADs= ------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://www.bmj.com/columns/icons/listen-blog-generic.jpg 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 RSzRVEUksgAWSGRZUOiNVFgyLsb9N74//9k= ------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://group.bmj.com/bmjpg/images/icon-search.gif R0lGODlhFAASAOYAAP////7+//7///38+v38+/37+vTu5/Xs4+Pu+uHt+fPq4d/s+d7s+t7r+fHo 3t3q+djq/Nnq/Nrp+Nno+Nbn+Nbn99fn99Pm+NPl99Lk987k+9Di9c7i9szh9szi+M3h9c3g9cjf 9cne88je9cjd88fe9cLd+sjb8cPc9MHb+MLb9L7Z873Y87nW9r3V8L/U7LXT9OjLq7fQ7brP6LXP 7LLO7q/O8LDK6OTBnd21iZ2735y635m539WuhpKy28aogcqke86kdsyidYer15Gox4eo0oWm0oCm 08Kcb5mhrseZZsWXZHyh0LqUZJWXoLyNVbuHUK97QKVxMZ1nIpdfGAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5 BAEHAAAALAAAAAAUABIAAAeQgACCg4SFhoeIiQARJi0wMCACioIaGgyXEi4yAYoQHggVHKIPNC+K KQ0VHR0jrRs8ijAJqyUlKioUQ4o2CyEhKCgrKxdHijUWHbcsLCoiRYonMhMjyyoZOk4Hijc3HxgY JDtEPVAKijM+R0xGSUIxQVEOk4MEQEs4SlLzgwNITzlU9g0q0GTKD4GEDCBcuC8QADs= ------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.bmj.com/icons/site/search.gif R0lGODlhFAASAOYAAP////7///7+//79/P38+/38+v37+vTu5/Xs4+Pu+uLu+eLt+fPq4eHt+d7s +t/s+fHo3t7r+d3q+dnq/Njq/Nrp+Nno+Nfn99bn+Nbn99Pm+NPl99Hl99Lk987k+9Dj9tDi9c7i 9s3i+czi+M3h9czh9svh9s3g9crg9cnf9cne88jf9cje9cfe9cjd88Ld+sbd9cXd9cPc9Mjb8cTc 9MHb+MLb9MHa9MDa9L7Z873Y873X87vX87nW9rvW87/U7L3V8LjU87XT9OjLq7fQ7brP6LXP7LLO 7q/O8LDK6K7J6OTBnd21iZ2735y635m539WuhpKy28aogc6kdsqke8yidYer15Gox4eo0oWm0oCm 08Kcb5mhrseZZsWXZHyh0LqUZJWXoLyNVbuHUK97QKVxMZ1nIpdfGAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5 BAQUAP8ALAAAAAAUABIAAAeQgACCg4SFhoeIiQATLz1CQicBioIeHg6XFUBEAooUIwkZIaISRj+K NREZJSUsrSBPikINqy0tNjYYVopIDysrMjI5ORpaikcXJbc6OjYqWIozRBYsyzYdTWEIiklJJBsb Lk5XUGMMikVRWl9ZXFVDU2QQk4MEVF5LXWXzgwVbYkxn9g0yAMaMFIGEDiBcuC8QADs= ------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.bmj.com/css/basic.css BODY { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; FONT: 62.5% arial,sans-serif; COLOR: #333; PADDING-TOP: 0px } A { =09 } IMG { BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium = none; BORDER-BOTTOM: medium none } A IMG { BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium = none; BORDER-BOTTOM: medium none } H1 { MARGIN-TOP: 10px; MARGIN-BOTTOM: 2px; FONT: bold 2.1em arial, = sans-serif; COLOR: #3a6d8e } H2 { MARGIN-TOP: 10px; MARGIN-BOTTOM: 2px; FONT: bold 1.8em arial, = sans-serif; COLOR: #009af6 } H3 { MARGIN-TOP: 10px; MARGIN-BOTTOM: 2px; FONT: bold 1.6em arial, = sans-serif; COLOR: #666 } H4 { MARGIN-TOP: 10px; MARGIN-BOTTOM: 2px; FONT: bold 1.2em arial, = sans-serif; COLOR: #333 } H5 { MARGIN-TOP: 10px; MARGIN-BOTTOM: 2px; FONT: bold 1.2em arial, = sans-serif; COLOR: #666 } P { MARGIN-TOP: 2px; MARGIN-BOTTOM: 10px; FONT: 1.2em/1.4em arial, = sans-serif } IMG.audio { PADDING-RIGHT: 10px } UL { LIST-STYLE-TYPE: disc } UL LI { FONT: 1.2em/1.6em Arial, Sans Serif; LIST-STYLE-TYPE: disc } LI UL LI { FONT: 1em/1.6em Arial, Sans Serif; LIST-STYLE-TYPE: circle } LI UL LI LI { FONT: 1em/1.6em Arial, Sans Serif; LIST-STYLE-TYPE: square } OL { =09 } OL LI { FONT: 1.2em Arial, Sans Serif } LI OL LI { FONT: 1em Arial, Sans Serif } UL UL { =09 } OL OL { =09 } UL OL { =09 } OL UL { =09 } DL { =09 } DL DT { =09 } DL DD { MARGIN: 0px 0px 1em } BLOCKQUOTE { MARGIN: 1em 0px 1em 20px } IMG.audio { BORDER-RIGHT: medium none; PADDING-RIGHT: 10px; BORDER-TOP: medium = none; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: 0px; MARGIN: 0pt; = BORDER-LEFT: medium none; LINE-HEIGHT: 3em! important; PADDING-TOP: 0px; = BORDER-BOTTOM: medium none } P.audio { LINE-HEIGHT: 3em! important } LI.audio { PADDING-RIGHT: 0px; LIST-STYLE: none none outside; PADDING-LEFT: 37px; = BACKGROUND: url(http://www.bmj.com/home/icons/listen-icon2.jpg) = no-repeat 0pt 0em; PADDING-BOTTOM: 0px; MARGIN: 0pt; LINE-HEIGHT: 3em! = important; PADDING-TOP: 0px } LI.read { PADDING-RIGHT: 0px; LIST-STYLE: none none outside; PADDING-LEFT: 37px; = BACKGROUND: url(http://www.bmj.com/home/icons/read-icon.jpg) no-repeat = 0pt 0em; PADDING-BOTTOM: 0px; MARGIN: 0pt; LINE-HEIGHT: 3em! important; = PADDING-TOP: 0px } H2.audio { PADDING-RIGHT: 0px; LIST-STYLE: none none outside; PADDING-LEFT: 37px; = BACKGROUND: url(http://www.bmj.com/home/icons/audio-icon.jpg) no-repeat = 0pt 0em; PADDING-BOTTOM: 0px; MARGIN: 0pt; PADDING-TOP: 0px } PRE { =09 } CODE { =09 } TT { =09 } * HTML CODE { =09 } * HTML PRE { =09 } * HTML TT { =09 } FORM { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } FIELDSET { =09 } LEGEND { =09 } INPUT { VERTICAL-ALIGN: middle } SELECT { VERTICAL-ALIGN: middle } ------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.bmj.com/css/common.css A { COLOR: #006990; TEXT-DECORATION: none } A:hover { TEXT-DECORATION: underline } FIELDSET { BORDER-RIGHT: medium none; PADDING-RIGHT: 0px; BORDER-TOP: medium none; = PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1em; = BORDER-LEFT: medium none; PADDING-TOP: 0px; BORDER-BOTTOM: medium none } LEGEND { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px = 0px 0.5em; PADDING-TOP: 0px } HR { DISPLAY: none } LI LI { =09 } SUP { LINE-HEIGHT: 0 } .LayoutTable { CLEAR: both; BORDER-RIGHT: medium none; BORDER-TOP: medium none; = BORDER-LEFT: medium none; WIDTH: 100%; BORDER-BOTTOM: medium none; = BORDER-COLLAPSE: collapse; border-spacing: 0 } .LayoutTable TD { VERTICAL-ALIGN: top } .FormTable { CLEAR: both; BORDER-RIGHT: medium none; BORDER-TOP: medium none; = FONT-SIZE: 100%; BORDER-LEFT: medium none; WIDTH: 100%; BORDER-BOTTOM: = medium none; BORDER-COLLAPSE: collapse; border-spacing: 0 } .FormTable TD { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 4px; = PADDING-TOP: 4px } .FormTable TH { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 4px; = PADDING-TOP: 4px } .FormTable TH { PADDING-RIGHT: 0.5em; FONT-WEIGHT: normal; TEXT-ALIGN: right } .FormTable TH LABEL { FONT-WEIGHT: bold } .FormTable TH .Label { FONT-WEIGHT: bold } .FormTable TD .Label { FONT-WEIGHT: bold } .FormTable THEAD TH { BORDER-BOTTOM: #081e3f 1px solid; TEXT-ALIGN: left } .DataTable { CLEAR: both; BORDER-RIGHT: medium none; BORDER-TOP: medium none; = BORDER-LEFT: medium none; WIDTH: 100%; BORDER-BOTTOM: medium none; = BORDER-COLLAPSE: collapse; border-spacing: 0 } .DataTable TH { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 2px; = PADDING-TOP: 2px } .DataTable TD { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 2px; = PADDING-TOP: 2px } .DataTable TR.Even TD { =09 } .DataTable TR.Even TH { =09 } .DataTable TR.Odd TD { =09 } .DataTable TR.Odd TH { =09 } .FormAction { PADDING-TOP: 4px; TEXT-ALIGN: right } .FormAction INPUT.Button { =09 } .TextInput { =09 } .ShowTitle { =09 } .Secure { =09 } .Inputs { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px = 0px 1em; PADDING-TOP: 0px } .Inputs LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px = 0px 1em; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } .HorizList { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } .HorizList LI { PADDING-RIGHT: 1em; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } .StandardBullet { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px = 0px 0.5em; PADDING-TOP: 0px } .StandardBullet LI { PADDING-RIGHT: 0px; PADDING-LEFT: 12px; FONT-SIZE: 1.1em! important; = BACKGROUND: url(http://www.bmj.com/icons/site/bullet-services.jpg) = no-repeat 0pt 0.65em; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: = 0px; LIST-STYLE-TYPE: none } .NoBullet { PADDING-RIGHT: 0px; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; MARGIN: = 0px 0px 0.5em; PADDING-TOP: 0px } .NoBullet LI { MARGIN-BOTTOM: 0.5em; LIST-STYLE-TYPE: none } .ImageList { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } .ImageList LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px = 0px 0.5em; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } * HTML .ImageList LI { MARGIN-BOTTOM: 6px; WIDTH: 100% } .Item { =09 } .Content { =09 } .Icon { VERTICAL-ALIGN: middle } .Button { VERTICAL-ALIGN: middle } .Pic { DISPLAY: block } .Promo { DISPLAY: block } .LinkAction { WHITE-SPACE: nowrap } A.LinkMore { WHITE-SPACE: nowrap } .ClearFix { CLEAR: both; HEIGHT: 0px } .BoxFix { =09 } .Invisible { DISPLAY: none } LABEL.Invisible { DISPLAY: block; LEFT: -10000px; POSITION: absolute; TOP: -10000px } .HelpText { =09 } .Even { =09 } .Odd { =09 } .LegacyContent { =09 } #LegacyContent { =09 } .DEBUG { BACKGROUND: #f90 } P.byline { COLOR: #666 } ------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.bmj.com/css/layout.css #PageWrapper { MARGIN: 5px auto; WIDTH: 982px } #LayoutWrapper { =09 } #HeaderWrapper { BORDER-RIGHT: #b8b6b6 1px solid; BORDER-TOP: #b8b6b6 1px solid; = BORDER-LEFT: #b8b6b6 1px solid; BORDER-BOTTOM: #b8b6b6 0px solid } #BodyWrapper { BORDER-RIGHT: #b8b6b6 1px solid; BORDER-TOP: #b8b6b6 0px solid; = BORDER-LEFT: #b8b6b6 1px solid; WIDTH: 982px; BORDER-BOTTOM: #b8b6b6 1px = solid } #FooterWrapper { =09 } * HTML BODY { TEXT-ALIGN: center } * HTML #PageWrapper { TEXT-ALIGN: left } * HTML #HeaderWrapper { ZOOM: 1 } * HTML #BodyWrapper { ZOOM: 1 } #bmj-logo { FLOAT: left; MARGIN: 19px 0px 0px 23px } #SearchWrapper { CLEAR: right; COLOR: #404040; MARGIN-RIGHT: 175px; TEXT-ALIGN: right } #SearchWrapper A { COLOR: #404040 } #Authorization { CLEAR: left; FONT-WEIGHT: bold; MIN-HEIGHT: 1em; PADDING-BOTTOM: 7px; = MARGIN: 0px 170px 0px 0px; COLOR: #404040; TEXT-ALIGN: right } #Authorization A { FONT-WEIGHT: normal; COLOR: #404040; WHITE-SPACE: nowrap } * HTML #Authorization { HEIGHT: 1em } #site_search { =09 } #site_search FIELDSET { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; MARGIN: = 0px; PADDING-TOP: 7px } #site_search LABEL { PADDING-RIGHT: 8px } #site_search .TextInput { FONT-SIZE: 100%; WIDTH: 120px } #site_search A { TEXT-DECORATION: underline } #site_search .FormAction { DISPLAY: inline } .home-name { FONT-WEIGHT: bold } #MainNavWrap { BACKGROUND: url(/icons/site/bg.main-nav-wrap.gif) #e0f1fa repeat-x 0px = 0px; FLOAT: left; WIDTH: 100% } #MainNav { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: = 0px; MARGIN: 0px; WIDTH: 565px; PADDING-TOP: 0px; HEIGHT: 25px } #MainNav LI { FLOAT: left; LIST-STYLE-TYPE: none; POSITION: relative } #MainNav A { DISPLAY: block; BACKGROUND: url(/icons/site/main-nav.matrix.gif) = no-repeat 0px 0px; HEIGHT: 25px } #MainNav A SPAN { LEFT: -9999px; POSITION: absolute; TOP: -9999px } #main-nav_research A { BACKGROUND-POSITION: 0px 0px; WIDTH: 79px } .Active#main-nav_research A { BACKGROUND-POSITION: 0px -27px } .Hover#main-nav_research A { BACKGROUND-POSITION: 0px -27px } #main-nav_research A:hover { BACKGROUND-POSITION: 0px -27px } #main-nav_education A { BACKGROUND-POSITION: -79px 0px; WIDTH: 83px } .Active#main-nav_education A { BACKGROUND-POSITION: -79px -27px } .Hover#main-nav_education A { BACKGROUND-POSITION: -79px -27px } #main-nav_education A:hover { BACKGROUND-POSITION: -79px -27px } #main-nav_news A { BACKGROUND-POSITION: -162px 0px; WIDTH: 65px } .Active#main-nav_news A { BACKGROUND-POSITION: -162px -27px } .Hover#main-nav_news A { BACKGROUND-POSITION: -162px -27px } #main-nav_news A:hover { BACKGROUND-POSITION: -162px -27px } #main-nav_comment A { BACKGROUND-POSITION: -227px 0px; WIDTH: 85px } .Active#main-nav_comment A { BACKGROUND-POSITION: -227px -27px } .Hover#main-nav_comment A { BACKGROUND-POSITION: -227px -27px } #main-nav_comment A:hover { BACKGROUND-POSITION: -227px -27px } #main-nav_topics A { BACKGROUND-POSITION: -312px 0px; WIDTH: 65px } .Active#main-nav_topics A { BACKGROUND-POSITION: -312px -27px } .Hover#main-nav_topics A { BACKGROUND-POSITION: -312px -27px } #main-nav_topics A:hover { BACKGROUND-POSITION: -312px -27px } #main-nav_print-issues A { BACKGROUND-POSITION: -377px 0px; WIDTH: 83px } .Active#main-nav_print-issues A { BACKGROUND-POSITION: -377px -27px } .Hover#main-nav_print-issues A { BACKGROUND-POSITION: -377px -27px } #main-nav_print-issues A:hover { BACKGROUND-POSITION: -377px -27px } #main-nav_interactive A { BACKGROUND-POSITION: -460px 0px; WIDTH: 105px } .Active#main-nav_interactive A { BACKGROUND-POSITION: -460px -27px } .Hover#main-nav_interactive A { BACKGROUND-POSITION: -460px -27px } #main-nav_interactive A:hover { BACKGROUND-POSITION: -460px -27px } #MainNav UL { BORDER-RIGHT: #e0f1fa 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: = #e0f1fa 11px solid; PADDING-LEFT: 0px; Z-INDEX: 2; BACKGROUND: #fff; = LEFT: 0px; PADDING-BOTTOM: 10px; MARGIN: 0px; BORDER-LEFT: #e0f1fa 1px = solid; PADDING-TOP: 5px; BORDER-BOTTOM: #e0f1fa 1px solid; POSITION: = absolute; TOP: 25px } #MainNav UL LI { DISPLAY: inline; FLOAT: none; MARGIN: 0px } #MainNav UL A { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent = scroll repeat 0% 0%; PADDING-BOTTOM: 0.1em; MARGIN: 0px 12px; WIDTH: = auto; PADDING-TOP: 0.1em; BORDER-BOTTOM: #ccc 1px dotted; HEIGHT: auto } * HTML #MainNav UL A { WIDTH: 100%; TEXT-INDENT: 1px; BORDER-BOTTOM: #eee 1px solid } #MainNav LI UL { DISPLAY: none } #MainNav LI.Hover UL { DISPLAY: block } #main-nav_education UL { WIDTH: 160px } * HTML #main-nav_education UL { WIDTH: 162px } #main-nav_comment UL { WIDTH: 160px } * HTML #main-nav_comment UL { WIDTH: 162px } #main-nav_topics UL { WIDTH: 160px } * HTML #main-nav_topics UL { WIDTH: 162px } #main-nav_print-issues UL { WIDTH: 160px } * HTML #main-nav_print-issues UL { WIDTH: 162px } #main-nav_interactive UL { WIDTH: 193px } * HTML #main-nav_interactive UL { WIDTH: 197px } #resource_form { BACKGROUND: #006990; FLOAT: left; WIDTH: 323px; PADDING-TOP: 3px } #resource_form FIELDSET { MARGIN: 0px } #resource_form LEGEND { DISPLAY: none } #resource_form LABEL { PADDING-RIGHT: 5px; DISPLAY: block; PADDING-LEFT: 15px; FONT-WEIGHT: = bold; FLOAT: left; PADDING-BOTTOM: 0px; COLOR: #fff; PADDING-TOP: 1px } #resource_form SELECT { FONT-SIZE: 100%; WIDTH: 9em } #resource_form .FormAction { DISPLAY: inline } #AboutBMJ { FLOAT: left } #AboutBMJ A { DISPLAY: block; BACKGROUND: url(/icons/site/bg.about-BMJ.gif) = no-repeat; WIDTH: 105px; HEIGHT: 25px } #AboutBMJ A:hover { BACKGROUND-POSITION: 0px -27px } #AboutBMJ A SPAN { DISPLAY: none } #ResourceNav { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: = url(/icons/site/resourcenav.matrix.gif) no-repeat; FLOAT: right; = PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 548px; PADDING-TOP: 0px; = HEIGHT: 33px } #ResourceNav LI { BACKGROUND: url(/icons/site/bg.resourcenav.gif) repeat-x left bottom; = FLOAT: left; BORDER-LEFT: #b8b6b6 1px solid; LIST-STYLE-TYPE: none; = HEIGHT: 33px } #ResourceNav LI.Active { BACKGROUND: none transparent scroll repeat 0% 0% } #ResourceNav LI.Active#res-nav_bmj { BORDER-LEFT: #fff 1px solid } #ResourceNav DIV { DISPLAY: block; HEIGHT: 30px } #ResourceNav A { DISPLAY: block; HEIGHT: 30px } #ResourceNav SPAN { LEFT: -9999px; POSITION: absolute; TOP: -9999px } #ResourceNav A:hover { BACKGROUND-IMAGE: url(/icons/site/resourcenav.matrix.gif); = BACKGROUND-REPEAT: no-repeat } #res-nav_bmj { WIDTH: 43px } * HTML #res-nav_bmj { WIDTH: 44px } #res-nav_bmj A:hover { BACKGROUND-POSITION: -1px -32px } #res-nav_bmj-journals { WIDTH: 97px } * HTML #res-nav_bmj-journals { WIDTH: 98px } #res-nav_bmj-journals A:hover { BACKGROUND-POSITION: -45px -32px } #res-nav_bmj-careers { WIDTH: 94px } * HTML #res-nav_bmj-careers { WIDTH: 95px } #res-nav_bmj-careers A:hover { BACKGROUND-POSITION: -143px -32px } #res-nav_bmj-learning { WIDTH: 97px } * HTML #res-nav_bmj-learning { WIDTH: 98px } #res-nav_bmj-learning A:hover { BACKGROUND-POSITION: -238px -32px } #res-nav_bmj-knowledge { WIDTH: 110px } * HTML #res-nav_bmj-knowledge { WIDTH: 111px } #res-nav_bmj-knowledge A:hover { BACKGROUND-POSITION: -336px -32px } #res-nav_bmj-group { WIDTH: 101px } * HTML #res-nav_bmj-group { WIDTH: 102px } #res-nav_bmj-group A:hover { BACKGROUND-POSITION: -447px -32px } #BodyWrapper { BACKGROUND: url(/icons/site/bg.page.gif) repeat-y 0px 0px } #BodyWrapper A { =09 } #MainColumn { BORDER-TOP: #ccc 1px solid; FLOAT: left; WIDTH: 615px; PADDING-TOP: = 14px } #SideColumn { FLOAT: left; WIDTH: 194px } #PromoColumn { BORDER-TOP: #ccc 1px solid; FLOAT: left; WIDTH: 171px } * HTML #MainColumn { =09 } * HTML #SideColumn { =09 } * HTML #PromoColumn { =09 } #CategoryHeader { BACKGROUND: #fff; FLOAT: left; PADDING-BOTTOM: 3px; WIDTH: 978px } #CategoryHeader H1 { FONT-WEIGHT: normal; FLOAT: left; MARGIN: 15px 0px 0px 20px; COLOR: = #3e647e; FONT-FAMILY: georgia, times, serif } * HTML #CategoryHeader H1 { DISPLAY: inline } #CategoryHeader #PageTools { PADDING-RIGHT: 364px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 2em; LIST-STYLE-TYPE: none; TEXT-ALIGN: right } #CategoryHeader #PageTools LI { PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 8px; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px } #CategoryHeader #PageTools LI SPAN { LEFT: -9999px; POSITION: absolute; TOP: -9999px } #CategoryHeader .Disclaimer { FLOAT: right; MARGIN: 6px 0px 0px; WIDTH: 225px; LINE-HEIGHT: 1.2 } #Breadcrumb { CLEAR: left; PADDING-RIGHT: 14px; PADDING-LEFT: 14px; FONT-SIZE: 1.1em; = BACKGROUND: #e0f1fa; PADDING-BOTTOM: 0.3em; MARGIN: 0px; PADDING-TOP: = 0.3em; BORDER-BOTTOM: #b3d5e4 1px solid } #SideColumn .Item { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 5px; = PADDING-TOP: 5px; BORDER-BOTTOM: #cccccc 1px solid } #SideColumn .ItemPrint { PADDING-RIGHT: 8px; PADDING-LEFT: 8px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px; BORDER-BOTTOM: #cccccc 1px solid } #SideColumn .Item H2 { FONT-SIZE: 1.2em; COLOR: #333333; TEXT-ALIGN: left } #polldaddy-head { BORDER-RIGHT: #cbb676 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: = #cbb676 1px solid; DISPLAY: block; PADDING-LEFT: 5px; FONT-WEIGHT: bold; = FONT-SIZE: 1.2em; BACKGROUND: #cbb676 0% 50%; PADDING-BOTTOM: 5px; = BORDER-LEFT: #cbb676 1px solid; COLOR: #000000; PADDING-TOP: 5px; = BORDER-BOTTOM: #cbb676 1px solid; TEXT-ALIGN: left } #polldaddy-bottom { BORDER-RIGHT: #cbb676 2px solid; PADDING-RIGHT: 5px; PADDING-LEFT: = 10px; FONT-SIZE: 1.1em; BACKGROUND: #f9f7ec; PADDING-BOTTOM: 5px; = BORDER-LEFT: #cbb676 2px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #cbb676 = 2px solid; TEXT-ALIGN: left } #SideColumn .ItemPrint H2 { FONT-SIZE: 1.2em; COLOR: #333333 } #print-issue { BORDER-RIGHT: medium none; PADDING-RIGHT: 8px! important; BORDER-TOP: = medium none; PADDING-LEFT: 8px! important; PADDING-BOTTOM: 15px! = important; BORDER-LEFT: medium none; PADDING-TOP: 0px! important; = BORDER-BOTTOM: medium none } #print-issue H2 { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 7px; BORDER-TOP: #ccc 1px = solid; PADDING-LEFT: 7px; PADDING-BOTTOM: 5px; MARGIN: 0px; BORDER-LEFT: = #ccc 1px solid; COLOR: #069; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 0px = solid } #research-archive { PADDING-RIGHT: 0px! important; BORDER-TOP: medium none; PADDING-LEFT: = 0px! important; PADDING-BOTTOM: 0px! important; PADDING-TOP: 0px! = important } #research-archive H2 { PADDING-RIGHT: 7px; MARGIN-TOP: 0px; PADDING-LEFT: 7px; FONT-SIZE: = 1.2em! important; BACKGROUND: #069; PADDING-BOTTOM: 5px; COLOR: #fff! = important; PADDING-TOP: 5px } #research-archive FORM { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } #research_archive_form .FormTable TD { PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; = PADDING-BOTTOM: 6px! important; PADDING-TOP: 6px! important } #research_archive_form TH .Label { FONT-WEIGHT: normal! important } #research_archive_form LABEL { FONT-WEIGHT: normal! important } #research_archive_form #search_text { WIDTH: 90px } #research_archive_form SELECT { FONT-SIZE: 92% } #research_archive_form .FormAction { DISPLAY: inline } #era-ad-links { BORDER-RIGHT: #444 1px solid; PADDING-RIGHT: 0px! important; = BORDER-TOP: #444 1px solid; PADDING-LEFT: 0px! important; BACKGROUND: = #f4f4f4; PADDING-BOTTOM: 0px! important; MARGIN: 0px 6px 10px; = BORDER-LEFT: #444 1px solid; PADDING-TOP: 0px! important; BORDER-BOTTOM: = #444 1px solid } #era-ad-links H2 { BACKGROUND: #900; PADDING-BOTTOM: 1px; COLOR: #fff } #era-ad-links UL { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 6px; = PADDING-TOP: 0px } #era-ad-links UL LI A { COLOR: #333 } #featured-interactive UL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } #featured-interactive LI { PADDING-RIGHT: 0px; PADDING-LEFT: 60px; MIN-HEIGHT: 51px; = PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1em; PADDING-TOP: 0px; = LIST-STYLE-TYPE: none; POSITION: relative } #featured-interactive LI IMG.Pic { LEFT: 0px; POSITION: absolute; TOP: 0.3em } * HTML #featured-interactive LI { HEIGHT: 51px } #rapid-responses DT { PADDING-LEFT: 23px } #rapid-responses DD { PADDING-LEFT: 23px } #rapid-responses DT { BACKGROUND: url(/icons/site/icon.text-bubble.gif) no-repeat 0px 0.3em } #rapid-responses UL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } #rapid-responses UL LI { PADDING-RIGHT: 0px; PADDING-LEFT: 23px; BACKGROUND: = url(/icons/site/icon.text-bubble.gif) no-repeat 0px 0.3em; = PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0.5em; PADDING-TOP: 0px } #rapid-responses .LinkMore { MARGIN: 0px 10px 0.5em 0px; TEXT-ALIGN: right } * HTML #rapid-responses { ZOOM: 1 } #SideColumn #side-column-promos { PADDING-RIGHT: 5px; PADDING-LEFT: 5px } * HTML #SideColumn #side-column-promos { FONT-SIZE: 0px } .column2_box { MARGIN-LEFT: 10px; MARGIN-RIGHT: 10px; PADDING-TOP: 5px; TEXT-ALIGN: = center! important } #PromoColumn .Item { PADDING-RIGHT: 12px; BORDER-TOP: #ccc 1px solid; PADDING-LEFT: 12px; = PADDING-BOTTOM: 12px; MARGIN: 0px 0px 12px 1px; PADDING-TOP: 12px } #PromoColumn .Item H2 { FONT-SIZE: 1.1em; COLOR: #333333 } #PromoColumn .item H2.large { FONT-SIZE: 1.4em; COLOR: #333333 } #PromoColumn .First { BORDER-TOP: medium none; BORDER-BOTTOM: #ccc 1px solid } #PromoColumn .LinkMore { MARGIN: 0px; TEXT-ALIGN: right } #PromoColumn #email-alerts { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #fff; = PADDING-BOTTOM: 12px; MARGIN: 0px 0px 0px 3px; PADDING-TOP: 0px; = BORDER-BOTTOM: #ccc 1px solid } #PromoColumn #email-alerts H2 { PADDING-RIGHT: 7px; PADDING-LEFT: 7px; BACKGROUND: #fafafa; = PADDING-BOTTOM: 5px; PADDING-TOP: 5px } #PromoColumn #email-alerts P { PADDING-RIGHT: 12px; PADDING-LEFT: 12px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } #PromoColumn #bmj-knowledge { PADDING-RIGHT: 0px; PADDING-LEFT: 0px } #PromoColumn #bmj-knowledge H2 { PADDING-LEFT: 12px } #PromoColumn #bmj-group { PADDING-RIGHT: 0px; PADDING-LEFT: 0px } #PromoColumn #bmj-group H2 { PADDING-LEFT: 12px } #PromoColumn #product-student { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; MARGIN-BOTTOM: 0px; = PADDING-BOTTOM: 5px; MARGIN-LEFT: 3px; PADDING-TOP: 5px; TEXT-ALIGN: = left } H2#student-title { PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; BACKGROUND-IMAGE: = url(/columns/icons/student-logo-sml.jpg); PADDING-BOTTOM: 0pt; MARGIN: = 0px; OVERFLOW: hidden; PADDING-TOP: 25px; BACKGROUND-REPEAT: no-repeat; = HEIGHT: 25px } #PromoColumn #product-student P { FONT-SIZE: 1.1em } .student { FONT-SIZE: 1.1em! important } #PromoColumn #product-info { BORDER-TOP: #ccc 1px solid; MARGIN-LEFT: 3px; BORDER-BOTTOM: #ccc 1px = solid } #FooterWrapper { PADDING-TOP: 0.75em } #FooterWrapper P { MARGIN: 0px; COLOR: #555; TEXT-ALIGN: center } #FooterWrapper A { COLOR: #555 } .AdWrapper { TEXT-ALIGN: center } #PromoColumn .AdWrapper { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 5px; = PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 0px solid } #AdLeaderboard { MARGIN: 10px 0px } #AdSkyscraper { =09 } #product-info { =09 } #Col2Box1Ad { MARGIN-LEFT: 15px; MARGIN-RIGHT: 10px } ------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.bmj.com/css/header.footer.style2.css DIV.clear { CLEAR: both; HEIGHT: 1px } A { outline: none } IMG A { BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: = 0px; TEXT-DECORATION: none } FORM { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } .hide { DISPLAY: none } DIV.spacer { CLEAR: both; HEIGHT: 10px } #wrapper { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px = auto; WIDTH: 982px; PADDING-TOP: 0px; FONT-FAMILY: arial; TEXT-ALIGN: = left } H1 { FONT: bold 21px arial,sans-serif } .bold { FONT-WEIGHT: bold } P.error { COLOR: #d6006e } UL.error { PADDING-LEFT: 0px; FONT-WEIGHT: bold; LIST-STYLE-POSITION: inside; = FONT-SIZE: 12px; MARGIN-LEFT: 0px; COLOR: #d6006e } .error UL LI { PADDING-LEFT: 15px; FONT-WEIGHT: normal; LIST-STYLE-POSITION: inside; = COLOR: #d6006e; LINE-HEIGHT: 1.6em; LIST-STYLE-TYPE: disc } FORM.registerform FIELDSET { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #ccc 1px = solid; PADDING-LEFT: 10px; MARGIN-BOTTOM: 15px; PADDING-BOTTOM: 10px; = BORDER-LEFT: #ccc 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #ccc 1px = solid } FORM.registerform LEGEND { FONT: bold 16px arial,sans-serif; COLOR: #333 } FORM.registerform H2 { PADDING-RIGHT: 0px; MARGIN-TOP: 20px; PADDING-LEFT: 0px; FONT-SIZE: = 18px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px } FORM.registerform P { PADDING-RIGHT: 0px; MARGIN-TOP: 20px; PADDING-LEFT: 0px; FONT-SIZE: = 12px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px } FORM.registerform UL LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: = 2px; PADDING-TOP: 2px; BORDER-BOTTOM: medium none } FORM.registerform OL LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: = 2px; MARGIN: 5px 0px; PADDING-TOP: 2px; BORDER-BOTTOM: #efefef 1px solid } FORM.registerform OL LI OL { MARGIN-LEFT: 50px } FORM.registerform OL LI OL LI { BORDER-BOTTOM: medium none } FORM.registerform OL LI UL LI { BORDER-BOTTOM: medium none } FORM.registerform H1 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } FORM.registerform UL.title LI { PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: = 0px; MARGIN: 0px 10px 0px 0px; PADDING-TOP: 0px } FORM.registerform LABEL { DISPLAY: inline-block; VERTICAL-ALIGN: top; LINE-HEIGHT: 1.8em } FORM.registerform LABEL.email { WIDTH: 120px } FORM.registerform LABEL.country { WIDTH: 120px } FORM.registerform LABEL.title { WIDTH: 120px } FORM.registerform LABEL.first-name { WIDTH: 120px } FORM.registerform LABEL.last-name { WIDTH: 120px } FORM.registerform LABEL.membership { WIDTH: 250px } FORM.registerform UL.specialty { FLOAT: left; WIDTH: 33% } FORM.registerform SPAN.warn { FONT-WEIGHT: bold; MARGIN-LEFT: 55px } #global-search { MARGIN-TOP: 3px; DISPLAY: inline; FLOAT: left; MARGIN-LEFT: 10px; = WIDTH: 255px } #global-search LABEL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } #global-search FIELDSET { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px = solid; PADDING-LEFT: 3px; BACKGROUND: #f6f6f6; PADDING-BOTTOM: 0px; = MARGIN: 0px; BORDER-LEFT: #ccc 1px solid; WIDTH: 250px; PADDING-TOP: = 0px; BORDER-BOTTOM: #ccc 1px solid } #global-search INPUT { COLOR: #555 } #global-search INPUT.text { BORDER-RIGHT: 0px; PADDING-RIGHT: 3px; BORDER-TOP: 0px; PADDING-LEFT: = 3px; FONT-SIZE: 11px; BACKGROUND: #f6f6f6; FLOAT: left; PADDING-BOTTOM: = 3px; BORDER-LEFT: 0px; WIDTH: 213px; COLOR: #555; PADDING-TOP: 3px; = BORDER-BOTTOM: 0px } #global-search INPUT.button { PADDING-RIGHT: 1px; PADDING-LEFT: 0px; FLOAT: right; PADDING-BOTTOM: = 1px; PADDING-TOP: 1px } .hidden { BORDER-RIGHT: medium none; PADDING-RIGHT: 0px; BORDER-TOP: medium none; = DISPLAY: block; PADDING-LEFT: 0px; BACKGROUND: none transparent scroll = repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN: -1px 0px 0px -1px; OVERFLOW: = hidden; BORDER-LEFT: medium none; WIDTH: 1px; PADDING-TOP: 0px; = BORDER-BOTTOM: medium none; HEIGHT: 1px } #global-nav { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #ececec; = PADDING-BOTTOM: 30px; MARGIN: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: #ccc = 1px solid } #global-nav DIV.ad-leaderboard { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: = url(/icons/site/bg-horizontal-dotted.gif) repeat-x left bottom; = PADDING-BOTTOM: 3px; PADDING-TOP: 3px; TEXT-ALIGN: center } #global-nav #resource-nav { PADDING-RIGHT: 0px; MARGIN-TOP: 0px; PADDING-LEFT: 0px; BACKGROUND: = url(/icons/site/global-nav-matrix.gif) no-repeat; FLOAT: right; = PADDING-BOTTOM: 0px; WIDTH: 510px; PADDING-TOP: 0px; POSITION: relative; = HEIGHT: 26px } #global-nav #resource-nav LI { FLOAT: left; LIST-STYLE-TYPE: none; HEIGHT: 26px } #global-nav #resource-nav DIV { DISPLAY: block; HEIGHT: 26px } #resource-nav A { DISPLAY: block; HEIGHT: 26px } #global-nav #resource-nav SPAN { LEFT: -9999px; POSITION: absolute; TOP: -9999px } #global-nav #resource-nav A:hover { BACKGROUND-IMAGE: url(/icons/site/global-nav-matrix.gif); = BACKGROUND-REPEAT: no-repeat } #global-nav #resource-nav #bmj A { BACKGROUND-POSITION: 0px 0px; WIDTH: 49px } #global-nav #resource-nav #bmj A:hover { BACKGROUND-POSITION: 0px -26px } #global-nav #resource-nav LI.active#bmj { BACKGROUND-POSITION: 0px -26px; BACKGROUND-IMAGE: = url(/icons/site/global-nav-matrix.gif); BACKGROUND-REPEAT: no-repeat } #global-nav #resource-nav #bmj-journals A { BACKGROUND-POSITION: -49px 0px; WIDTH: 88px } #global-nav #resource-nav #bmj-journals A:hover { BACKGROUND-POSITION: -49px -26px } #global-nav #resource-nav LI.active#bmj-journals { BACKGROUND-POSITION: -49px -26px; BACKGROUND-IMAGE: = url(/icons/site/global-nav-matrix.gif); BACKGROUND-REPEAT: no-repeat } #global-nav #resource-nav #bmj-careers A { BACKGROUND-POSITION: -137px 0px; WIDTH: 84px } #global-nav #resource-nav #bmj-careers A:hover { BACKGROUND-POSITION: -137px -26px } #global-nav #resource-nav LI.active#bmj-careers { BACKGROUND-POSITION: -137px -26px; BACKGROUND-IMAGE: = url(/icons/site/global-nav-matrix.gif); BACKGROUND-REPEAT: no-repeat } #global-nav #resource-nav #bmj-learning A { BACKGROUND-POSITION: -221px 0px; WIDTH: 92px } #global-nav #resource-nav #bmj-learning A:hover { BACKGROUND-POSITION: -221px -26px } #global-nav #resource-nav LI.active#bmj-learning { BACKGROUND-POSITION: -221px -26px; BACKGROUND-IMAGE: = url(/icons/site/global-nav-matrix.gif); BACKGROUND-REPEAT: no-repeat } #global-nav #resource-nav #bmj-knowledge A { BACKGROUND-POSITION: -313px 0px; WIDTH: 104px } #global-nav #resource-nav #bmj-knowledge A:hover { BACKGROUND-POSITION: -313px -26px } #global-nav #resource-nav LI.active#bmj-knowledge { BACKGROUND-POSITION: -313px -26px; BACKGROUND-IMAGE: = url(/icons/site/global-nav-matrix.gif); BACKGROUND-REPEAT: no-repeat } #global-nav #resource-nav #bmj-group A { BACKGROUND-POSITION: -417px 0px; WIDTH: 93px } #global-nav #resource-nav #bmj-group A:hover { BACKGROUND-POSITION: -417px -26px } #global-nav #resource-nav LI.active#bmj-group { BACKGROUND-POSITION: -417px -26px; BACKGROUND-IMAGE: = url(/icons/site/global-nav-matrix.gif); BACKGROUND-REPEAT: no-repeat } #global-nav A { outline-color: invert; outline-style: none; outline-width: medium } #clearleft { CLEAR: left } #main-search { MARGIN-TOP: 10px; DISPLAY: inline; FLOAT: right; WIDTH: 255px; = MARGIN-RIGHT: 5px } #main-search LABEL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } #main-search FIELDSET { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px = solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: = #ccc 1px solid; WIDTH: 250px; PADDING-TOP: 0px; BORDER-BOTTOM: #ccc 1px = solid } #main-search INPUT { COLOR: #555 } #main-search INPUT.text { BORDER-RIGHT: 0px; PADDING-RIGHT: 3px; BORDER-TOP: 0px; PADDING-LEFT: = 3px; FLOAT: left; PADDING-BOTTOM: 3px; FONT: 13px arial,sans-serif; = BORDER-LEFT: 0px; WIDTH: 213px; COLOR: #555; PADDING-TOP: 3px; = BORDER-BOTTOM: 0px } #main-search INPUT.button { PADDING-RIGHT: 3px; PADDING-LEFT: 0px; FLOAT: right; PADDING-BOTTOM: = 3px; PADDING-TOP: 3px } #Authorization { CLEAR: left; FONT-WEIGHT: bold; MIN-HEIGHT: 1em; PADDING-BOTTOM: 7px; = MARGIN: 0px 10px 0px 0px; COLOR: #404040; TEXT-ALIGN: right } HR { DISPLAY: none } #logo { DISPLAY: inline; FLOAT: left; OVERFLOW: visible; WIDTH: 340px } P.status { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: right; PADDING-BOTTOM: = 0px; MARGIN: 5px 0px 0px; FONT: 11px/1.4em arial, sans-serif; WIDTH: = 440px; PADDING-TOP: 0px; TEXT-ALIGN: right } P.status A:link { COLOR: #006990; BORDER-BOTTOM: #999 1px dotted; TEXT-DECORATION: none } P.status A:visited { COLOR: #006990; BORDER-BOTTOM: #999 1px dotted; TEXT-DECORATION: none } P.status A:active { COLOR: #006990; BORDER-BOTTOM: #999 1px dotted; TEXT-DECORATION: none } P.status A:hover { COLOR: #ff00ff; BORDER-BOTTOM: #666 1px dotted; TEXT-DECORATION: none } #header { BORDER-RIGHT: #b8b6b6 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: = #b8b6b6 0px solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; = BORDER-LEFT: #b8b6b6 1px solid; WIDTH: 982px; PADDING-TOP: 8px; = BORDER-BOTTOM: #b8b6b6 0px solid; TEXT-ALIGN: left } #header IMG { BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: = 0px; TEXT-DECORATION: none } #footer { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; MARGIN: 0px = auto; WIDTH: 808px; PADDING-TOP: 20px; TEXT-ALIGN: center } #footer P { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; FONT: 11px/1.6em arial, sans serif; PADDING-TOP: 0px } #footer DIV.legal { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px; TEXT-ALIGN: right } #footer DIV.legal UL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } #footer DIV.legal LI { PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: = 0px; MARGIN: 0px; FONT: 11px/1.6em Arial, Sans Serif; PADDING-TOP: 0px; = LIST-STYLE-TYPE: none } #footer DIV.copyright { CLEAR: both; MARGIN-BOTTOM: 30px; TEXT-ALIGN: right } #footer A:link { COLOR: #006990; BORDER-BOTTOM: #ccc 1px dotted; TEXT-DECORATION: none } #footer A:visited { COLOR: #006990; BORDER-BOTTOM: #ccc 1px dotted; TEXT-DECORATION: none } #footer A:active { COLOR: #006990; BORDER-BOTTOM: #ccc 1px dotted; TEXT-DECORATION: none } #footer A:hover { COLOR: #ff00ff; BORDER-BOTTOM: #999 1px dotted; TEXT-DECORATION: none } ------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.bmj.com/css/services.css BODY { FONT-SIZE: 62.5%; FONT-FAMILY: arial, verdana, sans-serif } #Services .Item { PADDING-RIGHT: 12px; BORDER-TOP: #ccc 4px solid; PADDING-LEFT: 12px; = PADDING-BOTTOM: 12px; MARGIN: 0px 0px 12px 1px; PADDING-TOP: 12px } #services-box-head1 { BORDER-RIGHT: #b3d5e4 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: = #b3d5e4 1px solid; DISPLAY: block; PADDING-LEFT: 5px; FONT-WEIGHT: bold; = FONT-SIZE: 1.2em; BACKGROUND: #b3d5e4; PADDING-BOTTOM: 5px; BORDER-LEFT: = #b3d5e4 1px solid; COLOR: #000; PADDING-TOP: 5px; BORDER-BOTTOM: #b3d5e4 = 1px solid; TEXT-ALIGN: left } #services-box-head2 { BORDER-RIGHT: #b3d5e4 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: = #b3d5e4 1px solid; DISPLAY: block; PADDING-LEFT: 5px; FONT-WEIGHT: bold; = FONT-SIZE: 1.2em; BACKGROUND: #b3d5e4; PADDING-BOTTOM: 5px; BORDER-LEFT: = #b3d5e4 1px solid; COLOR: #000; PADDING-TOP: 5px; BORDER-BOTTOM: #b3d5e4 = 1px solid; TEXT-ALIGN: left } #services-box { BORDER-RIGHT: #b3d5e4 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: = #b3d5e4 1px solid; MARGIN-TOP: 0px; PADDING-LEFT: 5px; FONT-SIZE: 1.2em; = BACKGROUND: #e0f1fa; PADDING-BOTTOM: 5px; BORDER-LEFT: #b3d5e4 1px = solid; PADDING-TOP: 5px; BORDER-BOTTOM: #b3d5e4 1px solid; TEXT-ALIGN: = left } #services-box-last { BORDER-RIGHT: #b3d5e4 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: = #b3d5e4 1px solid; MARGIN-TOP: 0px; PADDING-LEFT: 5px; FONT-SIZE: 1.2em; = BACKGROUND: #e0f1fa; MARGIN-BOTTOM: 5px; PADDING-BOTTOM: 5px; = BORDER-LEFT: #b3d5e4 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #b3d5e4 = 1px solid; TEXT-ALIGN: left } #services-box A:link { COLOR: #000; TEXT-DECORATION: none } #services-box A:visited { COLOR: #000; TEXT-DECORATION: none } #services-box A:hover { TEXT-DECORATION: underline } #services-box A { COLOR: #000 } #services-box UL { MARGIN-LEFT: 0px } .StandardBullet { PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; PADDING-BOTTOM: 0pt; MARGIN: 0pt = 0pt 0.5em; PADDING-TOP: 0pt } DIV.button_services A { BORDER-RIGHT: #006990 1px solid; PADDING-RIGHT: 17px; BORDER-TOP: = #006990 1px solid; DISPLAY: block; PADDING-LEFT: 4px; FONT-SIZE: 11px; = PADDING-BOTTOM: 1px; BORDER-LEFT: #006990 1px solid; WIDTH: 100px; = CURSOR: pointer; COLOR: #006990; MARGIN-RIGHT: 5px; PADDING-TOP: 0px; = BORDER-BOTTOM: #006990 1px solid; TEXT-DECORATION: none } DIV.button_services A.email { BACKGROUND: url(/icons/site/icon-email.gif) white repeat-y right center } DIV.button_services A.print { BACKGROUND: url(/icons/site/icon-print.gif) white repeat-y right center } ------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.bmj.com/css/section.article.css .ArticlePage { =09 } #Article { FONT-SIZE: 12px; FLOAT: right; WIDTH: 428px; MARGIN-RIGHT: 15px } #Article H1 { FONT-SIZE: 200%; COLOR: #3a6d8e } #Article H1 SMALL { DISPLAY: block; FONT-SIZE: 62.5%; MARGIN-BOTTOM: 0.5em; COLOR: #37aeee } #Article H2 { MARGIN: 1.5em 0px 0.5em; COLOR: #37aeee } #Article IMG.Photo { MARGIN-BOTTOM: 1.5em } #Article .Credits { FONT-SIZE: 92% } * HTML #Article { DISPLAY: inline } #ArticleNav { FLOAT: left; MARGIN-LEFT: 14px; WIDTH: 141px } #ArticleNav H5 { MARGIN-BOTTOM: 0.25em } #ArticleNav UL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px = 0px 1em; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } #ArticleNav LI { PADDING-RIGHT: 1px; BORDER-TOP: #ccc 1px dotted; PADDING-LEFT: 1px; = PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: = none } * HTML #ArticleNav { DISPLAY: inline } ------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.bmj.com/css/print.css * { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000! = important } BODY { FONT-SIZE: 62.5% } P { FONT-SIZE: 1.2em } #AdLeaderboard { DISPLAY: none } #ResourceNav { DISPLAY: none } #SearchWrapper { DISPLAY: none } #Authorization { DISPLAY: none } #MainNavWrap { DISPLAY: none } #PageTools { DISPLAY: none } #SideColumn { DISPLAY: none } #PromoColumn { DISPLAY: none } HTML #ArticleNav { DISPLAY: none } HTML #ContentNav { DISPLAY: none } #PageWrapper { WIDTH: auto } #MainColumn { WIDTH: auto } .HomePage #MainColumn .Item { WIDTH: auto } #Article { WIDTH: auto } #Content { WIDTH: auto } #HeaderWrapper { FLOAT: none } #bmj-logo { FLOAT: none } .HomePage #MainColumn .Item { FLOAT: none } #BodyWrapper { FLOAT: none } #MainColumn { FLOAT: none } #Article { FLOAT: none } #Content { FLOAT: none } #FooterWrapper { CLEAR: both } #MainColumn { CLEAR: both } #BodyWrapper { CLEAR: both } #MainColumn .Item { CLEAR: both } #HeaderWrapper { BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: = 0px } #BodyWrapper { BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: = 0px } #bmj-logo { MARGIN-TOP: 0px } #CategoryHeader { WIDTH: 100% } #FooterWrapper { CLEAR: both; BORDER-TOP: #ccc 1px solid; MARGIN-TOP: 2em; WIDTH: 100% } .HomePage #MainColumn .Exception UL { PADDING-LEFT: 15px } .HomePage #MainColumn .Exception UL LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px; LIST-STYLE-TYPE: square } DIV { WIDTH: auto! important } P { WIDTH: auto! important } UL { WIDTH: auto! important } DL { WIDTH: auto! important } OL { WIDTH: auto! important } .nosidebar#MainColumn { WIDTH: auto } ------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.bmj.com/css/highwire.css .cover_image { BORDER-RIGHT: #b8b6b6 1px solid; BORDER-TOP: #b8b6b6 1px solid; = BORDER-LEFT: #b8b6b6 1px solid; BORDER-BOTTOM: #b8b6b6 1px solid } .Spacer { CLEAR: both; HEIGHT: 10px } .nocontentbox#Article { FLOAT: left; MARGIN-LEFT: 15px } .nosidebar { BACKGROUND: none transparent scroll repeat 0% 0% } .nosidebar#MainColumn { WIDTH: 950px } #HighwireCollections H1 { MARGIN: 10px 0px; COLOR: #3a6d8e; LINE-HEIGHT: 120% } #HighwireCollections H2 { MARGIN: 10px 0px 3px; COLOR: #37aeee } #HighwireCollections DIV.shaded { PADDING-RIGHT: 6px; PADDING-LEFT: 6px; FONT-WEIGHT: bold; FONT-SIZE: = 125%; BACKGROUND: #e1e1e1; PADDING-BOTTOM: 6px; MARGIN: 5px 0px; WIDTH: = 90%; LINE-HEIGHT: 125%; PADDING-TOP: 6px } #HighwireCollections P.collections_nav { MARGIN-BOTTOM: 3px; TEXT-ALIGN: center } #HighwireCollections P.error { MARGIN-BOTTOM: 15px } #HighwireGCA H1 { MARGIN: 10px 0px; COLOR: #3a6d8e; LINE-HEIGHT: 120% } .gcaAbstractCount { BORDER-TOP: #e1e1e1 1px solid; FONT-WEIGHT: bold; LINE-HEIGHT: 120% } .gcaAbstractCount IMG { PADDING-LEFT: 5px; VERTICAL-ALIGN: middle } .gcaAbstractCount A { COLOR: #000 } .gca_nav IMG { PADDING-RIGHT: 5px; VERTICAL-ALIGN: middle } #LegacyContent { LINE-HEIGHT: 1.4em } #HighwireGCA { LINE-HEIGHT: 1.4em } #LegacyContent P { FONT-SIZE: 12px; MARGIN-BOTTOM: 10px } #HighwireGCA P { FONT-SIZE: 12px; MARGIN-BOTTOM: 10px } #LegacyContent TD { FONT-SIZE: 75%; LINE-HEIGHT: 150% } #LegacyContent H2 { MARGIN: 10px 0px; COLOR: #37aeee } #HighwireGCA H2 { MARGIN: 10px 0px; COLOR: #37aeee } #LegacyContent H3 { MARGIN: 10px 0px; COLOR: #3a6d8e; LINE-HEIGHT: 120% } #HighwireGCA H3 { MARGIN: 10px 0px; COLOR: #3a6d8e; LINE-HEIGHT: 120% } #LegacyContent H2.sertitle { FONT-WEIGHT: normal; COLOR: #000; FONT-STYLE: italic } #HighwireGCA H2.sertitle { FONT-WEIGHT: normal; COLOR: #000; FONT-STYLE: italic } #LegacyContent H2.suppl_sertitle { FONT-WEIGHT: normal; PADDING-BOTTOM: 25px; MARGIN: 0px 0px 25px; COLOR: = #000; BORDER-BOTTOM: #b8b6b6 1px solid; FONT-STYLE: italic } #HighwireGCA H2.suppl_sertitle { FONT-WEIGHT: normal; PADDING-BOTTOM: 25px; MARGIN: 0px 0px 25px; COLOR: = #000; BORDER-BOTTOM: #b8b6b6 1px solid; FONT-STYLE: italic } #HighwireGCA H3 { FONT-SIZE: 150% } #LegacyContent H4 { MARGIN: 10px 0px; COLOR: #37aeee } #LegacyContent #article_remark { FONT-STYLE: italic } #LegacyContent .Credits { FONT-SIZE: 100% } .ArticleNavSidebarHack#ArticleNav { WIDTH: 200px; TEXT-ALIGN: left } .content-nw#www-bmj-com { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; = PADDING-TOP: 10px } .extra { COLOR: #f0f; FONT-STYLE: italic } .alignleft { CLEAR: left; PADDING-RIGHT: 4px; FLOAT: left } .alignright { CLEAR: right; PADDING-LEFT: 4px; align: right } DIV.inlinefigure { DISPLAY: inline; MAX-WIDTH: 210px } TABLE.inlinefigure TD { PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; = PADDING-TOP: 4px; BACKGROUND-COLOR: #eee; TEXT-ALIGN: center } TABLE.inlinefigure TD.caption { TEXT-ALIGN: left } ------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.bmj.com/css/ie_hacks.css .TocHack#MainColumn { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; WIDTH: 575px; PADDING-TOP: 0px } DIV.inlinefigure { WIDTH: 215px } TABLE.inlinefigure TD { =09 } ------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.bmj.com/misc/css/add_on.css .rss-box-papers .StandardBullet LI { PADDING-LEFT: 45px; BACKGROUND: = url(http://www.bmjpublishinggroup.com/newbmj/bmj_html_update_r5/img/chat_= camera_large2.jpg) no-repeat 0px 5px; MARGIN: 0px; LIST-STYLE-TYPE: none } .rss-box-blogs .StandardBullet LI { PADDING-LEFT: 30px; BACKGROUND: = url(http://www.bmjpublishinggroup.com/newbmj/bmj_html_update_r5/img/rapid= _response_button_large2.jpg) no-repeat 0px 5px; MARGIN: 0px; = LIST-STYLE-TYPE: none } .rss-box-twib .StandardBullet LI { PADDING-LEFT: 30px; BACKGROUND: = url(http://www.bmjpublishinggroup.com/newbmj/bmj_html_update_r5/img/chat_= camera_large2.jpg) no-repeat 0px 5px; MARGIN: 0px; LIST-STYLE-TYPE: none } .rss-box-of .StandardBullet LI { PADDING-LEFT: 30px; BACKGROUND: = url(http://www.bmjpublishinggroup.com/newbmj/bmj_html_update_r5/img/dice.= jpg) no-repeat 0px 5px; MARGIN: 0px; LIST-STYLE-TYPE: none } .rss-box-mstone .StandardBullet LI { PADDING-LEFT: 30px; BACKGROUND: = url(http://www.bmjpublishinggroup.com/newbmj/bmj_html_update_r5/img/miles= tones2.jpg) no-repeat 0px 5px; MARGIN: 0px; LIST-STYLE-TYPE: none } #print-cover H2 { PADDING-LEFT: 19px; TEXT-ALIGN: left } #print-cover H2 A { COLOR: black } #LegacyContent { OVERFLOW: visible; WORD-WRAP: break-word } #LegacyContent UL LI { PADDING-RIGHT: 0pt; PADDING-LEFT: 12px; FONT-SIZE: 12px! important; = BACKGROUND: url(http://www.bmj.com/icons/site/bullet-services.jpg) = no-repeat 0pt 0.65em; PADDING-BOTTOM: 0pt; MARGIN: 0pt; OVERFLOW: auto; = PADDING-TOP: 0pt; LIST-STYLE-TYPE: none } #LegacyContent OL LI { PADDING-RIGHT: 0px; PADDING-LEFT: 12px; LIST-STYLE-POSITION: inside; = FONT-SIZE: 12px! important; PADDING-BOTTOM: 5px; MARGIN-LEFT: -40px; = OVERFLOW: auto; LINE-HEIGHT: normal; PADDING-TOP: 0px } .nocontentbox #LegacyContent { BORDER-RIGHT: #e1e1e1 1px solid; TABLE-LAYOUT: fixed; BORDER-TOP: = #e1e1e1 1px solid; BORDER-LEFT: #e1e1e1 1px solid; WIDTH: 585px; = BORDER-BOTTOM: #e1e1e1 1px solid } .nocontentbox #LegacyContent TABLE { TABLE-LAYOUT: fixed; WIDTH: 585px } #NonArticle H1 { =09 } #NonArticle H2 { COLOR: #006990 } #NonArticle H3 { COLOR: #006990 } #NonArticle H4 { =09 } #NonArticle H5 { =09 } #NonArticle H6 { =09 } #NonArticle { =09 } .HomePage #MainColumn .NoPhotoItem H2 { COLOR: #37aeee } .HomePage #MainColumn .NoPhotoItem H3 { MARGIN-BOTTOM: 0.1em; COLOR: #3a6d8e } .HomePage #MainColumn .NoPhotoItem P.Links { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; MARGIN-BOTTOM: 0px; = PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .HomePage #MainColumn .NoPhotoItem P.LinkMore { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: right; MARGIN-BOTTOM: = 0px; PADDING-BOTTOM: 0px; MARGIN-LEFT: 1em; PADDING-TOP: 0px; = WHITE-SPACE: nowrap } #wysiwyg { PADDING-RIGHT: 20px; BORDER-TOP: medium none; PADDING-LEFT: 20px; = PADDING-TOP: 0px } UNKNOWN { PADDING-LEFT: 19px; TEXT-ALIGN: left } #print-cover H2 A { COLOR: black } #print-cover P { PADDING-LEFT: 21px; FONT-WEIGHT: normal; FONT-SIZE: 1.1em; TEXT-ALIGN: = left } #update .feed1 { FONT-SIZE: 12px; PADDING-BOTTOM: 5px } #update H2 { PADDING-BOTTOM: 8px } #update .date { COLOR: #666666 } #update .sect1 { TEXT-TRANSFORM: capitalize } #update { PADDING-BOTTOM: 20px! important } ------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.bmj.com/js/prototype.js /* Prototype JavaScript framework, version 1.5.0_rc2=0A= * (c) 2005, 2006 Sam Stephenson =0A= *=0A= * Prototype is freely distributable under the terms of an MIT-style = license.=0A= * For details, see the Prototype web site: http://prototype.conio.net/=0A= *=0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var Prototype =3D {=0A= Version: '1.5.0_rc2',=0A= BrowserFeatures: {=0A= XPath: !!document.evaluate=0A= },=0A= =0A= ScriptFragment: '(?:)((\n|\r|.)*?)(?:<\/script>)',=0A= emptyFunction: function() {},=0A= K: function(x) { return x }=0A= }=0A= =0A= var Class =3D {=0A= create: function() {=0A= return function() {=0A= this.initialize.apply(this, arguments);=0A= }=0A= }=0A= }=0A= =0A= var Abstract =3D new Object();=0A= =0A= Object.extend =3D function(destination, source) {=0A= for (var property in source) {=0A= destination[property] =3D source[property];=0A= }=0A= return destination;=0A= }=0A= =0A= Object.extend(Object, {=0A= inspect: function(object) {=0A= try {=0A= if (object =3D=3D=3D undefined) return 'undefined';=0A= if (object =3D=3D=3D null) return 'null';=0A= return object.inspect ? object.inspect() : object.toString();=0A= } catch (e) {=0A= if (e instanceof RangeError) return '...';=0A= throw e;=0A= }=0A= },=0A= =0A= keys: function(object) {=0A= var keys =3D [];=0A= for (var property in object)=0A= keys.push(property);=0A= return keys;=0A= },=0A= =0A= values: function(object) {=0A= var values =3D [];=0A= for (var property in object)=0A= values.push(object[property]);=0A= return values;=0A= },=0A= =0A= clone: function(object) {=0A= return Object.extend({}, object);=0A= }=0A= });=0A= =0A= Function.prototype.bind =3D function() {=0A= var __method =3D this, args =3D $A(arguments), object =3D args.shift();=0A= return function() {=0A= return __method.apply(object, args.concat($A(arguments)));=0A= }=0A= }=0A= =0A= Function.prototype.bindAsEventListener =3D function(object) {=0A= var __method =3D this, args =3D $A(arguments), object =3D args.shift();=0A= return function(event) {=0A= return __method.apply(object, [( event || = window.event)].concat(args).concat($A(arguments)));=0A= }=0A= }=0A= =0A= Object.extend(Number.prototype, {=0A= toColorPart: function() {=0A= var digits =3D this.toString(16);=0A= if (this < 16) return '0' + digits;=0A= return digits;=0A= },=0A= =0A= succ: function() {=0A= return this + 1;=0A= },=0A= =0A= times: function(iterator) {=0A= $R(0, this, true).each(iterator);=0A= return this;=0A= }=0A= });=0A= =0A= var Try =3D {=0A= these: function() {=0A= var returnValue;=0A= =0A= for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A= var lambda =3D arguments[i];=0A= try {=0A= returnValue =3D lambda();=0A= break;=0A= } catch (e) {}=0A= }=0A= =0A= return returnValue;=0A= }=0A= }=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var PeriodicalExecuter =3D Class.create();=0A= PeriodicalExecuter.prototype =3D {=0A= initialize: function(callback, frequency) {=0A= this.callback =3D callback;=0A= this.frequency =3D frequency;=0A= this.currentlyExecuting =3D false;=0A= =0A= this.registerCallback();=0A= },=0A= =0A= registerCallback: function() {=0A= this.timer =3D setInterval(this.onTimerEvent.bind(this), = this.frequency * 1000);=0A= },=0A= =0A= stop: function() {=0A= if (!this.timer) return;=0A= clearInterval(this.timer);=0A= this.timer =3D null;=0A= },=0A= =0A= onTimerEvent: function() {=0A= if (!this.currentlyExecuting) {=0A= try {=0A= this.currentlyExecuting =3D true;=0A= this.callback(this);=0A= } finally {=0A= this.currentlyExecuting =3D false;=0A= }=0A= }=0A= }=0A= }=0A= 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 (replacement(match) || '').toString();=0A= source =3D source.slice(match.index + match[0].length);=0A= } else {=0A= result +=3D source, source =3D '';=0A= }=0A= }=0A= return result;=0A= },=0A= =0A= sub: function(pattern, replacement, count) {=0A= replacement =3D this.gsub.prepareReplacement(replacement);=0A= count =3D count =3D=3D=3D undefined ? 1 : count;=0A= =0A= return this.gsub(pattern, function(match) {=0A= if (--count < 0) return match[0];=0A= return replacement(match);=0A= });=0A= },=0A= =0A= scan: function(pattern, iterator) {=0A= this.gsub(pattern, iterator);=0A= return this;=0A= },=0A= =0A= truncate: function(length, truncation) {=0A= length =3D length || 30;=0A= truncation =3D truncation =3D=3D=3D undefined ? '...' : truncation;=0A= return this.length > length ?=0A= this.slice(0, length - truncation.length) + truncation : this;=0A= },=0A= =0A= strip: function() {=0A= return this.replace(/^\s+/, '').replace(/\s+$/, '');=0A= },=0A= =0A= stripTags: function() {=0A= return this.replace(/<\/?[^>]+>/gi, '');=0A= },=0A= =0A= stripScripts: function() {=0A= return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A= },=0A= =0A= extractScripts: function() {=0A= var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img');=0A= var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im');=0A= return (this.match(matchAll) || []).map(function(scriptTag) {=0A= return (scriptTag.match(matchOne) || ['', ''])[1];=0A= });=0A= },=0A= =0A= evalScripts: function() {=0A= return this.extractScripts().map(function(script) { return = eval(script) });=0A= },=0A= =0A= escapeHTML: function() {=0A= var div =3D document.createElement('div');=0A= var text =3D document.createTextNode(this);=0A= div.appendChild(text);=0A= return div.innerHTML;=0A= },=0A= =0A= unescapeHTML: function() {=0A= var div =3D document.createElement('div');=0A= div.innerHTML =3D this.stripTags();=0A= return div.childNodes[0] ? (div.childNodes.length > 1 ?=0A= $A(div.childNodes).inject('',function(memo,node){ return = memo+node.nodeValue }) :=0A= div.childNodes[0].nodeValue) : '';=0A= },=0A= =0A= toQueryParams: function(separator) {=0A= var match =3D this.strip().match(/([^?#]*)(#.*)?$/);=0A= if (!match) return {};=0A= =0A= return match[1].split(separator || '&').inject({}, function(hash, = pair) {=0A= if ((pair =3D pair.split('=3D'))[0]) {=0A= var name =3D decodeURIComponent(pair[0]);=0A= var value =3D pair[1] ? decodeURIComponent(pair[1]) : undefined;=0A= =0A= if (hash[name] !=3D=3D undefined) {=0A= if (hash[name].constructor !=3D Array)=0A= hash[name] =3D [hash[name]];=0A= if (value) hash[name].push(value);=0A= }=0A= else hash[name] =3D value;=0A= }=0A= return hash;=0A= });=0A= },=0A= =0A= toArray: function() {=0A= return this.split('');=0A= },=0A= =0A= camelize: function() {=0A= var oStringList =3D this.split('-');=0A= if (oStringList.length =3D=3D 1) return oStringList[0];=0A= =0A= var camelizedString =3D this.indexOf('-') =3D=3D 0=0A= ? oStringList[0].charAt(0).toUpperCase() + = oStringList[0].substring(1)=0A= : oStringList[0];=0A= =0A= for (var i =3D 1, length =3D oStringList.length; i < length; i++) {=0A= var s =3D oStringList[i];=0A= camelizedString +=3D s.charAt(0).toUpperCase() + s.substring(1);=0A= }=0A= =0A= return camelizedString;=0A= },=0A= =0A= underscore: function() {=0A= return this.gsub(/::/, = '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{= 1}_#{2}').gsub(/-/,'-').toLowerCase();=0A= },=0A= =0A= dasherize: function() {=0A= return this.gsub(/_/,'-');=0A= },=0A= =0A= inspect: function(useDoubleQuotes) {=0A= var escapedString =3D this.replace(/\\/g, '\\\\');=0A= if (useDoubleQuotes)=0A= return '"' + escapedString.replace(/"/g, '\\"') + '"';=0A= else=0A= return "'" + escapedString.replace(/'/g, '\\\'') + "'";=0A= }=0A= });=0A= =0A= String.prototype.gsub.prepareReplacement =3D function(replacement) {=0A= if (typeof replacement =3D=3D 'function') return replacement;=0A= var template =3D new Template(replacement);=0A= return function(match) { return template.evaluate(match) };=0A= }=0A= =0A= String.prototype.parseQuery =3D String.prototype.toQueryParams;=0A= =0A= var Template =3D Class.create();=0A= Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;=0A= Template.prototype =3D {=0A= initialize: function(template, pattern) {=0A= this.template =3D template.toString();=0A= this.pattern =3D pattern || Template.Pattern;=0A= },=0A= =0A= evaluate: function(object) {=0A= return this.template.gsub(this.pattern, function(match) {=0A= var before =3D match[1];=0A= if (before =3D=3D '\\') return match[2];=0A= return before + (object[match[3]] || '').toString();=0A= });=0A= }=0A= }=0A= =0A= var $break =3D new Object();=0A= var $continue =3D new Object();=0A= =0A= var Enumerable =3D {=0A= each: function(iterator) {=0A= var index =3D 0;=0A= try {=0A= this._each(function(value) {=0A= try {=0A= iterator(value, index++);=0A= } catch (e) {=0A= if (e !=3D $continue) throw e;=0A= }=0A= });=0A= } catch (e) {=0A= if (e !=3D $break) throw e;=0A= }=0A= return this;=0A= },=0A= =0A= eachSlice: function(number, iterator) {=0A= var index =3D -number, slices =3D [], array =3D this.toArray();=0A= while ((index +=3D number) < array.length)=0A= slices.push(array.slice(index, index+number));=0A= return slices.collect(iterator || Prototype.K);=0A= },=0A= =0A= all: function(iterator) {=0A= var result =3D true;=0A= this.each(function(value, index) {=0A= result =3D result && !!(iterator || Prototype.K)(value, index);=0A= if (!result) throw $break;=0A= });=0A= return result;=0A= },=0A= =0A= any: function(iterator) {=0A= var result =3D false;=0A= this.each(function(value, index) {=0A= if (result =3D !!(iterator || Prototype.K)(value, index))=0A= throw $break;=0A= });=0A= return result;=0A= },=0A= =0A= collect: function(iterator) {=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= results.push(iterator(value, index));=0A= });=0A= return results;=0A= },=0A= =0A= detect: function(iterator) {=0A= var result;=0A= this.each(function(value, index) {=0A= if (iterator(value, index)) {=0A= result =3D value;=0A= throw $break;=0A= }=0A= });=0A= return result;=0A= },=0A= =0A= findAll: function(iterator) {=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= if (iterator(value, index))=0A= results.push(value);=0A= });=0A= return results;=0A= },=0A= =0A= grep: function(pattern, iterator) {=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= var stringValue =3D value.toString();=0A= if (stringValue.match(pattern))=0A= results.push((iterator || Prototype.K)(value, index));=0A= })=0A= return results;=0A= },=0A= =0A= include: function(object) {=0A= var found =3D false;=0A= this.each(function(value) {=0A= if (value =3D=3D object) {=0A= found =3D true;=0A= throw $break;=0A= }=0A= });=0A= return found;=0A= },=0A= =0A= inGroupsOf: function(number, fillWith) {=0A= fillWith =3D fillWith || null;=0A= var results =3D this.eachSlice(number);=0A= if (results.length > 0) (number - = results.last().length).times(function() {=0A= results.last().push(fillWith)=0A= });=0A= return results;=0A= },=0A= =0A= inject: function(memo, iterator) {=0A= this.each(function(value, index) {=0A= memo =3D iterator(memo, value, index);=0A= });=0A= return memo;=0A= },=0A= =0A= invoke: function(method) {=0A= var args =3D $A(arguments).slice(1);=0A= return this.collect(function(value) {=0A= return value[method].apply(value, args);=0A= });=0A= },=0A= =0A= max: function(iterator) {=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D (iterator || Prototype.K)(value, index);=0A= if (result =3D=3D undefined || value >=3D result)=0A= result =3D value;=0A= });=0A= return result;=0A= },=0A= =0A= min: function(iterator) {=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D (iterator || Prototype.K)(value, index);=0A= if (result =3D=3D undefined || value < result)=0A= result =3D value;=0A= });=0A= return result;=0A= },=0A= =0A= partition: function(iterator) {=0A= var trues =3D [], falses =3D [];=0A= this.each(function(value, index) {=0A= ((iterator || Prototype.K)(value, index) ?=0A= trues : falses).push(value);=0A= });=0A= return [trues, falses];=0A= },=0A= =0A= pluck: function(property) {=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= results.push(value[property]);=0A= });=0A= return results;=0A= },=0A= =0A= reject: function(iterator) {=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= if (!iterator(value, index))=0A= results.push(value);=0A= });=0A= return results;=0A= },=0A= =0A= sortBy: function(iterator) {=0A= return this.collect(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.collect(Prototype.K);=0A= },=0A= =0A= zip: function() {=0A= var iterator =3D Prototype.K, args =3D $A(arguments);=0A= if (typeof args.last() =3D=3D 'function')=0A= iterator =3D args.pop();=0A= =0A= var collections =3D [this].concat(args).map($A);=0A= return this.map(function(value, index) {=0A= return iterator(collections.pluck(index));=0A= });=0A= },=0A= =0A= inspect: function() {=0A= return '#';=0A= }=0A= }=0A= =0A= Object.extend(Enumerable, {=0A= map: Enumerable.collect,=0A= find: Enumerable.detect,=0A= select: Enumerable.findAll,=0A= member: Enumerable.include,=0A= entries: Enumerable.toArray=0A= });=0A= var $A =3D Array.from =3D function(iterable) {=0A= if (!iterable) return [];=0A= if (iterable.toArray) {=0A= return iterable.toArray();=0A= } else {=0A= var results =3D [];=0A= for (var i =3D 0, length =3D iterable.length; i < length; i++)=0A= results.push(iterable[i]);=0A= return results;=0A= }=0A= }=0A= =0A= Object.extend(Array.prototype, Enumerable);=0A= =0A= if (!Array.prototype._reverse)=0A= Array.prototype._reverse =3D Array.prototype.reverse;=0A= =0A= Object.extend(Array.prototype, {=0A= _each: function(iterator) {=0A= for (var i =3D 0, length =3D this.length; i < length; i++)=0A= iterator(this[i]);=0A= },=0A= =0A= clear: function() {=0A= this.length =3D 0;=0A= return this;=0A= },=0A= =0A= first: function() {=0A= return this[0];=0A= },=0A= =0A= last: function() {=0A= return this[this.length - 1];=0A= },=0A= =0A= compact: function() {=0A= return this.select(function(value) {=0A= return value !=3D undefined || value !=3D null;=0A= });=0A= },=0A= =0A= flatten: function() {=0A= return this.inject([], function(array, value) {=0A= return array.concat(value && value.constructor =3D=3D Array ?=0A= value.flatten() : [value]);=0A= });=0A= },=0A= =0A= without: function() {=0A= var values =3D $A(arguments);=0A= return this.select(function(value) {=0A= return !values.include(value);=0A= });=0A= },=0A= =0A= indexOf: function(object) {=0A= for (var i =3D 0, length =3D this.length; i < length; i++)=0A= if (this[i] =3D=3D object) return i;=0A= return -1;=0A= },=0A= =0A= reverse: function(inline) {=0A= return (inline !=3D=3D false ? this : this.toArray())._reverse();=0A= },=0A= =0A= reduce: function() {=0A= return this.length > 1 ? this : this[0];=0A= },=0A= =0A= uniq: function() {=0A= return this.inject([], function(array, value) {=0A= return array.include(value) ? array : array.concat([value]);=0A= });=0A= },=0A= =0A= clone: function() {=0A= return [].concat(this);=0A= },=0A= =0A= inspect: function() {=0A= return '[' + this.map(Object.inspect).join(', ') + ']';=0A= }=0A= });=0A= =0A= Array.prototype.toArray =3D Array.prototype.clone;=0A= =0A= if(window.opera){=0A= Array.prototype.concat =3D function(){=0A= var array =3D [];=0A= for(var i =3D 0, length =3D this.length; i < length; i++) = array.push(this[i]);=0A= for(var i =3D 0, length =3D arguments.length; i < length; i++) {=0A= if(arguments[i].constructor =3D=3D Array) {=0A= for(var j =3D 0, arrayLength =3D arguments[i].length; j < = arrayLength; j++)=0A= array.push(arguments[i][j]);=0A= } else {=0A= array.push(arguments[i]);=0A= }=0A= }=0A= return array;=0A= }=0A= }=0A= var Hash =3D {=0A= _each: function(iterator) {=0A= for (var key in this) {=0A= var value =3D this[key];=0A= if (typeof value =3D=3D 'function') continue;=0A= =0A= var pair =3D [key, value];=0A= pair.key =3D key;=0A= pair.value =3D value;=0A= iterator(pair);=0A= }=0A= },=0A= =0A= keys: function() {=0A= return this.pluck('key');=0A= },=0A= =0A= values: function() {=0A= return this.pluck('value');=0A= },=0A= =0A= merge: function(hash) {=0A= return $H(hash).inject(this, function(mergedHash, pair) {=0A= mergedHash[pair.key] =3D pair.value;=0A= return mergedHash;=0A= });=0A= },=0A= =0A= toQueryString: function() {=0A= return this.map(function(pair) {=0A= if (!pair.key) return null;=0A= =0A= if (pair.value && pair.value.constructor =3D=3D Array) {=0A= pair.value =3D pair.value.compact();=0A= =0A= if (pair.value.length < 2) {=0A= pair.value =3D pair.value.reduce();=0A= } else {=0A= var key =3D encodeURIComponent(pair.key);=0A= return pair.value.map(function(value) {=0A= return key + '=3D' + encodeURIComponent(value);=0A= }).join('&');=0A= }=0A= }=0A= =0A= if (pair.value =3D=3D undefined) pair[1] =3D '';=0A= return pair.map(encodeURIComponent).join('=3D');=0A= }).join('&');=0A= },=0A= =0A= inspect: function() {=0A= return '#';=0A= }=0A= }=0A= =0A= function $H(object) {=0A= var hash =3D Object.extend({}, object || {});=0A= Object.extend(hash, Enumerable);=0A= Object.extend(hash, Hash);=0A= return hash;=0A= }=0A= ObjectRange =3D Class.create();=0A= Object.extend(ObjectRange.prototype, Enumerable);=0A= Object.extend(ObjectRange.prototype, {=0A= initialize: function(start, end, exclusive) {=0A= this.start =3D start;=0A= this.end =3D end;=0A= this.exclusive =3D exclusive;=0A= },=0A= =0A= _each: function(iterator) {=0A= var value =3D this.start;=0A= while (this.include(value)) {=0A= iterator(value);=0A= value =3D value.succ();=0A= }=0A= },=0A= =0A= include: function(value) {=0A= if (value < this.start)=0A= return false;=0A= if (this.exclusive)=0A= return value < this.end;=0A= return value <=3D this.end;=0A= }=0A= });=0A= =0A= var $R =3D function(start, end, exclusive) {=0A= return new ObjectRange(start, end, exclusive);=0A= }=0A= =0A= var Ajax =3D {=0A= getTransport: function() {=0A= return Try.these(=0A= function() {return new XMLHttpRequest()},=0A= function() {return new ActiveXObject('Msxml2.XMLHTTP')},=0A= function() {return new ActiveXObject('Microsoft.XMLHTTP')}=0A= ) || false;=0A= },=0A= =0A= activeRequestCount: 0=0A= }=0A= =0A= Ajax.Responders =3D {=0A= responders: [],=0A= =0A= _each: function(iterator) {=0A= this.responders._each(iterator);=0A= },=0A= =0A= register: function(responder) {=0A= if (!this.include(responder))=0A= this.responders.push(responder);=0A= },=0A= =0A= unregister: function(responder) {=0A= this.responders =3D this.responders.without(responder);=0A= },=0A= =0A= dispatch: function(callback, request, transport, json) {=0A= this.each(function(responder) {=0A= if (typeof responder[callback] =3D=3D 'function') {=0A= try {=0A= responder[callback].apply(responder, [request, transport, = json]);=0A= } catch (e) {}=0A= }=0A= });=0A= }=0A= };=0A= =0A= Object.extend(Ajax.Responders, Enumerable);=0A= =0A= Ajax.Responders.register({=0A= onCreate: function() {=0A= Ajax.activeRequestCount++;=0A= },=0A= onComplete: function() {=0A= Ajax.activeRequestCount--;=0A= }=0A= });=0A= =0A= Ajax.Base =3D function() {};=0A= Ajax.Base.prototype =3D {=0A= setOptions: function(options) {=0A= this.options =3D {=0A= method: 'post',=0A= asynchronous: true,=0A= contentType: 'application/x-www-form-urlencoded',=0A= encoding: 'UTF-8',=0A= parameters: ''=0A= }=0A= Object.extend(this.options, options || {});=0A= =0A= this.options.method =3D this.options.method.toLowerCase();=0A= this.options.parameters =3D $H(typeof this.options.parameters =3D=3D = 'string' ?=0A= this.options.parameters.toQueryParams() : this.options.parameters);=0A= }=0A= }=0A= =0A= Ajax.Request =3D Class.create();=0A= Ajax.Request.Events =3D=0A= ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A= =0A= Ajax.Request.prototype =3D Object.extend(new Ajax.Base(), {=0A= _complete: false,=0A= =0A= initialize: function(url, options) {=0A= this.transport =3D Ajax.getTransport();=0A= this.setOptions(options);=0A= this.request(url);=0A= },=0A= =0A= request: function(url) {=0A= var params =3D this.options.parameters;=0A= if (params.any()) params['_'] =3D '';=0A= =0A= if (!['get', 'post'].include(this.options.method)) {=0A= // simulate other verbs over post=0A= params['_method'] =3D this.options.method;=0A= this.options.method =3D 'post';=0A= }=0A= =0A= this.url =3D url;=0A= =0A= // when GET, append parameters to URL=0A= if (this.options.method =3D=3D 'get' && params.any())=0A= this.url +=3D (this.url.indexOf('?') >=3D 0 ? '&' : '?') +=0A= params.toQueryString();=0A= =0A= try {=0A= Ajax.Responders.dispatch('onCreate', this, this.transport);=0A= =0A= this.transport.open(this.options.method.toUpperCase(), this.url,=0A= this.options.asynchronous, this.options.username,=0A= this.options.password);=0A= =0A= if (this.options.asynchronous)=0A= setTimeout(function() { this.respondToReadyState(1) = }.bind(this), 10);=0A= =0A= this.transport.onreadystatechange =3D = this.onStateChange.bind(this);=0A= this.setRequestHeaders();=0A= =0A= var body =3D this.options.method =3D=3D 'post' ?=0A= (this.options.postBody || params.toQueryString()) : null;=0A= =0A= this.transport.send(body);=0A= =0A= /* Force Firefox to handle ready state 4 for synchronous requests = */=0A= if (!this.options.asynchronous && this.transport.overrideMimeType)=0A= this.onStateChange();=0A= =0A= }=0A= catch (e) {=0A= this.dispatchException(e);=0A= }=0A= },=0A= =0A= onStateChange: function() {=0A= var readyState =3D this.transport.readyState;=0A= if (readyState > 1 && !((readyState =3D=3D 4) && this._complete))=0A= this.respondToReadyState(this.transport.readyState);=0A= },=0A= =0A= setRequestHeaders: function() {=0A= var headers =3D {=0A= 'X-Requested-With': 'XMLHttpRequest',=0A= 'X-Prototype-Version': Prototype.Version,=0A= 'Accept': 'text/javascript, text/html, application/xml, text/xml, = */*'=0A= };=0A= =0A= if (this.options.method =3D=3D 'post') {=0A= headers['Content-type'] =3D this.options.contentType +=0A= (this.options.encoding ? '; charset=3D' + this.options.encoding = : '');=0A= =0A= /* Force "Connection: close" for older Mozilla browsers to work=0A= * around a bug where XMLHttpRequest sends an incorrect=0A= * Content-length header. See Mozilla Bugzilla #246651.=0A= */=0A= if (this.transport.overrideMimeType &&=0A= (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < = 2005)=0A= headers['Connection'] =3D 'close';=0A= }=0A= =0A= // user-defined headers=0A= if (typeof this.options.requestHeaders =3D=3D 'object') {=0A= var extras =3D this.options.requestHeaders;=0A= =0A= if (typeof extras.push =3D=3D 'function')=0A= for (var i =3D 0, length =3D extras.length; i < length; i +=3D 2)=0A= headers[extras[i]] =3D extras[i+1];=0A= else=0A= $H(extras).each(function(pair) { headers[pair.key] =3D = pair.value });=0A= }=0A= =0A= for (var name in headers)=0A= this.transport.setRequestHeader(name, headers[name]);=0A= },=0A= =0A= success: function() {=0A= return !this.transport.status=0A= || (this.transport.status >=3D 200 && this.transport.status < = 300);=0A= },=0A= =0A= respondToReadyState: function(readyState) {=0A= var state =3D Ajax.Request.Events[readyState];=0A= var transport =3D this.transport, json =3D this.evalJSON();=0A= =0A= if (state =3D=3D 'Complete') {=0A= try {=0A= this._complete =3D true;=0A= (this.options['on' + this.transport.status]=0A= || this.options['on' + (this.success() ? 'Success' : 'Failure')]=0A= || Prototype.emptyFunction)(transport, json);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= }=0A= =0A= try {=0A= (this.options['on' + state] || Prototype.emptyFunction)(transport, = json);=0A= Ajax.Responders.dispatch('on' + state, this, transport, json);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= =0A= if (state =3D=3D 'Complete') {=0A= if ((this.getHeader('Content-type') || '').strip().=0A= match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i))=0A= this.evalResponse();=0A= =0A= // avoid memory leak in MSIE: clean up=0A= this.transport.onreadystatechange =3D Prototype.emptyFunction;=0A= }=0A= },=0A= =0A= getHeader: function(name) {=0A= try {=0A= return this.transport.getResponseHeader(name);=0A= } catch (e) { return null }=0A= },=0A= =0A= evalJSON: function() {=0A= try {=0A= var json =3D this.getHeader('X-JSON');=0A= return json ? eval('(' + json + ')') : null;=0A= } catch (e) { return null }=0A= },=0A= =0A= evalResponse: function() {=0A= try {=0A= return eval(this.transport.responseText);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= },=0A= =0A= dispatchException: function(exception) {=0A= (this.options.onException || Prototype.emptyFunction)(this, = exception);=0A= Ajax.Responders.dispatch('onException', this, exception);=0A= }=0A= });=0A= =0A= Ajax.Updater =3D Class.create();=0A= =0A= Object.extend(Object.extend(Ajax.Updater.prototype, = Ajax.Request.prototype), {=0A= initialize: function(container, url, options) {=0A= this.container =3D {=0A= success: (container.success || container),=0A= failure: (container.failure || (container.success ? null : = container))=0A= }=0A= =0A= this.transport =3D Ajax.getTransport();=0A= this.setOptions(options);=0A= =0A= var onComplete =3D this.options.onComplete || = Prototype.emptyFunction;=0A= this.options.onComplete =3D (function(transport, param) {=0A= this.updateContent();=0A= onComplete(transport, param);=0A= }).bind(this);=0A= =0A= this.request(url);=0A= },=0A= =0A= updateContent: function() {=0A= var receiver =3D this.container[this.success() ? 'success' : = 'failure'];=0A= var response =3D this.transport.responseText;=0A= =0A= if (!this.options.evalScripts) response =3D response.stripScripts();=0A= =0A= if (receiver =3D $(receiver)) {=0A= if (this.options.insertion)=0A= new this.options.insertion(receiver, response);=0A= else=0A= receiver.update(response);=0A= }=0A= =0A= if (this.success()) {=0A= if (this.onComplete)=0A= setTimeout(this.onComplete.bind(this), 10);=0A= }=0A= }=0A= });=0A= =0A= Ajax.PeriodicalUpdater =3D Class.create();=0A= Ajax.PeriodicalUpdater.prototype =3D Object.extend(new Ajax.Base(), {=0A= initialize: function(container, url, options) {=0A= this.setOptions(options);=0A= this.onComplete =3D this.options.onComplete;=0A= =0A= this.frequency =3D (this.options.frequency || 2);=0A= this.decay =3D (this.options.decay || 1);=0A= =0A= this.updater =3D {};=0A= this.container =3D container;=0A= this.url =3D url;=0A= =0A= this.start();=0A= },=0A= =0A= start: function() {=0A= this.options.onComplete =3D this.updateComplete.bind(this);=0A= this.onTimerEvent();=0A= },=0A= =0A= stop: function() {=0A= this.updater.options.onComplete =3D undefined;=0A= clearTimeout(this.timer);=0A= (this.onComplete || Prototype.emptyFunction).apply(this, arguments);=0A= },=0A= =0A= updateComplete: function(request) {=0A= if (this.options.decay) {=0A= this.decay =3D (request.responseText =3D=3D this.lastText ?=0A= this.decay * this.options.decay : 1);=0A= =0A= this.lastText =3D request.responseText;=0A= }=0A= this.timer =3D setTimeout(this.onTimerEvent.bind(this),=0A= this.decay * this.frequency * 1000);=0A= },=0A= =0A= onTimerEvent: function() {=0A= this.updater =3D new Ajax.Updater(this.container, this.url, = this.options);=0A= }=0A= });=0A= function $(element) {=0A= if (arguments.length > 1) {=0A= for (var i =3D 0, elements =3D [], length =3D arguments.length; i < = length; i++)=0A= elements.push($(arguments[i]));=0A= return elements;=0A= }=0A= if (typeof element =3D=3D 'string')=0A= element =3D document.getElementById(element);=0A= return Element.extend(element);=0A= }=0A= =0A= if (Prototype.BrowserFeatures.XPath) {=0A= document._getElementsByXPath =3D function(expression, parentElement) {=0A= var results =3D [];=0A= var query =3D document.evaluate(expression, $(parentElement) || = document,=0A= null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A= for (var i =3D 0, length =3D query.snapshotLength; i < length; i++)=0A= results.push(query.snapshotItem(i));=0A= return results;=0A= }=0A= }=0A= =0A= document.getElementsByClassName =3D function(className, parentElement) {=0A= if (Prototype.BrowserFeatures.XPath) {=0A= var q =3D ".//*[contains(concat(' ', @class, ' '), ' " + className + = " ')]";=0A= return document._getElementsByXPath(q, parentElement);=0A= } else {=0A= var children =3D ($(parentElement) || = document.body).getElementsByTagName('*');=0A= var elements =3D [], child;=0A= for (var i =3D 0, length =3D children.length; i < length; i++) {=0A= child =3D children[i];=0A= if (Element.hasClassName(child, className))=0A= elements.push(Element.extend(child));=0A= }=0A= return elements;=0A= }=0A= }=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= if (!window.Element)=0A= var Element =3D new Object();=0A= =0A= Element.extend =3D function(element) {=0A= if (!element) return;=0A= if (_nativeExtensions || element.nodeType =3D=3D 3) return element;=0A= =0A= if (!element._extended && element.tagName && element !=3D window) {=0A= var methods =3D Object.clone(Element.Methods), cache =3D = Element.extend.cache;=0A= =0A= if (element.tagName =3D=3D 'FORM')=0A= Object.extend(methods, Form.Methods);=0A= if (['INPUT', 'TEXTAREA', 'SELECT'].include(element.tagName))=0A= Object.extend(methods, Form.Element.Methods);=0A= =0A= Object.extend(methods, Element.Methods.Simulated);=0A= =0A= for (var property in methods) {=0A= var value =3D methods[property];=0A= if (typeof value =3D=3D 'function' && !(property in element))=0A= element[property] =3D cache.findOrStore(value);=0A= }=0A= }=0A= =0A= element._extended =3D true;=0A= return element;=0A= }=0A= =0A= Element.extend.cache =3D {=0A= findOrStore: function(value) {=0A= return this[value] =3D this[value] || function() {=0A= return value.apply(null, [this].concat($A(arguments)));=0A= }=0A= }=0A= }=0A= =0A= Element.Methods =3D {=0A= visible: function(element) {=0A= return $(element).style.display !=3D 'none';=0A= },=0A= =0A= toggle: function(element) {=0A= element =3D $(element);=0A= Element[Element.visible(element) ? 'hide' : 'show'](element);=0A= return element;=0A= },=0A= =0A= hide: function(element) {=0A= $(element).style.display =3D 'none';=0A= return element;=0A= },=0A= =0A= show: function(element) {=0A= $(element).style.display =3D '';=0A= return element;=0A= },=0A= =0A= remove: function(element) {=0A= element =3D $(element);=0A= element.parentNode.removeChild(element);=0A= return element;=0A= },=0A= =0A= update: function(element, html) {=0A= html =3D typeof html =3D=3D 'undefined' ? '' : html.toString();=0A= $(element).innerHTML =3D html.stripScripts();=0A= setTimeout(function() {html.evalScripts()}, 10);=0A= return element;=0A= },=0A= =0A= replace: function(element, html) {=0A= element =3D $(element);=0A= if (element.outerHTML) {=0A= element.outerHTML =3D html.stripScripts();=0A= } else {=0A= var range =3D element.ownerDocument.createRange();=0A= range.selectNodeContents(element);=0A= element.parentNode.replaceChild(=0A= range.createContextualFragment(html.stripScripts()), element);=0A= }=0A= setTimeout(function() {html.evalScripts()}, 10);=0A= return element;=0A= },=0A= =0A= inspect: function(element) {=0A= element =3D $(element);=0A= var result =3D '<' + element.tagName.toLowerCase();=0A= $H({'id': 'id', 'className': 'class'}).each(function(pair) {=0A= var property =3D pair.first(), attribute =3D pair.last();=0A= var value =3D (element[property] || '').toString();=0A= if (value) result +=3D ' ' + attribute + '=3D' + = value.inspect(true);=0A= });=0A= return result + '>';=0A= },=0A= =0A= recursivelyCollect: function(element, property) {=0A= element =3D $(element);=0A= var elements =3D [];=0A= while (element =3D element[property])=0A= if (element.nodeType =3D=3D 1)=0A= elements.push(Element.extend(element));=0A= return elements;=0A= },=0A= =0A= ancestors: function(element) {=0A= return $(element).recursivelyCollect('parentNode');=0A= },=0A= =0A= descendants: function(element) {=0A= element =3D $(element);=0A= return $A(element.getElementsByTagName('*'));=0A= },=0A= =0A= immediateDescendants: function(element) {=0A= if (!(element =3D $(element).firstChild)) return [];=0A= while (element && element.nodeType !=3D 1) element =3D = element.nextSibling;=0A= if (element) return [element].concat($(element).nextSiblings());=0A= return [];=0A= },=0A= =0A= previousSiblings: function(element) {=0A= return $(element).recursivelyCollect('previousSibling');=0A= },=0A= =0A= nextSiblings: function(element) {=0A= return $(element).recursivelyCollect('nextSibling');=0A= },=0A= =0A= siblings: function(element) {=0A= element =3D $(element);=0A= return = element.previousSiblings().reverse().concat(element.nextSiblings());=0A= },=0A= =0A= match: function(element, selector) {=0A= element =3D $(element);=0A= if (typeof selector =3D=3D 'string')=0A= selector =3D new Selector(selector);=0A= return selector.match(element);=0A= },=0A= =0A= up: function(element, expression, index) {=0A= return Selector.findElement($(element).ancestors(), expression, = index);=0A= },=0A= =0A= down: function(element, expression, index) {=0A= return Selector.findElement($(element).descendants(), expression, = index);=0A= },=0A= =0A= previous: function(element, expression, index) {=0A= return Selector.findElement($(element).previousSiblings(), = expression, index);=0A= },=0A= =0A= next: function(element, expression, index) {=0A= return Selector.findElement($(element).nextSiblings(), expression, = index);=0A= },=0A= =0A= getElementsBySelector: function() {=0A= var args =3D $A(arguments), element =3D $(args.shift());=0A= return Selector.findChildElements(element, args);=0A= },=0A= =0A= getElementsByClassName: function(element, className) {=0A= element =3D $(element);=0A= return document.getElementsByClassName(className, element);=0A= },=0A= =0A= readAttribute: function(element, name) {=0A= return $(element).getAttribute(name);=0A= },=0A= =0A= getHeight: function(element) {=0A= element =3D $(element);=0A= return element.offsetHeight;=0A= },=0A= =0A= classNames: function(element) {=0A= return new Element.ClassNames(element);=0A= },=0A= =0A= hasClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= var elementClassName =3D element.className;=0A= if (elementClassName.length =3D=3D 0) return false;=0A= if (elementClassName =3D=3D className ||=0A= elementClassName.match(new RegExp("(^|\\s)" + className + = "(\\s|$)")))=0A= return true;=0A= return false;=0A= },=0A= =0A= addClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= Element.classNames(element).add(className);=0A= return element;=0A= },=0A= =0A= removeClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= Element.classNames(element).remove(className);=0A= return element;=0A= },=0A= =0A= observe: function() {=0A= Event.observe.apply(Event, arguments);=0A= return $A(arguments).first();=0A= },=0A= =0A= stopObserving: function() {=0A= Event.stopObserving.apply(Event, arguments);=0A= return $A(arguments).first();=0A= },=0A= =0A= // removes whitespace-only text node children=0A= cleanWhitespace: function(element) {=0A= element =3D $(element);=0A= var node =3D element.firstChild;=0A= while (node) {=0A= var nextNode =3D node.nextSibling;=0A= if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))=0A= element.removeChild(node);=0A= node =3D nextNode;=0A= }=0A= return element;=0A= },=0A= =0A= empty: function(element) {=0A= return $(element).innerHTML.match(/^\s*$/);=0A= },=0A= =0A= childOf: function(element, ancestor) {=0A= element =3D $(element), ancestor =3D $(ancestor);=0A= while (element =3D element.parentNode)=0A= if (element =3D=3D ancestor) return true;=0A= return false;=0A= },=0A= =0A= scrollTo: function(element) {=0A= element =3D $(element);=0A= var x =3D element.x ? element.x : element.offsetLeft,=0A= y =3D element.y ? element.y : element.offsetTop;=0A= window.scrollTo(x, y);=0A= return element;=0A= },=0A= =0A= getStyle: function(element, style) {=0A= element =3D $(element);=0A= var inline =3D (style =3D=3D 'float' ?=0A= (typeof element.style.styleFloat !=3D 'undefined' ? 'styleFloat' : = 'cssFloat') : style);=0A= var value =3D element.style[inline.camelize()];=0A= if (!value) {=0A= if (document.defaultView && document.defaultView.getComputedStyle) = {=0A= var css =3D document.defaultView.getComputedStyle(element, null);=0A= value =3D css ? css.getPropertyValue(style) : null;=0A= } else if (element.currentStyle) {=0A= value =3D element.currentStyle[inline.camelize()];=0A= }=0A= }=0A= =0A= if((value =3D=3D 'auto') && ['width','height'].include(style) && = (element.getStyle('display') !=3D 'none'))=0A= value =3D = element['offset'+style.charAt(0).toUpperCase()+style.substring(1)] + = 'px';=0A= =0A= if (window.opera && ['left', 'top', 'right', = 'bottom'].include(style))=0A= if (Element.getStyle(element, 'position') =3D=3D 'static') value = =3D 'auto';=0A= =0A= return value =3D=3D 'auto' ? null : value;=0A= },=0A= =0A= setStyle: function(element, style) {=0A= element =3D $(element);=0A= for (var name in style)=0A= element.style[ (name =3D=3D 'float' ?=0A= ((typeof element.style.styleFloat !=3D 'undefined') ? = 'styleFloat' : 'cssFloat') : name).camelize()=0A= ] =3D style[name];=0A= return element;=0A= },=0A= =0A= getDimensions: function(element) {=0A= element =3D $(element);=0A= if (Element.getStyle(element, 'display') !=3D 'none')=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= els.visibility =3D 'hidden';=0A= els.position =3D 'absolute';=0A= els.display =3D '';=0A= var originalWidth =3D element.clientWidth;=0A= var originalHeight =3D element.clientHeight;=0A= els.display =3D 'none';=0A= els.position =3D originalPosition;=0A= els.visibility =3D originalVisibility;=0A= return {width: originalWidth, height: originalHeight};=0A= },=0A= =0A= makePositioned: function(element) {=0A= element =3D $(element);=0A= var pos =3D Element.getStyle(element, 'position');=0A= if (pos =3D=3D 'static' || !pos) {=0A= element._madePositioned =3D true;=0A= element.style.position =3D 'relative';=0A= // Opera returns the offset relative to the positioning context, = when an=0A= // element is position relative but top and left have not been = defined=0A= if (window.opera) {=0A= element.style.top =3D 0;=0A= element.style.left =3D 0;=0A= }=0A= }=0A= return element;=0A= },=0A= =0A= undoPositioned: function(element) {=0A= element =3D $(element);=0A= if (element._madePositioned) {=0A= element._madePositioned =3D undefined;=0A= element.style.position =3D=0A= element.style.top =3D=0A= element.style.left =3D=0A= element.style.bottom =3D=0A= element.style.right =3D '';=0A= }=0A= return element;=0A= },=0A= =0A= makeClipping: function(element) {=0A= element =3D $(element);=0A= if (element._overflow) return element;=0A= element._overflow =3D element.style.overflow || 'auto';=0A= if ((Element.getStyle(element, 'overflow') || 'visible') !=3D = 'hidden')=0A= element.style.overflow =3D 'hidden';=0A= return element;=0A= },=0A= =0A= undoClipping: function(element) {=0A= element =3D $(element);=0A= if (!element._overflow) return element;=0A= element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : = element._overflow;=0A= element._overflow =3D null;=0A= return element;=0A= }=0A= }=0A= =0A= Element.Methods.Simulated =3D {=0A= hasAttribute: function(element, attribute) {=0A= return $(element).getAttributeNode(attribute).specified;=0A= }=0A= }=0A= =0A= // IE is missing .innerHTML support for TABLE-related elements=0A= if(document.all){=0A= Element.Methods.update =3D function(element, html) {=0A= element =3D $(element);=0A= html =3D typeof html =3D=3D 'undefined' ? '' : html.toString();=0A= var tagName =3D element.tagName.toUpperCase();=0A= if (['THEAD','TBODY','TR','TD'].include(tagName)) {=0A= var div =3D document.createElement('div');=0A= switch (tagName) {=0A= case 'THEAD':=0A= case 'TBODY':=0A= div.innerHTML =3D '' + html.stripScripts() + = '
';=0A= depth =3D 2;=0A= break;=0A= case 'TR':=0A= div.innerHTML =3D '' + html.stripScripts() = + '
';=0A= depth =3D 3;=0A= break;=0A= case 'TD':=0A= div.innerHTML =3D '
' + = html.stripScripts() + '
';=0A= depth =3D 4;=0A= }=0A= $A(element.childNodes).each(function(node){=0A= element.removeChild(node)=0A= });=0A= depth.times(function(){ div =3D div.firstChild });=0A= =0A= $A(div.childNodes).each(=0A= function(node){ element.appendChild(node) });=0A= } else {=0A= element.innerHTML =3D html.stripScripts();=0A= }=0A= setTimeout(function() {html.evalScripts()}, 10);=0A= return element;=0A= }=0A= }=0A= =0A= Object.extend(Element, Element.Methods);=0A= =0A= var _nativeExtensions =3D false;=0A= =0A= if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))=0A= ['', 'Form', 'Input', 'TextArea', 'Select'].each(function(tag) {=0A= var className =3D 'HTML' + tag + 'Element';=0A= if(window[className]) return;=0A= var klass =3D window[className] =3D {};=0A= klass.prototype =3D document.createElement(tag ? tag.toLowerCase() : = 'div').__proto__;=0A= });=0A= =0A= Element.addMethods =3D function(methods) {=0A= Object.extend(Element.Methods, methods || {});=0A= =0A= function copy(methods, destination, onlyIfAbsent) {=0A= onlyIfAbsent =3D onlyIfAbsent || false;=0A= var cache =3D Element.extend.cache;=0A= for (var property in methods) {=0A= var value =3D methods[property];=0A= if (!onlyIfAbsent || !(property in destination))=0A= destination[property] =3D cache.findOrStore(value);=0A= }=0A= }=0A= =0A= if (typeof HTMLElement !=3D 'undefined') {=0A= copy(Element.Methods, HTMLElement.prototype);=0A= copy(Element.Methods.Simulated, HTMLElement.prototype, true);=0A= copy(Form.Methods, HTMLFormElement.prototype);=0A= [HTMLInputElement, HTMLTextAreaElement, = HTMLSelectElement].each(function(klass) {=0A= copy(Form.Element.Methods, klass.prototype);=0A= });=0A= _nativeExtensions =3D true;=0A= }=0A= }=0A= =0A= var Toggle =3D new Object();=0A= Toggle.display =3D Element.toggle;=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Abstract.Insertion =3D function(adjacency) {=0A= this.adjacency =3D adjacency;=0A= }=0A= =0A= Abstract.Insertion.prototype =3D {=0A= initialize: function(element, content) {=0A= this.element =3D $(element);=0A= this.content =3D content.stripScripts();=0A= =0A= if (this.adjacency && this.element.insertAdjacentHTML) {=0A= try {=0A= this.element.insertAdjacentHTML(this.adjacency, this.content);=0A= } catch (e) {=0A= var tagName =3D this.element.tagName.toUpperCase();=0A= if (['TBODY', 'TR'].include(tagName)) {=0A= this.insertContent(this.contentFromAnonymousTable());=0A= } else {=0A= throw e;=0A= }=0A= }=0A= } else {=0A= this.range =3D this.element.ownerDocument.createRange();=0A= if (this.initializeRange) this.initializeRange();=0A= = this.insertContent([this.range.createContextualFragment(this.content)]);=0A= }=0A= =0A= setTimeout(function() {content.evalScripts()}, 10);=0A= },=0A= =0A= contentFromAnonymousTable: function() {=0A= var div =3D document.createElement('div');=0A= div.innerHTML =3D '' + this.content + = '
';=0A= return $A(div.childNodes[0].childNodes[0].childNodes);=0A= }=0A= }=0A= =0A= var Insertion =3D new Object();=0A= =0A= Insertion.Before =3D Class.create();=0A= Insertion.Before.prototype =3D Object.extend(new = Abstract.Insertion('beforeBegin'), {=0A= initializeRange: function() {=0A= this.range.setStartBefore(this.element);=0A= },=0A= =0A= insertContent: function(fragments) {=0A= fragments.each((function(fragment) {=0A= this.element.parentNode.insertBefore(fragment, this.element);=0A= }).bind(this));=0A= }=0A= });=0A= =0A= Insertion.Top =3D Class.create();=0A= Insertion.Top.prototype =3D Object.extend(new = Abstract.Insertion('afterBegin'), {=0A= initializeRange: function() {=0A= this.range.selectNodeContents(this.element);=0A= this.range.collapse(true);=0A= },=0A= =0A= insertContent: function(fragments) {=0A= fragments.reverse(false).each((function(fragment) {=0A= this.element.insertBefore(fragment, this.element.firstChild);=0A= }).bind(this));=0A= }=0A= });=0A= =0A= Insertion.Bottom =3D Class.create();=0A= Insertion.Bottom.prototype =3D Object.extend(new = Abstract.Insertion('beforeEnd'), {=0A= initializeRange: function() {=0A= this.range.selectNodeContents(this.element);=0A= this.range.collapse(this.element);=0A= },=0A= =0A= insertContent: function(fragments) {=0A= fragments.each((function(fragment) {=0A= this.element.appendChild(fragment);=0A= }).bind(this));=0A= }=0A= });=0A= =0A= Insertion.After =3D Class.create();=0A= Insertion.After.prototype =3D Object.extend(new = Abstract.Insertion('afterEnd'), {=0A= initializeRange: function() {=0A= this.range.setStartAfter(this.element);=0A= },=0A= =0A= insertContent: function(fragments) {=0A= fragments.each((function(fragment) {=0A= this.element.parentNode.insertBefore(fragment,=0A= this.element.nextSibling);=0A= }).bind(this));=0A= }=0A= });=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Element.ClassNames =3D Class.create();=0A= Element.ClassNames.prototype =3D {=0A= initialize: function(element) {=0A= this.element =3D $(element);=0A= },=0A= =0A= _each: function(iterator) {=0A= this.element.className.split(/\s+/).select(function(name) {=0A= return name.length > 0;=0A= })._each(iterator);=0A= },=0A= =0A= set: function(className) {=0A= this.element.className =3D className;=0A= },=0A= =0A= add: function(classNameToAdd) {=0A= if (this.include(classNameToAdd)) return;=0A= this.set($A(this).concat(classNameToAdd).join(' '));=0A= },=0A= =0A= remove: function(classNameToRemove) {=0A= if (!this.include(classNameToRemove)) return;=0A= this.set($A(this).without(classNameToRemove).join(' '));=0A= },=0A= =0A= toString: function() {=0A= return $A(this).join(' ');=0A= }=0A= }=0A= =0A= Object.extend(Element.ClassNames.prototype, Enumerable);=0A= var Selector =3D Class.create();=0A= Selector.prototype =3D {=0A= initialize: function(expression) {=0A= this.params =3D {classNames: []};=0A= this.expression =3D expression.toString().strip();=0A= this.parseExpression();=0A= this.compileMatcher();=0A= },=0A= =0A= parseExpression: function() {=0A= function abort(message) { throw 'Parse error in selector: ' + = message; }=0A= =0A= if (this.expression =3D=3D '') abort('empty expression');=0A= =0A= var params =3D this.params, expr =3D this.expression, match, = modifier, clause, rest;=0A= while (match =3D = expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=3D)(?:"([^"]*)"|([^\]\s]*))= )?\]$/i)) {=0A= params.attributes =3D params.attributes || [];=0A= params.attributes.push({name: match[2], operator: match[3], value: = match[4] || match[5] || ''});=0A= expr =3D match[1];=0A= }=0A= =0A= if (expr =3D=3D '*') return this.params.wildcard =3D true;=0A= =0A= while (match =3D expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)) {=0A= modifier =3D match[1], clause =3D match[2], rest =3D match[3];=0A= switch (modifier) {=0A= case '#': params.id =3D clause; break;=0A= case '.': params.classNames.push(clause); break;=0A= case '':=0A= case undefined: params.tagName =3D clause.toUpperCase(); break;=0A= default: abort(expr.inspect());=0A= }=0A= expr =3D rest;=0A= }=0A= =0A= if (expr.length > 0) abort(expr.inspect());=0A= },=0A= =0A= buildMatchExpression: function() {=0A= var params =3D this.params, conditions =3D [], clause;=0A= =0A= if (params.wildcard)=0A= conditions.push('true');=0A= if (clause =3D params.id)=0A= conditions.push('element.id =3D=3D ' + clause.inspect());=0A= if (clause =3D params.tagName)=0A= conditions.push('element.tagName.toUpperCase() =3D=3D ' + = clause.inspect());=0A= if ((clause =3D params.classNames).length > 0)=0A= for (var i =3D 0, length =3D clause.length; i < length; i++)=0A= conditions.push('Element.hasClassName(element, ' + = clause[i].inspect() + ')');=0A= if (clause =3D params.attributes) {=0A= clause.each(function(attribute) {=0A= var value =3D 'element.getAttribute(' + attribute.name.inspect() = + ')';=0A= var splitValueBy =3D function(delimiter) {=0A= return value + ' && ' + value + '.split(' + = delimiter.inspect() + ')';=0A= }=0A= =0A= switch (attribute.operator) {=0A= case '=3D': conditions.push(value + ' =3D=3D ' + = attribute.value.inspect()); break;=0A= case '~=3D': conditions.push(splitValueBy(' ') + = '.include(' + attribute.value.inspect() + ')'); break;=0A= case '|=3D': conditions.push(=0A= splitValueBy('-') + '.first().toUpperCase() = =3D=3D ' + attribute.value.toUpperCase().inspect()=0A= ); break;=0A= case '!=3D': conditions.push(value + ' !=3D ' + = attribute.value.inspect()); break;=0A= case '':=0A= case undefined: conditions.push(value + ' !=3D null'); break;=0A= default: throw 'Unknown operator ' + attribute.operator = + ' in selector';=0A= }=0A= });=0A= }=0A= =0A= return conditions.join(' && ');=0A= },=0A= =0A= compileMatcher: function() {=0A= this.match =3D new Function('element', 'if (!element.tagName) return = false; \=0A= return ' + this.buildMatchExpression());=0A= },=0A= =0A= findElements: function(scope) {=0A= var element;=0A= =0A= if (element =3D $(this.params.id))=0A= if (this.match(element))=0A= if (!scope || Element.childOf(element, scope))=0A= return [element];=0A= =0A= scope =3D (scope || = document).getElementsByTagName(this.params.tagName || '*');=0A= =0A= var results =3D [];=0A= for (var i =3D 0, length =3D scope.length; i < length; i++)=0A= if (this.match(element =3D scope[i]))=0A= results.push(Element.extend(element));=0A= =0A= return results;=0A= },=0A= =0A= toString: function() {=0A= return this.expression;=0A= }=0A= }=0A= =0A= Object.extend(Selector, {=0A= matchElements: function(elements, expression) {=0A= var selector =3D new Selector(expression);=0A= return = elements.select(selector.match.bind(selector)).collect(Element.extend);=0A= },=0A= =0A= findElement: function(elements, expression, index) {=0A= if (typeof expression =3D=3D 'number') index =3D expression, = expression =3D false;=0A= return Selector.matchElements(elements, expression || '*')[index || = 0];=0A= },=0A= =0A= findChildElements: function(element, expressions) {=0A= return expressions.map(function(expression) {=0A= return expression.strip().split(/\s+/).inject([null], = function(results, expr) {=0A= var selector =3D new Selector(expr);=0A= return results.inject([], function(elements, result) {=0A= return elements.concat(selector.findElements(result || = element));=0A= });=0A= });=0A= }).flatten();=0A= }=0A= });=0A= =0A= function $$() {=0A= return Selector.findChildElements(document, $A(arguments));=0A= }=0A= var Form =3D {=0A= reset: function(form) {=0A= $(form).reset();=0A= return form;=0A= },=0A= =0A= serializeElements: function(elements) {=0A= return elements.inject([], function(queryComponents, element) {=0A= var queryComponent =3D Form.Element.serialize(element);=0A= if (queryComponent) queryComponents.push(queryComponent);=0A= return queryComponents;=0A= }).join('&');=0A= }=0A= };=0A= =0A= Form.Methods =3D {=0A= serialize: function(form) {=0A= return Form.serializeElements($(form).getElements());=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)=0A= return inputs;=0A= =0A= var matchingInputs =3D new Array();=0A= for (var i =3D 0, length =3D inputs.length; i < length; i++) {=0A= var input =3D inputs[i];=0A= if ((typeName && input.type !=3D typeName) ||=0A= (name && input.name !=3D name))=0A= continue;=0A= matchingInputs.push(Element.extend(input));=0A= }=0A= =0A= return matchingInputs;=0A= },=0A= =0A= disable: function(form) {=0A= form =3D $(form);=0A= form.getElements().each(function(element) {=0A= element.blur();=0A= element.disabled =3D 'true';=0A= });=0A= return form;=0A= },=0A= =0A= enable: function(form) {=0A= form =3D $(form);=0A= form.getElements().each(function(element) {=0A= element.disabled =3D '';=0A= });=0A= return form;=0A= },=0A= =0A= findFirstElement: function(form) {=0A= return $(form).getElements().find(function(element) {=0A= return element.type !=3D 'hidden' && !element.disabled &&=0A= ['input', 'select', = 'textarea'].include(element.tagName.toLowerCase());=0A= });=0A= },=0A= =0A= focusFirstElement: function(form) {=0A= form =3D $(form);=0A= form.findFirstElement().activate();=0A= return form;=0A= }=0A= }=0A= =0A= Object.extend(Form, Form.Methods);=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Form.Element =3D {=0A= focus: function(element) {=0A= $(element).focus();=0A= return element;=0A= },=0A= =0A= select: function(element) {=0A= $(element).select();=0A= return element;=0A= }=0A= }=0A= =0A= Form.Element.Methods =3D {=0A= serialize: function(element) {=0A= element =3D $(element);=0A= if (element.disabled) return '';=0A= var method =3D element.tagName.toLowerCase();=0A= var parameter =3D Form.Element.Serializers[method](element);=0A= =0A= if (parameter) {=0A= var key =3D encodeURIComponent(parameter[0]);=0A= if (key.length =3D=3D 0) return;=0A= =0A= if (parameter[1].constructor !=3D Array)=0A= parameter[1] =3D [parameter[1]];=0A= =0A= return parameter[1].map(function(value) {=0A= return key + '=3D' + encodeURIComponent(value);=0A= }).join('&');=0A= }=0A= },=0A= =0A= getValue: function(element) {=0A= element =3D $(element);=0A= var method =3D element.tagName.toLowerCase();=0A= var parameter =3D Form.Element.Serializers[method](element);=0A= =0A= if (parameter)=0A= return parameter[1];=0A= },=0A= =0A= clear: function(element) {=0A= $(element).value =3D '';=0A= return element;=0A= },=0A= =0A= present: function(element) {=0A= return $(element).value !=3D '';=0A= },=0A= =0A= activate: function(element) {=0A= element =3D $(element);=0A= element.focus();=0A= if (element.select && ( element.tagName.toLowerCase() !=3D 'input' ||=0A= !['button', 'reset', 'submit'].include(element.type) ) )=0A= element.select();=0A= return element;=0A= },=0A= =0A= disable: function(element) {=0A= element =3D $(element);=0A= element.disabled =3D true;=0A= return element;=0A= },=0A= =0A= enable: function(element) {=0A= element =3D $(element);=0A= element.blur();=0A= element.disabled =3D false;=0A= return element;=0A= }=0A= }=0A= =0A= Object.extend(Form.Element, Form.Element.Methods);=0A= var Field =3D Form.Element;=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Form.Element.Serializers =3D {=0A= input: function(element) {=0A= switch (element.type.toLowerCase()) {=0A= case 'checkbox':=0A= case 'radio':=0A= return Form.Element.Serializers.inputSelector(element);=0A= default:=0A= return Form.Element.Serializers.textarea(element);=0A= }=0A= return false;=0A= },=0A= =0A= inputSelector: function(element) {=0A= if (element.checked)=0A= return [element.name, element.value];=0A= },=0A= =0A= textarea: function(element) {=0A= return [element.name, element.value];=0A= },=0A= =0A= select: function(element) {=0A= return Form.Element.Serializers[element.type =3D=3D 'select-one' ?=0A= 'selectOne' : 'selectMany'](element);=0A= },=0A= =0A= selectOne: function(element) {=0A= var value =3D '', opt, index =3D element.selectedIndex;=0A= if (index >=3D 0) {=0A= opt =3D Element.extend(element.options[index]);=0A= // Uses the new potential extension if hasAttribute isn't native.=0A= value =3D opt.hasAttribute('value') ? opt.value : opt.text;=0A= }=0A= return [element.name, value];=0A= },=0A= =0A= selectMany: function(element) {=0A= var value =3D [];=0A= for (var i =3D 0, length =3D element.length; i < length; i++) {=0A= var opt =3D Element.extend(element.options[i]);=0A= if (opt.selected)=0A= // Uses the new potential extension if hasAttribute isn't native.=0A= value.push(opt.hasAttribute('value') ? opt.value : opt.text);=0A= }=0A= return [element.name, value];=0A= }=0A= }=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var $F =3D Form.Element.getValue;=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Abstract.TimedObserver =3D function() {}=0A= Abstract.TimedObserver.prototype =3D {=0A= initialize: function(element, frequency, callback) {=0A= this.frequency =3D frequency;=0A= this.element =3D $(element);=0A= this.callback =3D callback;=0A= =0A= this.lastValue =3D this.getValue();=0A= this.registerCallback();=0A= },=0A= =0A= registerCallback: function() {=0A= setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);=0A= },=0A= =0A= onTimerEvent: function() {=0A= var value =3D this.getValue();=0A= if (this.lastValue !=3D value) {=0A= this.callback(this.element, value);=0A= this.lastValue =3D value;=0A= }=0A= }=0A= }=0A= =0A= Form.Element.Observer =3D Class.create();=0A= Form.Element.Observer.prototype =3D Object.extend(new = Abstract.TimedObserver(), {=0A= getValue: function() {=0A= return Form.Element.getValue(this.element);=0A= }=0A= });=0A= =0A= Form.Observer =3D Class.create();=0A= Form.Observer.prototype =3D Object.extend(new Abstract.TimedObserver(), {=0A= getValue: function() {=0A= return Form.serialize(this.element);=0A= }=0A= });=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Abstract.EventObserver =3D function() {}=0A= Abstract.EventObserver.prototype =3D {=0A= initialize: function(element, callback) {=0A= this.element =3D $(element);=0A= this.callback =3D callback;=0A= =0A= this.lastValue =3D this.getValue();=0A= if (this.element.tagName.toLowerCase() =3D=3D 'form')=0A= this.registerFormCallbacks();=0A= else=0A= this.registerCallback(this.element);=0A= },=0A= =0A= onElementEvent: function() {=0A= var value =3D this.getValue();=0A= if (this.lastValue !=3D value) {=0A= this.callback(this.element, value);=0A= this.lastValue =3D value;=0A= }=0A= },=0A= =0A= registerFormCallbacks: function() {=0A= = Form.getElements(this.element).each(this.registerCallback.bind(this));=0A= },=0A= =0A= registerCallback: function(element) {=0A= if (element.type) {=0A= switch (element.type.toLowerCase()) {=0A= case 'checkbox':=0A= case 'radio':=0A= Event.observe(element, 'click', = this.onElementEvent.bind(this));=0A= break;=0A= default:=0A= Event.observe(element, 'change', = this.onElementEvent.bind(this));=0A= break;=0A= }=0A= }=0A= }=0A= }=0A= =0A= Form.Element.EventObserver =3D Class.create();=0A= Form.Element.EventObserver.prototype =3D Object.extend(new = Abstract.EventObserver(), {=0A= getValue: function() {=0A= return Form.Element.getValue(this.element);=0A= }=0A= });=0A= =0A= Form.EventObserver =3D Class.create();=0A= Form.EventObserver.prototype =3D Object.extend(new = Abstract.EventObserver(), {=0A= getValue: function() {=0A= return Form.serialize(this.element);=0A= }=0A= });=0A= if (!window.Event) {=0A= var Event =3D new Object();=0A= }=0A= =0A= Object.extend(Event, {=0A= KEY_BACKSPACE: 8,=0A= KEY_TAB: 9,=0A= KEY_RETURN: 13,=0A= KEY_ESC: 27,=0A= KEY_LEFT: 37,=0A= KEY_UP: 38,=0A= KEY_RIGHT: 39,=0A= KEY_DOWN: 40,=0A= KEY_DELETE: 46,=0A= KEY_HOME: 36,=0A= KEY_END: 35,=0A= KEY_PAGEUP: 33,=0A= KEY_PAGEDOWN: 34,=0A= =0A= element: function(event) {=0A= return event.target || event.srcElement;=0A= },=0A= =0A= isLeftClick: function(event) {=0A= return (((event.which) && (event.which =3D=3D 1)) ||=0A= ((event.button) && (event.button =3D=3D 1)));=0A= },=0A= =0A= pointerX: function(event) {=0A= return event.pageX || (event.clientX +=0A= (document.documentElement.scrollLeft || document.body.scrollLeft));=0A= },=0A= =0A= pointerY: function(event) {=0A= return event.pageY || (event.clientY +=0A= (document.documentElement.scrollTop || document.body.scrollTop));=0A= },=0A= =0A= stop: function(event) {=0A= if (event.preventDefault) {=0A= event.preventDefault();=0A= event.stopPropagation();=0A= } else {=0A= event.returnValue =3D false;=0A= event.cancelBubble =3D true;=0A= }=0A= },=0A= =0A= // find the first node with the given tagName, starting from the=0A= // node the event was triggered on; traverses the DOM upwards=0A= findElement: function(event, tagName) {=0A= var element =3D Event.element(event);=0A= while (element.parentNode && (!element.tagName ||=0A= (element.tagName.toUpperCase() !=3D tagName.toUpperCase())))=0A= element =3D element.parentNode;=0A= return element;=0A= },=0A= =0A= observers: false,=0A= =0A= _observeAndCache: function(element, name, observer, useCapture) {=0A= if (!this.observers) this.observers =3D [];=0A= if (element.addEventListener) {=0A= this.observers.push([element, name, observer, useCapture]);=0A= element.addEventListener(name, observer, useCapture);=0A= } else if (element.attachEvent) {=0A= this.observers.push([element, name, observer, useCapture]);=0A= element.attachEvent('on' + name, observer);=0A= }=0A= },=0A= =0A= unloadCache: function() {=0A= if (!Event.observers) return;=0A= for (var i =3D 0, length =3D Event.observers.length; i < length; = i++) {=0A= Event.stopObserving.apply(this, Event.observers[i]);=0A= Event.observers[i][0] =3D null;=0A= }=0A= Event.observers =3D false;=0A= },=0A= =0A= observe: function(element, name, observer, useCapture) {=0A= element =3D $(element);=0A= useCapture =3D useCapture || false;=0A= =0A= if (name =3D=3D 'keypress' &&=0A= (navigator.appVersion.match(/Konqueror|Safari|KHTML/)=0A= || element.attachEvent))=0A= name =3D 'keydown';=0A= =0A= Event._observeAndCache(element, name, observer, useCapture);=0A= },=0A= =0A= stopObserving: function(element, name, observer, useCapture) {=0A= element =3D $(element);=0A= useCapture =3D useCapture || false;=0A= =0A= if (name =3D=3D 'keypress' &&=0A= (navigator.appVersion.match(/Konqueror|Safari|KHTML/)=0A= || element.detachEvent))=0A= name =3D 'keydown';=0A= =0A= if (element.removeEventListener) {=0A= element.removeEventListener(name, observer, useCapture);=0A= } else if (element.detachEvent) {=0A= try {=0A= element.detachEvent('on' + name, observer);=0A= } catch (e) {}=0A= }=0A= }=0A= });=0A= =0A= /* prevent memory leaks in IE */=0A= if (navigator.appVersion.match(/\bMSIE\b/))=0A= Event.observe(window, 'unload', Event.unloadCache, false);=0A= var Position =3D {=0A= // set to true if needed, warning: firefox performance problems=0A= // NOT neeeded for page scrolling, only if draggable contained in=0A= // scrollable elements=0A= includeScrollOffsets: false,=0A= =0A= // must be called before calling withinIncludingScrolloffset, every = time the=0A= // page is scrolled=0A= prepare: function() {=0A= this.deltaX =3D window.pageXOffset=0A= || document.documentElement.scrollLeft=0A= || document.body.scrollLeft=0A= || 0;=0A= this.deltaY =3D window.pageYOffset=0A= || document.documentElement.scrollTop=0A= || document.body.scrollTop=0A= || 0;=0A= },=0A= =0A= realOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.scrollTop || 0;=0A= valueL +=3D element.scrollLeft || 0;=0A= element =3D element.parentNode;=0A= } while (element);=0A= return [valueL, valueT];=0A= },=0A= =0A= cumulativeOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= element =3D element.offsetParent;=0A= } while (element);=0A= return [valueL, valueT];=0A= },=0A= =0A= positionedOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= element =3D element.offsetParent;=0A= if (element) {=0A= if(element.tagName=3D=3D'BODY') break;=0A= var p =3D Element.getStyle(element, 'position');=0A= if (p =3D=3D 'relative' || p =3D=3D 'absolute') break;=0A= }=0A= } while (element);=0A= return [valueL, valueT];=0A= },=0A= =0A= offsetParent: function(element) {=0A= if (element.offsetParent) return element.offsetParent;=0A= if (element =3D=3D document.body) return element;=0A= =0A= while ((element =3D element.parentNode) && element !=3D = document.body)=0A= if (Element.getStyle(element, 'position') !=3D 'static')=0A= return element;=0A= =0A= return document.body;=0A= },=0A= =0A= // caches x/y coordinate pair to use with overlap=0A= within: function(element, x, y) {=0A= if (this.includeScrollOffsets)=0A= return this.withinIncludingScrolloffsets(element, x, y);=0A= this.xcomp =3D x;=0A= this.ycomp =3D y;=0A= this.offset =3D this.cumulativeOffset(element);=0A= =0A= return (y >=3D this.offset[1] &&=0A= y < this.offset[1] + element.offsetHeight &&=0A= x >=3D this.offset[0] &&=0A= x < this.offset[0] + element.offsetWidth);=0A= },=0A= =0A= withinIncludingScrolloffsets: function(element, x, y) {=0A= var offsetcache =3D this.realOffset(element);=0A= =0A= this.xcomp =3D x + offsetcache[0] - this.deltaX;=0A= this.ycomp =3D y + offsetcache[1] - this.deltaY;=0A= this.offset =3D this.cumulativeOffset(element);=0A= =0A= return (this.ycomp >=3D this.offset[1] &&=0A= this.ycomp < this.offset[1] + element.offsetHeight &&=0A= this.xcomp >=3D this.offset[0] &&=0A= this.xcomp < this.offset[0] + element.offsetWidth);=0A= },=0A= =0A= // within must be called directly before=0A= overlap: function(mode, element) {=0A= if (!mode) return 0;=0A= if (mode =3D=3D 'vertical')=0A= return ((this.offset[1] + element.offsetHeight) - this.ycomp) /=0A= element.offsetHeight;=0A= if (mode =3D=3D 'horizontal')=0A= return ((this.offset[0] + element.offsetWidth) - this.xcomp) /=0A= element.offsetWidth;=0A= },=0A= =0A= page: function(forElement) {=0A= var valueT =3D 0, valueL =3D 0;=0A= =0A= var element =3D forElement;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= =0A= // Safari fix=0A= if (element.offsetParent=3D=3Ddocument.body)=0A= if (Element.getStyle(element,'position')=3D=3D'absolute') break;=0A= =0A= } while (element =3D element.offsetParent);=0A= =0A= element =3D forElement;=0A= do {=0A= if (!window.opera || element.tagName=3D=3D'BODY') {=0A= valueT -=3D element.scrollTop || 0;=0A= valueL -=3D element.scrollLeft || 0;=0A= }=0A= } while (element =3D element.parentNode);=0A= =0A= return [valueL, valueT];=0A= },=0A= =0A= clone: function(source, target) {=0A= var options =3D Object.extend({=0A= setLeft: true,=0A= setTop: true,=0A= setWidth: true,=0A= setHeight: true,=0A= offsetTop: 0,=0A= offsetLeft: 0=0A= }, arguments[2] || {})=0A= =0A= // find page position of source=0A= source =3D $(source);=0A= var p =3D Position.page(source);=0A= =0A= // find coordinate system to use=0A= target =3D $(target);=0A= var delta =3D [0, 0];=0A= var parent =3D null;=0A= // delta [0,0] will do fine with position: fixed elements,=0A= // position:absolute needs offsetParent deltas=0A= if (Element.getStyle(target,'position') =3D=3D 'absolute') {=0A= parent =3D Position.offsetParent(target);=0A= delta =3D Position.page(parent);=0A= }=0A= =0A= // correct by body offsets (fixes Safari)=0A= if (parent =3D=3D document.body) {=0A= delta[0] -=3D document.body.offsetLeft;=0A= delta[1] -=3D document.body.offsetTop;=0A= }=0A= =0A= // set position=0A= if(options.setLeft) target.style.left =3D (p[0] - delta[0] + = options.offsetLeft) + 'px';=0A= if(options.setTop) target.style.top =3D (p[1] - delta[1] + = options.offsetTop) + 'px';=0A= if(options.setWidth) target.style.width =3D source.offsetWidth + = 'px';=0A= if(options.setHeight) target.style.height =3D source.offsetHeight + = 'px';=0A= },=0A= =0A= absolutize: function(element) {=0A= element =3D $(element);=0A= if (element.style.position =3D=3D 'absolute') return;=0A= Position.prepare();=0A= =0A= var offsets =3D Position.positionedOffset(element);=0A= var top =3D offsets[1];=0A= var left =3D offsets[0];=0A= var width =3D element.clientWidth;=0A= var height =3D element.clientHeight;=0A= =0A= element._originalLeft =3D left - parseFloat(element.style.left || = 0);=0A= element._originalTop =3D top - parseFloat(element.style.top || = 0);=0A= element._originalWidth =3D element.style.width;=0A= element._originalHeight =3D element.style.height;=0A= =0A= element.style.position =3D 'absolute';=0A= element.style.top =3D top + 'px';;=0A= element.style.left =3D left + 'px';;=0A= element.style.width =3D width + 'px';;=0A= element.style.height =3D height + 'px';;=0A= },=0A= =0A= relativize: function(element) {=0A= element =3D $(element);=0A= if (element.style.position =3D=3D 'relative') return;=0A= Position.prepare();=0A= =0A= element.style.position =3D 'relative';=0A= var top =3D parseFloat(element.style.top || 0) - = (element._originalTop || 0);=0A= var left =3D parseFloat(element.style.left || 0) - = (element._originalLeft || 0);=0A= =0A= element.style.top =3D top + 'px';=0A= element.style.left =3D left + 'px';=0A= element.style.height =3D element._originalHeight;=0A= element.style.width =3D element._originalWidth;=0A= }=0A= }=0A= =0A= // Safari returns margins on body which is incorrect if the child is = absolutely=0A= // positioned. For performance reasons, redefine = Position.cumulativeOffset for=0A= // KHTML/WebKit only.=0A= if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {=0A= Position.cumulativeOffset =3D function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= if (element.offsetParent =3D=3D document.body)=0A= if (Element.getStyle(element, 'position') =3D=3D 'absolute') = break;=0A= =0A= element =3D element.offsetParent;=0A= } while (element);=0A= =0A= return [valueL, valueT];=0A= }=0A= }=0A= =0A= Element.addMethods(); ------=_NextPart_000_0000_01C8B72A.A28EB4F0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.bmj.com/js/utils.js =0A= Object.extend(Event, {=0A= _domReady : function() {=0A= if (arguments.callee.done) return;=0A= arguments.callee.done =3D true;=0A= if (this._timer) clearInterval(this._timer);=0A= this._readyCallbacks.each(function(f) { f() });=0A= this._readyCallbacks =3D null;=0A= },=0A= =0A= onDOMReady : function(f) {=0A= if (!this._readyCallbacks) {=0A= var domReady =3D this._domReady.bind(this);=0A= =0A= if (document.addEventListener) = document.addEventListener("DOMContentLoaded", domReady, false);=0A= =0A= /*@cc_on @*/=0A= /*@if (@_win32)=0A= document.write("