From: "Saved by Windows Internet Explorer 8" Subject: Evening with Brian: "Censoring the Cell - How the Microscope is Abused by the Media" - McCrone Research Institute (McRI) - Chicago, IL Date: Sat, 19 Jun 2010 17:52:20 +0100 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01CB0FD8.2A599E60" X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6002.18197 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01CB0FD8.2A599E60 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://mcri.org/home/section/101-523-551/evening-with-brian:-%22banishing-the-microscope%22 =EF=BB=BF Evening with Brian: = "Censoring the Cell - How the Microscope is Abused by the Media" - = McCrone Research Institute (McRI) - Chicago, IL
Skip=20 to Content
  • Home
  • About
  • =
  • Courses=
  • Research
  • Publications<= /SPAN>
  • Inter/Micro
  • Contact
  • Past=20 Inter/Micro Conferences    |
  • Inter/M= icro=20 Contact    |
  • Inter/Micro=20 - The First 60 Years    |
  • Inter/Micr= o=20 2010    |
  • About=20 Inter/Micro    |
  • Register=20 for Inter/Micro 2010
  • Exhibitor=20 and Sponsor Registration
  • Workshop:=20 Animal Hair Identification
  • Hote= l=20 Reservations
  • Call=20 for Papers - Abstract Guidelines
  • Inter/Micro=20 2010 Photomicrography Competition
  • Pr= eliminary=20 Schedule
  • Eveni= ng=20 with Brian: "Censoring the Cell - How the Microscope is Abused by the=20 Media"
  • State=20 Microscopical Society of Illinois Awards Dinner
  • Transportation=20 Information
  • Exhibitors
  • Abstracts=

Evening with Brian: "Censoring the Cell - How the Microscope is = Abused by=20 the Media"

=

Inter/Micro 2010: 7 p.m., Monday,
July 12

=E2=80=9CCensoring the Cell =E2=80=93 How the Microscope is = Abused by the=20 Media=E2=80=9D
In his annual Inter/Micro evening = presentation, Professor=20 Brian J. Ford discusses why television ignores the microscope. Programs = cover=20 all the varied life forms, from wildebeests in Africa and sloths in the = Amazon=20 to penguins and walruses at the poles =E2=80=93 with one exception. = Microorganisms are=20 hardly ever seen. Documentary producers won=E2=80=99t screen programs on = the astonishing=20 world of the microscope, and television commentators seem convinced that = the=20 subject will not work on TV. Brian will show us what the viewer is = missing. This=20 event is free to all Inter/Micro attendees.

Prior to this event, there will be a Southern-style barbecue dinner = held in=20 the McCrone Research Institute gardens. All are welcome to mingle, but = those=20 dining must register and pay for the meal in advance; the price is $18 = per=20 person. Contact Therese Newman = for more=20 details.

Brian J. Ford is a leading authority on the = microscope=20 and a best-selling author who has presented his work on television and = radio.=20 Ford=E2=80=99s research is widely quoted in journals and encyclopedias, = and he is a=20 popular keynote speaker around the world. He has served as a fellow of = the Open=20 University, fellow and president of past students at Cardiff University, = visiting professor at Leicester University and an associate of Caius = College,=20 University of Cambridge. He is also a fellow of the Institute of Biology = and=20 president of the Cambridge Society for the Application of Research. Ford = has=20 given his =E2=80=9CEvening with Brian=E2=80=9D presentations at = Inter/Micro for more than 20=20 years.

Legal Sitemap Contact Us
=C2=A9 2010 McCrone Research=20 Institute     2820 South Michigan=20 Avenue    Chicago IL=20 60616-3230    312-842-7100 =
------=_NextPart_000_0000_01CB0FD8.2A599E60 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://mcri.org/CMSuploads/BJF-220-81247.jpg /9j/4AAQSkZJRgABAgEASABIAAD/4Q6XRXhpZgAASUkqAAgAAAAUAA8BAgAJAAAA/gAAABABAgAN AAAABwEAABIBAwABAAAAAQAAABoBBQABAAAAFAEAABsBBQABAAAAHAEAACgBAwABAAAAAgAAADEB AgAUAAAAJAEAADIBAgAUAAAAOAEAABMCAwABAAAAAgAAAJiCAgAFAAAATAEAAAGkAwABAAAAAAAA AAKkAwABAAAAAAAAAAOkAwABAAAAAAAAAAWkAwABAAAATAAAAAakAwABAAAAAAAAAAikAwABAAAA AAAAAAmkAwABAAAAAAAAAAqkAwABAAAAAAAAAAykAwABAAAAAAAAAGmHBAABAAAAVAEAABgDAABG VUpJRklMTQBGaW5lUGl4UzJQcm8ASAAAAAEAAABIAAAAAQAAAEFkb2JlIFBob3Rvc2hvcCA3LjAA MjAwNToxMDoxOCAxOTo0NjozMgAgICAgAAAAABsAmoIFAAEAAACeAgAAnYIFAAEAAACmAgAAIogD AAEAAAADAAAAJ4gDAAEAAADIAAAAAJAHAAQAAAAwMjIwA5ACABQAAACuAgAABJACABQAAADCAgAA AZEHAAQAAAABAgMAApEFAAEAAADWAgAAAZIKAAEAAADeAgAAApIFAAEAAADmAgAAA5IKAAEAAADu AgAABJIKAAEAAAD2AgAAB5IDAAEAAAAFAAAACJIDAAEAAAAAAAAACZIDAAEAAAAJAAAACpIFAAEA AAD+AgAAAKAHAAQAAAAwMTAwAaADAAEAAAABAAAAAqAEAAEAAABEBwAAA6AEAAEAAABECgAADqIF AAEAAAAGAwAAD6IFAAEAAAAOAwAAEKIDAAEAAAADAAAAF6IDAAEAAAACAAAAAKMHAAEAAAADAAAA AaMHAAEAAAABAAAAAAAAAAoAAABYAgAAngIAAGQAAAAyMDA1OjA3OjEzIDE4OjMyOjM3ADIwMDU6 MDc6MTMgMTg6MzI6MzcADwAAAAoAAABYAgAAZAAAACYCAABkAAAAdAAAAGQAAAAAAAAAZAAAAOwT AABkAAAAKgUAAAEAAAAqBQAAAQAAAAAABgADAQMAAQAAAAYAAAAaAQUAAQAAAGYDAAAbAQUAAQAA AG4DAAAoAQMAAQAAAAIAAAABAgQAAQAAAHYDAAACAgQAAQAAABkLAAAAAAAASAAAAAEAAABIAAAA AQAAAP/Y/+AAEEpGSUYAAQIBAEgASAAA/+0ADEFkb2JlX0NNAAH/7gAOQWRvYmUAZIAAAAAB/9sA hAAMCAgICQgMCQkMEQsKCxEVDwwMDxUYExMVExMYEQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwM DAwMDAwMDAwMAQ0LCw0ODRAODhAUDg4OFBQODg4OFBEMDAwMDBERDAwMDAwMEQwMDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAwMDAz/wAARCACAAFsDASIAAhEBAxEB/90ABAAG/8QBPwAAAQUBAQEBAQEA AAAAAAAAAwABAgQFBgcICQoLAQABBQEBAQEBAQAAAAAAAAABAAIDBAUGBwgJCgsQAAEEAQMCBAIF BwYIBQMMMwEAAhEDBCESMQVBUWETInGBMgYUkaGxQiMkFVLBYjM0coLRQwclklPw4fFjczUWorKD JkSTVGRFwqN0NhfSVeJl8rOEw9N14/NGJ5SkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2N0dXZ3eH l6e3x9fn9xEAAgIBAgQEAwQFBgcHBgU1AQACEQMhMRIEQVFhcSITBTKBkRShsUIjwVLR8DMkYuFy gpJDUxVjczTxJQYWorKDByY1wtJEk1SjF2RFVTZ0ZeLys4TD03Xj80aUpIW0lcTU5PSltcXV5fVW ZnaGlqa2xtbm9ic3R1dnd4eXp7fH/9oADAMBAAIRAxEAPwDmnX2yCXulugMmQPJAfY9xO5xcT46p OcogSU1kX1SAU2tUwxJSOCeNExb4I2zy1PCn9mv27hU+D32mElNYt1lMR2R9mpB08QoPbokhAfBI WHxTuEIR5RUnbYfFF9V0c9v4qo0os6fL+KCn/9Dj3H3Qp1iSgk6o9REJq9O1ojVWsbHrt1sd6bfG Jn+r+8qhs2M3RPkj47LXBr37tBLGjufH+Sgl28CvDreAKBYRyXHUf5q3qbq7MZzGA1f1HGAR+/WQ dq5nAoy7C1xJAOhA4PlK6XGxbRXJqLiO4P8A5inQkNknFI6hy+pYWPe13q1tF/Z/0Sf5QXMZFDqX mt3bg+IXb5mAywBxrdW7sZMf5n5q5/qnT9sgknuNNdNf+pSlXRXtzAsjR597UB3Ks2tgkHsq7kAg sBypyhlKfyIof//R4yPcUdg0Qo95+KPWE0rwmppbdYyt30ZBcB3Hguu6ZgU+m6y9rdxGjTEAdmj+ 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 PRsaxtN7HvALQdZEx23/ANhT6gSczIBMlrm66jQt3N+n9L+x+jUUY8OTTY7JuwhJ2sJ5gEoTfb7f DRPY4+np3IH3lRJ98+KmWtXqelJd5Jt3u+U/gl1L3Y5aOSQB8ZQfUbPI4jnvCb1U/wD/2f/tDnRQ aG90b3Nob3AgMy4wADhCSU0EBAdDYXB0aW9uAAAAEBwCAAACAAIcAnQABCAgICA4QklNA+0KUmVz b2x1dGlvbgAAAAAQAEgAAAABAAEASAAAAAEAAThCSU0EDRhGWCBHbG9iYWwgTGlnaHRpbmcgQW5n bGUAAAAABAAAAB44QklNBBkSRlggR2xvYmFsIEFsdGl0dWRlAAAAAAQAAAAeOEJJTQPzC1ByaW50 IEZsYWdzAAAACQAAAAAAAAAAAQA4QklNBAoOQ29weXJpZ2h0IEZsYWcAAAAAAQAAOEJJTScQFEph cGFuZXNlIFByaW50IEZsYWdzAAAAAAoAAQAAAAAAAAACOEJJTQP1F0NvbG9yIEhhbGZ0b25lIFNl dHRpbmdzAAAASAAvZmYAAQBsZmYABgAAAAAAAQAvZmYAAQChmZoABgAAAAAAAQAyAAAAAQBaAAAA BgAAAAAAAQA1AAAAAQAtAAAABgAAAAAAAThCSU0D+BdDb2xvciBUcmFuc2ZlciBTZXR0aW5ncwAA AHAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gA AAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAA OEJJTQQIBkd1aWRlcwAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHg1VUkwgb3ZlcnJpZGVzAAAA BAAAAAA4QklNBBoGU2xpY2VzAAAAAHsAAAAGAAAAAAAAAAAAAAE+AAAA3AAAAA0AQgBKAEYAbwBy AGQALQBjAG8AbABvAHUAcgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA3AAAAT4A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOEJJTQQUF0xheWVyIElEIEdlbmVyYXRv ciBCYXNlAAAABAAAAAE4QklNBAwVTmV3IFdpbmRvd3MgVGh1bWJuYWlsAAAKwQAAAAEAAABNAAAA cAAAAOgAAGWAAAAKpQAYAAH/2P/gABBKRklGAAECAQBIAEgAAP/uAA5BZG9iZQBkgAAAAAH/2wCE AAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwM DAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAwMDP/AABEIAHAATQMBIgACEQEDEQH/3QAEAAX/xAE/AAABBQEBAQEBAQAA AAAAAAADAAECBAUGBwgJCgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUH BggFAwwzAQACEQMEIRIxBUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMm RJNUZEXCo3Q2F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eX p7fH1+f3EQACAgECBAQDBAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKC kkNTFWNzNPElBhaisoMHJjXC0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZm doaWprbG1ub2JzdHV2d3h5ent8f/2gAMAwEAAhEDEQA/APOgZVitsjVVqtTCuVgJpZEldRcYGpK0 sXoxeR9qsFAcJjQuj+qFm1XxbFTQ+3ho/lLRpyrWvFcepY36ZB0JP7zk2+66r0D0nTfq50HQWbb5 GptDmtJPg6tzv+mq/UPqz057iylv2a1phpYS5rv6vqfnfyFb6Y6x2174rcRwJgj91zYdvV3KxzbV DLmtdqNQSD5M1Y9qlHCR0W8E72L57l4tmNaa3kOH5rxIB+/6Kp2NXV9Wwsq1v6du4a+6QCPk7/O+ kuZvqfWS14h0fxhMPgmiNxRaL2woI1gQe8JIf//Q85qlWq51KBUIVlkRrxyUwsodboXSBeGsdHqX +57iJDWfmj97e/8A6a6jH6Hh4t4a4TOmoAj5NWZ9XcotbdW9uy2rc9kiA9ns9Ozf/wBcWq3OFd4f l7n7xtbAJk6cD+1uRlwiI7lkwA8RJ2D0HTsXHZA9MOZ46nkKzdi4oYQKmtc7QaeCyD9Zen4vpi2t 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 pSpFr//ZADhCSU0EIRpWZXJzaW9uIGNvbXBhdGliaWxpdHkgaW5mbwAAAABVAAAAAQEAAAAPAEEA ZABvAGIAZQAgAFAAaABvAHQAbwBzAGgAbwBwAAAAEwBBAGQAbwBiAGUAIABQAGgAbwB0AG8AcwBo AG8AcAAgADYALgAwAAAAAQA4QklNBAYMSlBFRyBRdWFsaXR5AAAAAAcACAEBAAEBAP/iDFhJQ0Nf UFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAA AElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQA AAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRt bmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAA FG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8 AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABk ZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4x AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAA AAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVog AAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6 Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0y LjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0y LjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABk ZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAA AAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAAB WFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJz aWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBP AFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA 4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGS AZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQC jgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPH A9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkF WAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr Bz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8J ZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvh C/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO 0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIH EiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsV vRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3 Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYe QB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMK IzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8o cSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4W Lkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0 ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrv Oy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5C MEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mp SfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR 5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pW WqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Nj l2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20I bWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3 VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HN gjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqN MY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4 mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMel OKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHW skuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/ er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01 zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl 63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf6 5/t3/Af8mP0p/br+S/7c/23////uACFBZG9iZQBkQAAAAAEDABADAgMGAAAAAAAAAAAAAAAA/9sA hAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgID AwMDAwMDAwMDAQEBAQEBAQEBAQECAgECAgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD AwMDAwMDAwMDAwMDAwMDAwP/wgARCAE+ANwDAREAAhEBAxEB/8QA4wAAAQUAAwEBAQAAAAAAAAAA BgQFBwgJAgMKAQALAQABBAMBAQEAAAAAAAAAAAADAgQFBgABBwgJChAAAQQBBAICAgICAgMBAQAA AgEDBAUGABESBxMIISIUCTEVQRYyI0IkJRcZEQACAQMDAwMDAgQEBAYCAgMBAgMRBAUAIRIxEwZB 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 1//Z ------=_NextPart_000_0000_01CB0FD8.2A599E60 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://mcri.org/home/style.css BODY { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; FONT-FAMILY: Helvetica, Arial, Verdana, sans-serif; BACKGROUND: = url(/images/content.gif) #fff repeat-x; COLOR: #333333; FONT-SIZE: 90%; = PADDING-TOP: 0px } A { OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: medium; = COLOR: #436fe2; TEXT-DECORATION: none } A:hover { COLOR: #ff6600; TEXT-DECORATION: underline } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: = 0px } #mcri { PADDING-BOTTOM: 0px; MARGIN: auto; PADDING-LEFT: 0px; WIDTH: 890px; = PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: url(/images/main.gif) = #fff repeat-y; PADDING-TOP: 0px } .skip { DISPLAY: none } #mcri .mainbg { PADDING-BOTTOM: 0px; MIN-HEIGHT: 700px; PADDING-LEFT: 0px; WIDTH: = 890px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: = url(/images/mainbg.gif) repeat-x; PADDING-TOP: 0px } #mcri .content { PADDING-BOTTOM: 0px; MARGIN: auto; MIN-HEIGHT: 700px; PADDING-LEFT: = 0px; WIDTH: 800px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: = url(/images/content.gif) #fff repeat-x; PADDING-TOP: 0px } #mcri .header { MARGIN: 0px; WIDTH: 790px; DISPLAY: block; HEIGHT: 140px } #start-content UL LI { PADDING-BOTTOM: 10px; PADDING-LEFT: 15px; PADDING-RIGHT: 0px; DISPLAY: = block; FONT: 0.8em/1.6em Helvetica, Arial, Verdana, sans-serif; = BACKGROUND: url(/images/arrow.gif) no-repeat 0px 4px; COLOR: #687d69; = PADDING-TOP: 0px } #mcri .contact_info { POSITION: absolute; PADDING-BOTTOM: 10px; PADDING-LEFT: 120px; = PADDING-RIGHT: 0px; DISPLAY: block; FONT-SIZE: 0.8em; PADDING-TOP: 5px } #mcri .logo A { POSITION: absolute; TEXT-INDENT: -1000em; WIDTH: 143px; DISPLAY: block; = BACKGROUND: url(/images/logo.gif) no-repeat; HEIGHT: 139px } #mcri .logo P { POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 140px; = PADDING-RIGHT: 0px; DISPLAY: block; FONT-SIZE: 0.8em; PADDING-TOP: 0px } #mcri .search { FLOAT: right } #mcri .navigation { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; DISPLAY: block; CLEAR: both; PADDING-TOP: 0px } #mcri .nav1 { MARGIN: auto; WIDTH: 780px; DISPLAY: block } #mcri .nav1 UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 10px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } #mcri .nav1 UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; DISPLAY: inline; PADDING-TOP: 0px } #mcri .nav1 A { PADDING-BOTTOM: 0px; LINE-HEIGHT: 25px; MARGIN: 0px; PADDING-LEFT: 5px; = PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: = url(/images/menuleft.gif) no-repeat left top; FLOAT: left; COLOR: = #ffffff; FONT-SIZE: 0.9em; FONT-WEIGHT: bold; PADDING-TOP: 0px } #mcri .nav1 A SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 7px 0px 0px; PADDING-LEFT: 2px; = PADDING-RIGHT: 10px; DISPLAY: block; BACKGROUND: = url(/images/menuright.gif) no-repeat right top; HEIGHT: auto; = PADDING-TOP: 0px } #mcri .nav1 A SPAN { FLOAT: none } #mcri .nav1 A:hover { BACKGROUND-POSITION: 0px -100px; COLOR: #6c705a; TEXT-DECORATION: none } #mcri .nav1 A:hover SPAN { BACKGROUND-POSITION: 100% -100px } #mcri .navigation .on A { BACKGROUND: url(/images/menuleft2.gif) no-repeat left top; COLOR: = #ff6600; FONT-WEIGHT: bold } #mcri .navigation .on A SPAN { BACKGROUND: url(/images/menuright2.gif) no-repeat right top } #mcri .navigation .on A:hover { BACKGROUND-POSITION: left top; COLOR: #ff6600; TEXT-DECORATION: = underline } #mcri .navigation .on A:hover SPAN { BACKGROUND-POSITION: right top } #mcri .nav2 { PADDING-BOTTOM: 0px; MARGIN: auto; PADDING-LEFT: 0px; WIDTH: 780px; = PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: url(/images/menu.gif) = no-repeat; CLEAR: both; PADDING-TOP: 10px } #mcri .nav2a { PADDING-BOTTOM: 10px; MARGIN: 0px 0px 5px; PADDING-LEFT: 0px; WIDTH: = 780px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: = url(/images/menu1.gif) no-repeat left bottom; PADDING-TOP: 0px } #mcri .nav2a UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 15px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; = PADDING-TOP: 0px } #mcri .nav2a UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 10px; DISPLAY: = inline; COLOR: #cccccc; FONT-SIZE: 0.85em; PADDING-TOP: 0px } #mcri .nav2a A { DISPLAY: inline } #mcri .nav2a .on A { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 10px !important; = PADDING-RIGHT: 0px !important; BACKGROUND: url(/images/arrow.gif) = no-repeat 0px 4px; COLOR: #ff6600; FONT-WEIGHT: bold !important; = PADDING-TOP: 0px !important } #mcri .nav2a .on A:hover { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 10px !important; = PADDING-RIGHT: 0px !important; BACKGROUND: url(/images/arrow.gif) = no-repeat 0px 4px; COLOR: #ff6600; FONT-WEIGHT: bold !important; = PADDING-TOP: 0px !important } #mcri .nav2b { PADDING-BOTTOM: 35px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 780px; = PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: url(/images/menu2.gif) = no-repeat left bottom; PADDING-TOP: 0px } #mcri .no-arrow { MARGIN-BOTTOM: -30px; BACKGROUND: none transparent scroll repeat 0% 0% } #mcri .nav2b UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 15px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; = PADDING-TOP: 0px } #mcri .nav2b UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 10px; DISPLAY: = inline; COLOR: #dddddd; FONT-SIZE: 0.85em; PADDING-TOP: 0px } #mcri .nav2b A { DISPLAY: inline } #mcri .nav2b .on A { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; = PADDING-RIGHT: 0px !important; BACKGROUND: #fff; COLOR: #ff6600; = FONT-WEIGHT: bold !important; PADDING-TOP: 0px !important } #mcri .nav2b .on A:hover { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; = PADDING-RIGHT: 0px !important; BACKGROUND: #fff; COLOR: #ff6600; = FONT-WEIGHT: bold !important; PADDING-TOP: 0px !important } #mcri .nav3 { DISPLAY: block } #mcri .nav3 UL { PADDING-BOTTOM: 5px; LIST-STYLE-TYPE: none; MARGIN: 0px 0px 0px 10px; = PADDING-LEFT: 0px; WIDTH: 160px; PADDING-RIGHT: 0px; BACKGROUND: = url(/images/side.gif) #ffffff; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } #mcri .nav3 UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px 10px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: #fff; PADDING-TOP: 0px } #mcri .nav3 UL LI A { PADDING-BOTTOM: 5px; MARGIN: 0px 0px 10px; PADDING-LEFT: 10px; WIDTH: = 140px; PADDING-RIGHT: 0px; DISPLAY: block; FONT-SIZE: 0.85em; = PADDING-TOP: 3px } #mcri .nav3 .on A { COLOR: #ff6600 !important; FONT-WEIGHT: bold !important } #mcri .nav3a { PADDING-BOTTOM: 25px; PADDING-LEFT: 0px; WIDTH: 140px; PADDING-RIGHT: = 15px; DISPLAY: block; BACKGROUND: #fff; PADDING-TOP: 0px } #mcri .fourth { PADDING-BOTTOM: 0px; MARGIN: -10px 0px 0px 18px; PADDING-LEFT: 0px; = WIDTH: 150px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-RIGHT: #848970 = 1px dotted; PADDING-TOP: 0px } #mcri .fourth2 { PADDING-BOTTOM: 15px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; BACKGROUND: url(/images/fourth_level_arrow.gif) #fff no-repeat; = PADDING-TOP: 15px } #mcri .fourth UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; WIDTH: 150px; PADDING-RIGHT: 0px; DISPLAY: block; LIST-STYLE-IMAGE: = none; PADDING-TOP: 0px } #mcri .fourth UL LI { BORDER-BOTTOM: #c9cbbe 1px dotted; PADDING-BOTTOM: 1px; LINE-HEIGHT: = 14px; MARGIN: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; DISPLAY: = block; FONT-SIZE: 0.85em; PADDING-TOP: 1px } #mcri .fourth UL LI A { PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 15px; WIDTH: 125px; = PADDING-RIGHT: 10px; DISPLAY: block; PADDING-TOP: 5px } #mcri .fourth UL LI A:hover { BACKGROUND: url(/images/selected2.gif) no-repeat } #mcri .fourth .on A { DISPLAY: block; BACKGROUND: url(/images/selected.gif) no-repeat; COLOR: = #ff6600 !important; FONT-WEIGHT: bold !important } #mcri .sidenav { WIDTH: 160px; DISPLAY: block; FLOAT: left } #mcri .main { PADDING-BOTTOM: 0px; MARGIN: auto; PADDING-LEFT: 0px; WIDTH: 780px; = PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: url(/images/menu.gif) = no-repeat; CLEAR: both; PADDING-TOP: 10px } #mcri .mainbody { PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #ffffff; PADDING-LEFT: 15px; = PADDING-RIGHT: 20px; DISPLAY: block; PADDING-TOP: 10px } #mcri .head { TEXT-ALIGN: center; FONT: small-caps 1.6em Georgia; LETTER-SPACING: = 7px; COLOR: #666666 } #mcri .more { PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; FONT: bold = 1em Verdana, Arial, Helvetica, sans-serif; BACKGROUND: = url(/images/arrow.gif) no-repeat 0px 3px; COLOR: #aa8c46; PADDING-TOP: = 0px } #aggregate_article { MARGIN: auto; WIDTH: 785px; DISPLAY: block } .aggregate_article { PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 10px; WIDTH: 770px; = PADDING-RIGHT: 10px; DISPLAY: block; BACKGROUND: #ffffff; PADDING-TOP: = 20px } #article { PADDING-BOTTOM: 0px; MARGIN: 5px 0px 0px; PADDING-LEFT: 0px; WIDTH: = 595px; PADDING-RIGHT: 10px; DISPLAY: block; FLOAT: right; PADDING-TOP: = 0px } .article { PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 10px; WIDTH: 560px; = PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #ffffff; PADDING-TOP: = 0px } #article TABLE { WIDTH: 100% } #mcri .articleheading { DISPLAY: block; FLOAT: left } #mcri .register { PADDING-BOTTOM: 0px; MARGIN: 0px 10px 10px 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; DISPLAY: block; FLOAT: right; PADDING-TOP: 0px } #mcri .register IMG { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: = medium none; BORDER-RIGHT: medium none } #mcri .article .left { PADDING-BOTTOM: 0px; MARGIN: 0px 20px 0px 0px; PADDING-LEFT: 0px; = WIDTH: 150px; PADDING-RIGHT: 20px; FONT: 1em/1.6em Verdana, Arial, = Helvetica, sans-serif; FLOAT: left; PADDING-TOP: 0px } #mcri .article .right { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 20px; WIDTH: 150px; = PADDING-RIGHT: 0px; FONT: 1em/1.6em Verdana, Arial, Helvetica, = sans-serif; FLOAT: left; PADDING-TOP: 0px } .article UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 20px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; LIST-STYLE-IMAGE: = none; PADDING-TOP: 0px } .article UL LI { PADDING-BOTTOM: 10px; PADDING-LEFT: 15px; PADDING-RIGHT: 0px; DISPLAY: = block; FONT: 0.8em/1.6em Helvetica, Arial, Verdana, sans-serif; = BACKGROUND: url(/images/arrow.gif) no-repeat 0px 4px; COLOR: #687d69; = PADDING-TOP: 0px } .article OL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: decimal; MARGIN: 0px 0px 0px = 40px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; = PADDING-TOP: 0px } .article OL LI { PADDING-BOTTOM: 10px; MARGIN: 0px 0px 0px -6px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; FONT: 0.9em/1.8em Verdana, Arial, Helvetica, = sans-serif; COLOR: #333333; PADDING-TOP: 0px } .article .aggregate { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 10px 0px; = PADDING-LEFT: 0px; WIDTH: 550px; PADDING-RIGHT: 0px; FONT: 1em/1.4em = Verdana, Arial, Helvetica, sans-serif; CLEAR: both; LIST-STYLE-IMAGE: = none; PADDING-TOP: 0px; displpay: block } .article .aggregate LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .article .aggregate .title { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: 200px; = BACKGROUND: url(/images/bg2.gif) repeat-x 0px 0px; FLOAT: left; = FONT-SIZE: 0.85em; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .article .aggregate .title A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: = 10px; MARGIN: 0px 0px 10px; PADDING-LEFT: 10px; WIDTH: 180px; = PADDING-RIGHT: 10px; DISPLAY: block; BORDER-TOP: medium none; = BORDER-RIGHT: medium none; PADDING-TOP: 10px } .article .aggregate .title A:hover { BACKGROUND: url(/images/bg3.gif) #fcfbf5 repeat-x 0px 0px; COLOR: = #aa8c46; TEXT-DECORATION: none } .article .aggregate .title A EM { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 5px; MARGIN: 0px 0px = 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT: bold = 1.2em/1.5em Georgia, Times, Times New Roman, serif; COLOR: #4678c8; = PADDING-TOP: 0px } .aggregate_left { WIDTH: 275px; FLOAT: left; FONT-SIZE: 0.9em; BORDER-RIGHT: #ded9c7 1px = solid } .aggregate_left UL { MARGIN-LEFT: 0px } .aggregate_right { WIDTH: 275px; FLOAT: right; FONT-SIZE: 0.9em } .aggregate_right UL { WIDTH: 260px; DISPLAY: block; MARGIN-LEFT: 5px } .aggregate_right UL LI { BORDER-BOTTOM: #ded9c7 1px solid; PADDING-BOTTOM: 7px; DISPLAY: block; = MARGIN-BOTTOM: 5px; BACKGROUND: url(/images/arrow3.gif) no-repeat 0px = 5px } .aggregate_right UL LI STRONG { FONT-SIZE: 1.1em } #mcri P { MARGIN: 12px 0px; FONT: 0.9em/1.4em Helvetica, Arial, Verdana, = sans-serif; COLOR: #333333 } #mcri P A { TEXT-DECORATION: underline } #mcri P A:hover { BACKGROUND-COLOR: #fdffee } #mcri P EM { FONT-STYLE: italic } #mcri P STRONG { COLOR: #2e2e2e; FONT-SIZE: 1em; FONT-WEIGHT: bold } #mcri .highlight { BACKGROUND-COLOR: #ffffcc } #mcri H1 { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 25px; PADDING-LEFT: 0px; WIDTH: = 550px; PADDING-RIGHT: 0px; FONT: bold 1.6em/1em Lucida Sans Unicode, = Lucida Grande, Lucida Sans, Lucida, Helvetica, Arial, Verdana, = sans-serif; COLOR: #3357b0; PADDING-TOP: 0px } #mcri H2 { PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #fdffee; MARGIN: 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT: bold = 1.1em/1.3em Lucida Sans Unicode, Lucida Grande, Lucida Sans, Lucida, = Helvetica, Arial, Verdana, sans-serif; COLOR: #5d614e; PADDING-TOP: 5px } #mcri H3 { PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #fdffee; MARGIN: 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT: bold = 1em/1.15em Lucida Sans Unicode, Lucida Grande, Lucida Sans, Lucida, = Helvetica, Arial, Verdana, sans-serif; COLOR: #687d69; PADDING-TOP: 5px } #mcri H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; FONT: bold 1.1em/1.4em Georgia, Times, Times New Roman, serif; = COLOR: #666666; PADDING-TOP: 10px } #mcri .byline { PADDING-BOTTOM: 5px; LINE-HEIGHT: 1.4em; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; COLOR: #666666; FONT-SIZE: 0.85em; FONT-WEIGHT: = normal; PADDING-TOP: 10px } #mcri H5 { PADDING-BOTTOM: 0px; MARGIN: 10px 0px 5px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; FONT: 0.85em/1.4em Verdana, Arial, Helvetica, = sans-serif; COLOR: #333333; PADDING-TOP: 0px } #mcri H5 IMG { VERTICAL-ALIGN: middle } .form { DISPLAY: block; FONT: 0.85em/1.4em Verdana, Arial, Helvetica, = sans-serif; COLOR: #333333 } .form FIELDSET { BORDER-BOTTOM: #d2c896 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: = 10px; BACKGROUND-COLOR: #fafaf8; MARGIN: 5px 0px 0px; PADDING-LEFT: = 20px; PADDING-RIGHT: 20px; BORDER-TOP: #d2c896 1px solid; BORDER-RIGHT: = 0px; PADDING-TOP: 10px } .form LABEL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 10px; DISPLAY: = block; PADDING-TOP: 10px } .form LABEL SPAN { COLOR: #ee0000 } .form LABEL STRONG { COLOR: #666666; FONT-WEIGHT: bold } .form TEXTAREA { BORDER-BOTTOM: #d2c896 1px solid; BORDER-LEFT: #d2c896 1px solid; = PADDING-BOTTOM: 0px; MARGIN: 2px 0px 5px; PADDING-LEFT: 5px; = PADDING-RIGHT: 0px; FONT: 1em/1.4em Verdana, Arial, Helvetica, = sans-serif; BACKGROUND: url(/images/input.gif) #ffffff repeat-x; COLOR: = #786e64; BORDER-TOP: #d2c896 1px solid; BORDER-RIGHT: #d2c896 1px solid; = PADDING-TOP: 5px } .form INPUT { BORDER-BOTTOM: #d2c896 1px solid; BORDER-LEFT: #d2c896 1px solid; = PADDING-BOTTOM: 0px; MARGIN: 2px 0px 5px; PADDING-LEFT: 5px; WIDTH: = 200px; PADDING-RIGHT: 0px; FONT: 1em/1.4em Verdana, Arial, Helvetica, = sans-serif; BACKGROUND: url(/images/input.gif) #ffffff repeat-x; HEIGHT: = 17px; COLOR: #786e64; BORDER-TOP: #d2c896 1px solid; BORDER-RIGHT: = #d2c896 1px solid; PADDING-TOP: 3px } .form SELECT { BORDER-BOTTOM: #d2c896 1px solid; BORDER-LEFT: #d2c896 1px solid; = PADDING-BOTTOM: 2px; MARGIN: 2px 0px 5px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; FONT: 1em/1.4em Verdana, Arial, Helvetica, = sans-serif; COLOR: #786e64; BORDER-TOP: #d2c896 1px solid; BORDER-RIGHT: = #d2c896 1px solid; PADDING-TOP: 2px } .form .small { BORDER-BOTTOM: #d2c896 1px solid; BORDER-LEFT: #d2c896 1px solid; = PADDING-BOTTOM: 0px; MARGIN: 2px 0px 5px; PADDING-LEFT: 5px; WIDTH: = 100px; PADDING-RIGHT: 0px; FONT: 1em/1.4em Verdana, Arial, Helvetica, = sans-serif; BACKGROUND: url(/images/input.gif) #ffffff repeat-x; HEIGHT: = 17px; COLOR: #786e64; BORDER-TOP: #d2c896 1px solid; BORDER-RIGHT: = #d2c896 1px solid; PADDING-TOP: 5px } .form .option { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 5px 0px 0px; WIDTH: 15px; = FONT: 1em/1.4em Verdana, Arial, Helvetica, sans-serif; BACKGROUND: none = transparent scroll repeat 0% 0%; HEIGHT: 15px; BORDER-TOP: 0px; = BORDER-RIGHT: 0px } .form .button { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px = 0px 5px; PADDING-LEFT: 0px; WIDTH: 60px; PADDING-RIGHT: 0px; FONT: = 1em/1.4em Verdana, Arial, Helvetica, sans-serif; BACKGROUND: = url(/images/button.gif) no-repeat; HEIGHT: 20px; BORDER-TOP: 0px; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } #lightbox { Z-INDEX: 9999; POSITION: absolute; TEXT-ALIGN: left; MARGIN: -220px 0px = 0px -250px; WIDTH: 500px; DISPLAY: none; TOP: 50%; LEFT: 50% } [id]#lightbox { POSITION: fixed } #overlay { Z-INDEX: 5000; POSITION: absolute; FILTER: alpha(opacity=3D70); = BACKGROUND-COLOR: #333333; WIDTH: 100%; DISPLAY: none; HEIGHT: 100%; = TOP: 0px; LEFT: 0px; -moz-opacity: 0.7; opacity: .70 } [id]#overlay { POSITION: fixed } .done#lightbox #lbLoadMessage { DISPLAY: none } .done#lightbox #lbContent { DISPLAY: block } .loading#lightbox #lbContent { DISPLAY: none } .loading#lightbox #lbLoadMessage { DISPLAY: block } .done#lightbox IMG { WIDTH: 100%; HEIGHT: 100% } #mcri .footer { TEXT-ALIGN: right; PADDING-BOTTOM: 10px; PADDING-LEFT: 60px; WIDTH: = 770px; PADDING-RIGHT: 60px; DISPLAY: block; BACKGROUND: = url(/images/footer.gif) no-repeat; HEIGHT: 44px; CLEAR: both; FONT-SIZE: = 0.9em; PADDING-TOP: 10px } #mcri .footer A { PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = PADDING-TOP: 0px } #mcri .footer IMG { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; = VERTICAL-ALIGN: middle; PADDING-TOP: 0px } #address { DISPLAY: block; PADDING-TOP: 5px } #mcri .copyright { PADDING-BOTTOM: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: = block; FLOAT: left; FONT-SIZE: 0.85em; PADDING-TOP: 18px } #related_content { BORDER-BOTTOM: #cbcdc3 2px solid; PADDING-BOTTOM: 15px; MARGIN: 10px = 0px 15px 15px; PADDING-LEFT: 9px; WIDTH: 220px; PADDING-RIGHT: 9px; = DISPLAY: block; FONT: 0.85em/1.4em Arial, Verdana, sans-serif; = BACKGROUND: url(/images/related_content_bg.gif) #ffffff repeat-y; FLOAT: = right; PADDING-TOP: 9px } #related_content .caption { COLOR: #687d69; FONT-SIZE: 0.9em } #related_content .caption P { COLOR: #687d69; FONT-SIZE: 1em } #related_content .caption TABLE { MARGIN: auto } #related_content IMG { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: = 0px; MARGIN: 0px 0px 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; = PADDING-TOP: 0px } #related_content .AuthorizeNetSeal { MARGIN-BOTTOM: 20px } #related_content .course { PADDING-BOTTOM: 10px; MARGIN: 5px 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 1em; = BORDER-TOP: #cbcdc3 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 10px } #related_content TABLE { MARGIN: 10px 0px; FONT-WEIGHT: normal } #related_content .course UL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 15px; PADDING-RIGHT: = 0px; DISPLAY: block; PADDING-TOP: 0px } #related_content .course UL LI { PADDING-BOTTOM: 5px; LINE-HEIGHT: 1.6em; LIST-STYLE-TYPE: none; = PADDING-LEFT: 15px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: = url(/images/arrow1.gif) no-repeat 0px 4px; COLOR: #687d69; FONT-SIZE: = 0.9em; FONT-WEIGHT: normal; PADDING-TOP: 0px } .photo_wide { BORDER-BOTTOM: #dfd9c9 2px solid; PADDING-BOTTOM: 5px; MARGIN: 0px; = PADDING-LEFT: 5px; WIDTH: 560px; PADDING-RIGHT: 5px; DISPLAY: block; = FONT: 0.85em/1.4em Arial, Verdana, Helvetica, sans-serif; BACKGROUND: = #fdf9ec no-repeat center bottom; FLOAT: left; PADDING-TOP: 5px } .photo_wide IMG { PADDING-BOTTOM: 5px; MARGIN: auto; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; DISPLAY: block; PADDING-TOP: 5px } .image { VERTICAL-ALIGN: middle } .images { BORDER-BOTTOM: #d2c896 1px solid; BORDER-LEFT: #d2c896 1px solid; = PADDING-BOTTOM: 0px; MARGIN: 3px 15px 50px 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; DISPLAY: block; FLOAT: left; BORDER-TOP: #d2c896 1px = solid; BORDER-RIGHT: #d2c896 1px solid; PADDING-TOP: 0px } .hr { PADDING-BOTTOM: 0px; MARGIN: 5px 0px; PADDING-LEFT: 0px; WIDTH: 100%; = PADDING-RIGHT: 0px; DISPLAY: block; CLEAR: both; BORDER-TOP: #cccccc 1px = solid; PADDING-TOP: 0px } .left { DISPLAY: block; FLOAT: left } .right { DISPLAY: block; FLOAT: right } .bottom { CLEAR: both } .article .tabs { MARGIN: 20px 0px -20px 20px } .article .tabs LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: left; PADDING-TOP: 0px } .article .tabs LI A { BORDER-BOTTOM: #d2c896 1px solid; BORDER-LEFT: #d2c896 1px solid; = PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fafaf8; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; DISPLAY: block; MARGIN-BOTTOM: -1px; BORDER-TOP: = #d2c896 1px solid; MARGIN-RIGHT: 10px; BORDER-RIGHT: #d2c896 1px solid; = TEXT-DECORATION: none; PADDING-TOP: 0px } .article .tabs LI A:hover { TEXT-DECORATION: underline } .article .tabs LI.selected { POSITION: relative; _top: 1px } .article .tabs LI.selected A { BORDER-BOTTOM: #fafaf8 1px solid; COLOR: #aa8c46; FONT-WEIGHT: bold } .article .tabs LI.selected A:hover { TEXT-DECORATION: none } .article .tabcontentstyle { DISPLAY: block; CLEAR: both } .article .tabcontent { DISPLAY: none } .course TABLE { BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; = MARGIN: auto; FONT-SIZE: 0.9em; BORDER-TOP: #cccccc 1px solid; = BORDER-RIGHT: #cccccc 1px solid } .course .month { TEXT-TRANSFORM: uppercase; MARGIN: auto; LETTER-SPACING: 0.1em; COLOR: = #436fe2; FONT-SIZE: 1em; FONT-WEIGHT: bold } .course .monthname { TEXT-ALIGN: center; FONT-WEIGHT: bold } .course TABLE TR TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; = PADDING-TOP: 0px } .course TABLE TD { BORDER-BOTTOM: #fdfdee 1px solid; BORDER-LEFT: #ccc 1px solid; = BORDER-TOP: #ccc 1px solid } .course .dayname { PADDING-BOTTOM: 2px; TEXT-TRANSFORM: capitalize; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; BACKGROUND: #436fe2; LETTER-SPACING: 0px; COLOR: = #ffffff; FONT-SIZE: 1.1em; FONT-WEIGHT: bold; PADDING-TOP: 2px } .course .on { BACKGROUND: #687d69; COLOR: #ffffff } TABLE#register-form TD { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: = 3px; FONT-SIZE: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #eee 1px solid; = PADDING-TOP: 3px } TABLE#register-form TD.col1 { WIDTH: 160px } #mcri .homeheader { PADDING-BOTTOM: 10px; MIN-HEIGHT: 11em; PADDING-LEFT: 180px; = PADDING-RIGHT: 10px; DISPLAY: block; BACKGROUND: = url(/images/homepage.jpg) #2078e2 no-repeat; FLOAT: left; HEIGHT: auto; = PADDING-TOP: 50px } #mcri .homeheader H4 { PADDING-BOTTOM: 10px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; FONT: 1em/1.5em Lucida Sans Unicode, Lucida Grande, Lucida Sans, = Lucida, Helvetica, Arial, Verdana, sans-serif; BACKGROUND: none = transparent scroll repeat 0% 0%; COLOR: #ffffff; PADDING-TOP: 0px } #homebox_1 { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 8px; WIDTH: 175px; = PADDING-RIGHT: 8px; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; = PADDING-TOP: 8px } #homebox_2 { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 8px; WIDTH: 175px; = PADDING-RIGHT: 8px; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; = PADDING-TOP: 8px } #homebox_3 { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 8px; WIDTH: 175px; = PADDING-RIGHT: 8px; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; = PADDING-TOP: 8px } #homebox_4 { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 8px; WIDTH: 175px; = PADDING-RIGHT: 8px; FLOAT: left; PADDING-TOP: 8px } ------=_NextPart_000_0000_01CB0FD8.2A599E60 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://mcri.org/home/print.css BODY { FONT-FAMILY: Tahoma, Verdana, Arial, Helvetica, sans-serif; BACKGROUND: = none transparent scroll repeat 0% 0%; COLOR: #333333; FONT-SIZE: 95% } A { OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: medium; = COLOR: #4678c8; TEXT-DECORATION: none } A:hover { COLOR: #aa8c46; TEXT-DECORATION: underline } A:active { COLOR: #999999 } B { FONT-SIZE: 1.1em } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: = 0px } .skip { DISPLAY: none } P { MARGIN: 10px 0px; FONT: 0.85em/1.8em Arial, Verdana, Helvetica, = sans-serif; COLOR: #333333 } P A { TEXT-DECORATION: underline } H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 350px; = PADDING-RIGHT: 0px; COLOR: #666666; FONT-SIZE: 1.4em; FONT-WEIGHT: = normal; PADDING-TOP: 0px } H2 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 2em; MARGIN: 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; COLOR: #666666; FONT-SIZE: 1.1em; FONT-WEIGHT: bold; = PADDING-TOP: 5px } H3 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2em; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; COLOR: #666666; FONT-SIZE: 0.9em; FONT-WEIGHT: = bold; PADDING-TOP: 10px } H4 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2em; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; COLOR: #666666; FONT-SIZE: 0.8em; FONT-WEIGHT: = normal; PADDING-TOP: 0px } H5 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2em; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; COLOR: #666666; FONT-SIZE: 0.7em; FONT-WEIGHT: = normal; PADDING-TOP: 0px } #mcri { PADDING-BOTTOM: 0px; MARGIN: auto; PADDING-LEFT: 0px; WIDTH: 100%; = PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .mainbg { DISPLAY: block } .content { DISPLAY: block } .header { DISPLAY: none } #related_content { WIDTH: 100%; DISPLAY: block } #lightbox { DISPLAY: none } .sidenav { DISPLAY: none } .navigation { DISPLAY: none } .articlebody { PADDING-BOTTOM: 0px; MARGIN: 5px 0px 0px; PADDING-LEFT: 0px; WIDTH: = 610px; PADDING-RIGHT: 10px; DISPLAY: block; PADDING-TOP: 0px } .articlehead { PADDING-BOTTOM: 0px; PADDING-LEFT: 20px; WIDTH: 570px; PADDING-RIGHT: = 20px; HEIGHT: 100px; PADDING-TOP: 20px } .article { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #ffffff; MARGIN: -10px 0px; = PADDING-LEFT: 20px; WIDTH: 570px; PADDING-RIGHT: 20px; PADDING-TOP: 0px } .article2 { WIDTH: 610px; DISPLAY: block; HEIGHT: 40px } .articleheading { FLOAT: left } .footer { TEXT-ALIGN: right; PADDING-BOTTOM: 10px; MARGIN: auto; PADDING-LEFT: = 60px; WIDTH: 100%; PADDING-RIGHT: 60px; DISPLAY: block; BACKGROUND: none = transparent scroll repeat 0% 0%; CLEAR: both; FONT-SIZE: 0.7em; = PADDING-TOP: 10px } .copyright { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: = block; FLOAT: left; PADDING-TOP: 20px } .image { BORDER-BOTTOM: #d2c896 1px solid; BORDER-LEFT: #d2c896 1px solid; = MARGIN: 0px 0px 5px; DISPLAY: block; BORDER-TOP: #d2c896 1px solid; = BORDER-RIGHT: #d2c896 1px solid } HR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 100%; BORDER-TOP: 0px; = BORDER-RIGHT: 0px } HR.hr { BACKGROUND-COLOR: #eeeada; HEIGHT: 1px; COLOR: #eeeada } .left { FLOAT: left } .right { FLOAT: right } .bottom { CLEAR: both } .list { PADDING-BOTTOM: 0px; MARGIN: 0px 20px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .list LI { PADDING-BOTTOM: 10px; LIST-STYLE-TYPE: square; PADDING-LEFT: 15px; = PADDING-RIGHT: 0px; DISPLAY: block; FONT: 0.8em/1.8em Arial, Helvetica, = sans-serif; COLOR: #333333; PADDING-TOP: 0px } ------=_NextPart_000_0000_01CB0FD8.2A599E60 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://mcri.org/scripts/sifr/sIFR-screen.css .sIFR-active H1 { FONT: bold 1.6em/1em Lucida Sans Unicode, Lucida Grande, Lucida Sans, = Lucida, Helvetica, Arial, Verdana, sans-serif; VISIBILITY: hidden; = COLOR: #3357b0 } .sIFR-flash { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; VISIBILITY: visible !important; PADDING-TOP: 0px } .sIFR-replaced { VISIBILITY: visible !important } .sIFR-alternate { POSITION: absolute; WIDTH: 0px; DISPLAY: block; HEIGHT: 0px; OVERFLOW: = hidden; TOP: 0px; LEFT: 0px } .sIFR-replaced > DIV { DISPLAY: none !important } ------=_NextPart_000_0000_01CB0FD8.2A599E60 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://mcri.org/scripts/sifr/sIFR-print.css .sIFR-flash { POSITION: absolute; WIDTH: 0px; DISPLAY: none !important; HEIGHT: 0px; = OVERFLOW: hidden } .sIFR-alternate { POSITION: static !important; DISPLAY: block !important; VISIBILITY: = visible !important; TOP: auto !important; LEFT: auto !important } ------=_NextPart_000_0000_01CB0FD8.2A599E60 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://mcri.org/scripts/script.js var user_agent =3D navigator.userAgent.toLowerCase(); function setTextSize(size) { if(document.getElementsByTagName) { var bodyTag =3D document.getElementsByTagName("body"); var textsize =3D document.getElementById('textsize'); =09 if(bodyTag && textsize) { =09 switch(size) { case "small":=20 document.getElementById('medium').className =3D "medium"; document.getElementById('large').className =3D "large"; bodyTag.item(0).style.fontSize =3D "74%"; =09 break; case "medium":=20 document.getElementById('small').className =3D "small"; document.getElementById('large').className =3D "large"; bodyTag.item(0).style.fontSize =3D "82%"; break; case "large":=20 document.getElementById('small').className =3D "small"; document.getElementById('medium').className =3D "medium"; bodyTag.item(0).style.fontSize =3D "96%"; break; } document.getElementById(size).className +=3D " selected"; =09 // Set code to add this setting to a cookie; Invalidate the cookie = after session? setCookie("textsize", size, null, "/", "", null); } } } function setCookie(name, value, expires, path, domain, secure) { var curCookie =3D name + "=3D" + escape(value) + ((expires) ? "; expires=3D" + expires.toGMTString() : "") + ((path) ? "; path=3D" + path : "") + ((domain) ? "; domain=3D" + domain : "") + ((secure) ? "; secure" : ""); document.cookie =3D curCookie; /* internet explorer on windows needs a refresh upon setting the cookie,=20 so we need to do something like this: if (document.all && user_agent.indexOf("Opera") =3D=3D -1) { history.go(0); } but, ie win just spits this up too. */ } function getCookie(name) { var dc =3D document.cookie; var prefix =3D name + "=3D"; var begin =3D dc.indexOf("; " + prefix); if (begin =3D=3D -1) { begin =3D dc.indexOf(prefix); if (begin !=3D 0) return null; } else begin +=3D 2; var end =3D document.cookie.indexOf(";", begin); if (end =3D=3D -1) end =3D dc.length; return unescape(dc.substring(begin + prefix.length, end)); } /************************ start: Form Validation = ***********************************/ function checkReqForm () { if (document.emailform.comment_name.value =3D=3D "") { alert("Please enter your name"); document.emailform.comment_name.focus(); return false; } else if (document.emailform.comment_email.value =3D=3D "") { alert("Please enter your email address"); document.emailform.comment_email.focus(); return false; } else if (! = (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(document.emailform.= comment_email.value)) ) { alert("Invalid email address! Please re-enter.") document.emailform.comment_email.focus(); return false; } else if (document.emailform.friend_email.value =3D=3D "") { alert("Please enter your friend's email address"); document.emailform.friend_email.focus(); return false; } else if (! = (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(document.emailform.= friend_email.value)) ) { alert("Invalid email address! Please re-enter.") document.emailform.friend_email.focus(); return false; } else { return true; } } /************************ end: Form Validation = *************************************/ var enabletabpersistence=3D1 //enable tab persistence via session only = cookies, so selected tab is remembered? ////NO NEED TO EDIT BELOW//////////////////////// var tabcontentIDs=3Dnew Object() function expandcontent(linkobj){ var ulid=3Dlinkobj.parentNode.parentNode.id //id of UL element var ullist=3Ddocument.getElementById(ulid).getElementsByTagName("li") = //get list of LIs corresponding to the tab contents for (var i=3D0; i -1, Gecko: navigator.userAgent.indexOf('Gecko') > -1 && = navigator.userAgent.indexOf('KHTML') =3D=3D -1, MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) }, BrowserFeatures: { XPath: !!document.evaluate, ElementExtensions: !!window.HTMLElement, SpecificElementExtensions: document.createElement('div').__proto__ && document.createElement('div').__proto__ !=3D=3D document.createElement('form').__proto__ }, ScriptFragment: ']*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions =3D false; if (Prototype.Browser.WebKit) Prototype.BrowserFeatures.XPath =3D false; /* Based on Alex Arnell's inheritance implementation. */ var Class =3D { create: function() { var parent =3D null, properties =3D $A(arguments); if (Object.isFunction(properties[0])) parent =3D properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass =3D parent; klass.subclasses =3D []; if (parent) { var subclass =3D function() { }; subclass.prototype =3D parent.prototype; klass.prototype =3D new subclass; parent.subclasses.push(klass); } for (var i =3D 0; i < properties.length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize =3D Prototype.emptyFunction; klass.prototype.constructor =3D klass; return klass; } }; Class.Methods =3D { addMethods: function(source) { var ancestor =3D this.superclass && this.superclass.prototype; var properties =3D Object.keys(source); if (!Object.keys({ toString: true }).length) properties.push("toString", "valueOf"); for (var i =3D 0, length =3D properties.length; i < length; i++) { var property =3D properties[i], value =3D source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames().first() =3D=3D "$super") { var method =3D value, value =3D Object.extend((function(m) { return function() { return ancestor[m].apply(this, arguments) = }; })(property).wrap(method), { valueOf: function() { return method }, toString: function() { return method.toString() } }); } this.prototype[property] =3D value; } return this; } }; var Abstract =3D { }; Object.extend =3D function(destination, source) { for (var property in source) destination[property] =3D source[property]; return destination; }; Object.extend(Object, { inspect: function(object) { try { if (object =3D=3D=3D undefined) return 'undefined'; if (object =3D=3D=3D null) return 'null'; return object.inspect ? object.inspect() : object.toString(); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } }, toJSON: function(object) { var type =3D typeof object; switch (type) { case 'undefined': case 'function': case 'unknown': return; case 'boolean': return object.toString(); } if (object =3D=3D=3D null) return 'null'; if (object.toJSON) return object.toJSON(); if (Object.isElement(object)) return; var results =3D []; for (var property in object) { var value =3D Object.toJSON(object[property]); if (value !=3D=3D undefined) results.push(property.toJSON() + ': ' + value); } return '{' + results.join(', ') + '}'; }, toQueryString: function(object) { return $H(object).toQueryString(); }, toHTML: function(object) { return object && object.toHTML ? object.toHTML() : = String.interpret(object); }, keys: function(object) { var keys =3D []; for (var property in object) keys.push(property); return keys; }, values: function(object) { var values =3D []; for (var property in object) values.push(object[property]); return values; }, clone: function(object) { return Object.extend({ }, object); }, isElement: function(object) { return object && object.nodeType =3D=3D 1; }, isArray: function(object) { return object && object.constructor =3D=3D=3D Array; }, isHash: function(object) { return object instanceof Hash; }, isFunction: function(object) { return typeof object =3D=3D "function"; }, isString: function(object) { return typeof object =3D=3D "string"; }, isNumber: function(object) { return typeof object =3D=3D "number"; }, isUndefined: function(object) { return typeof object =3D=3D "undefined"; } }); Object.extend(Function.prototype, { argumentNames: function() { var names =3D = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").inv= oke("strip"); return names.length =3D=3D 1 && !names[0] ? [] : names; }, bind: function() { if (arguments.length < 2 && arguments[0] =3D=3D=3D undefined) return = this; var __method =3D this, args =3D $A(arguments), object =3D = args.shift(); return function() { return __method.apply(object, args.concat($A(arguments))); } }, bindAsEventListener: function() { var __method =3D this, args =3D $A(arguments), object =3D = args.shift(); return function(event) { return __method.apply(object, [event || = window.event].concat(args)); } }, curry: function() { if (!arguments.length) return this; var __method =3D this, args =3D $A(arguments); return function() { return __method.apply(this, args.concat($A(arguments))); } }, delay: function() { var __method =3D this, args =3D $A(arguments), timeout =3D = args.shift() * 1000; return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); }, wrap: function(wrapper) { var __method =3D this; return function() { return wrapper.apply(this, = [__method.bind(this)].concat($A(arguments))); } }, methodize: function() { if (this._methodized) return this._methodized; var __method =3D this; return this._methodized =3D function() { return __method.apply(null, [this].concat($A(arguments))); }; } }); Function.prototype.defer =3D Function.prototype.delay.curry(0.01); Date.prototype.toJSON =3D function() { return '"' + this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z"'; }; var Try =3D { these: function() { var returnValue; for (var i =3D 0, length =3D arguments.length; i < length; i++) { var lambda =3D arguments[i]; try { returnValue =3D lambda(); break; } catch (e) { } } return returnValue; } }; RegExp.prototype.match =3D RegExp.prototype.test; RegExp.escape =3D function(str) { return String(str).replace(/([.*+?^=3D!:${}()|[\]\/\\])/g, '\\$1'); }; /*-----------------------------------------------------------------------= ---*/ var PeriodicalExecuter =3D Class.create({ initialize: function(callback, frequency) { this.callback =3D callback; this.frequency =3D frequency; this.currentlyExecuting =3D false; this.registerCallback(); }, registerCallback: function() { this.timer =3D setInterval(this.onTimerEvent.bind(this), = this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer =3D null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting =3D true; this.execute(); } finally { this.currentlyExecuting =3D false; } } } }); Object.extend(String, { interpret: function(value) { return value =3D=3D null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, { gsub: function(pattern, replacement) { var result =3D '', source =3D this, match; replacement =3D arguments.callee.prepareReplacement(replacement); while (source.length > 0) { if (match =3D source.match(pattern)) { result +=3D source.slice(0, match.index); result +=3D String.interpret(replacement(match)); source =3D source.slice(match.index + match[0].length); } else { result +=3D source, source =3D ''; } } return result; }, sub: function(pattern, replacement, count) { replacement =3D this.gsub.prepareReplacement(replacement); count =3D count =3D=3D=3D undefined ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); }, scan: function(pattern, iterator) { this.gsub(pattern, iterator); return String(this); }, truncate: function(length, truncation) { length =3D length || 30; truncation =3D truncation =3D=3D=3D undefined ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : = String(this); }, strip: function() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); }, stripTags: function() { return this.replace(/<\/?[^>]+>/gi, ''); }, stripScripts: function() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), = ''); }, extractScripts: function() { var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img'); var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); }, evalScripts: function() { return this.extractScripts().map(function(script) { return = eval(script) }); }, escapeHTML: function() { var self =3D arguments.callee; self.text.data =3D this; return self.div.innerHTML; }, unescapeHTML: function() { var div =3D new Element('div'); div.innerHTML =3D this.stripTags(); return div.childNodes[0] ? (div.childNodes.length > 1 ? $A(div.childNodes).inject('', function(memo, node) { return = memo+node.nodeValue }) : div.childNodes[0].nodeValue) : ''; }, toQueryParams: function(separator) { var match =3D this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, = pair) { if ((pair =3D pair.split('=3D'))[0]) { var key =3D decodeURIComponent(pair.shift()); var value =3D pair.length > 1 ? pair.join('=3D') : pair[0]; if (value !=3D undefined) value =3D decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] =3D [hash[key]]; hash[key].push(value); } else hash[key] =3D value; } return hash; }); }, toArray: function() { return this.split(''); }, succ: function() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); }, times: function(count) { return count < 1 ? '' : new Array(count + 1).join(this); }, camelize: function() { var parts =3D this.split('-'), len =3D parts.length; if (len =3D=3D 1) return parts[0]; var camelized =3D this.charAt(0) =3D=3D '-' ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) : parts[0]; for (var i =3D 1; i < len; i++) camelized +=3D parts[i].charAt(0).toUpperCase() + = parts[i].substring(1); return camelized; }, capitalize: function() { return this.charAt(0).toUpperCase() + = this.substring(1).toLowerCase(); }, underscore: function() { return this.gsub(/::/, = '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{= 1}_#{2}').gsub(/-/,'_').toLowerCase(); }, dasherize: function() { return this.gsub(/_/,'-'); }, inspect: function(useDoubleQuotes) { var escapedString =3D this.gsub(/[\x00-\x1f\\]/, function(match) { var character =3D String.specialChar[match[0]]; return character ? character : '\\u00' + = match[0].charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') = + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; }, toJSON: function() { return this.inspect(true); }, unfilterJSON: function(filter) { return this.sub(filter || Prototype.JSONFilter, '#{1}'); }, isJSON: function() { var str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''); return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); }, evalJSON: function(sanitize) { var json =3D this.unfilterJSON(); try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + = this.inspect()); }, include: function(pattern) { return this.indexOf(pattern) > -1; }, startsWith: function(pattern) { return this.indexOf(pattern) =3D=3D=3D 0; }, endsWith: function(pattern) { var d =3D this.length - pattern.length; return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d; }, empty: function() { return this =3D=3D ''; }, blank: function() { return /^\s*$/.test(this); }, interpolate: function(object, pattern) { return new Template(this, pattern).evaluate(object); } }); if (Prototype.Browser.WebKit || Prototype.Browser.IE) = Object.extend(String.prototype, { escapeHTML: function() { return = this.replace(/&/g,'&').replace(//g,'>'); }, unescapeHTML: function() { return = this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>'); } }); String.prototype.gsub.prepareReplacement =3D function(replacement) { if (Object.isFunction(replacement)) return replacement; var template =3D new Template(replacement); return function(match) { return template.evaluate(match) }; }; String.prototype.parseQuery =3D String.prototype.toQueryParams; Object.extend(String.prototype.escapeHTML, { div: document.createElement('div'), text: document.createTextNode('') }); with (String.prototype.escapeHTML) div.appendChild(text); var Template =3D Class.create({ initialize: function(template, pattern) { this.template =3D template.toString(); this.pattern =3D pattern || Template.Pattern; }, evaluate: function(object) { if (Object.isFunction(object.toTemplateReplacements)) object =3D object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object =3D=3D null) return ''; var before =3D match[1] || ''; if (before =3D=3D '\\') return match[2]; var ctx =3D object, expr =3D match[3]; var pattern =3D /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/, match = =3D pattern.exec(expr); if (match =3D=3D null) return before; while (match !=3D null) { var comp =3D match[1].startsWith('[') ? match[2].gsub('\\\\]', = ']') : match[1]; ctx =3D ctx[comp]; if (null =3D=3D ctx || '' =3D=3D match[3]) break; expr =3D expr.substring('[' =3D=3D match[3] ? match[1].length : = match[0].length); match =3D pattern.exec(expr); } return before + String.interpret(ctx); }.bind(this)); } }); Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/; var $break =3D { }; var Enumerable =3D { each: function(iterator, context) { var index =3D 0; iterator =3D iterator.bind(context); try { this._each(function(value) { iterator(value, index++); }); } catch (e) { if (e !=3D $break) throw e; } return this; }, eachSlice: function(number, iterator, context) { iterator =3D iterator ? iterator.bind(context) : Prototype.K; var index =3D -number, slices =3D [], array =3D this.toArray(); while ((index +=3D number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); }, all: function(iterator, context) { iterator =3D iterator ? iterator.bind(context) : Prototype.K; var result =3D true; this.each(function(value, index) { result =3D result && !!iterator(value, index); if (!result) throw $break; }); return result; }, any: function(iterator, context) { iterator =3D iterator ? iterator.bind(context) : Prototype.K; var result =3D false; this.each(function(value, index) { if (result =3D !!iterator(value, index)) throw $break; }); return result; }, collect: function(iterator, context) { iterator =3D iterator ? iterator.bind(context) : Prototype.K; var results =3D []; this.each(function(value, index) { results.push(iterator(value, index)); }); return results; }, detect: function(iterator, context) { iterator =3D iterator.bind(context); var result; this.each(function(value, index) { if (iterator(value, index)) { result =3D value; throw $break; } }); return result; }, findAll: function(iterator, context) { iterator =3D iterator.bind(context); var results =3D []; this.each(function(value, index) { if (iterator(value, index)) results.push(value); }); return results; }, grep: function(filter, iterator, context) { iterator =3D iterator ? iterator.bind(context) : Prototype.K; var results =3D []; if (Object.isString(filter)) filter =3D new RegExp(filter); this.each(function(value, index) { if (filter.match(value)) results.push(iterator(value, index)); }); return results; }, include: function(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) !=3D -1) return true; var found =3D false; this.each(function(value) { if (value =3D=3D object) { found =3D true; throw $break; } }); return found; }, inGroupsOf: function(number, fillWith) { fillWith =3D fillWith =3D=3D=3D undefined ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); }, inject: function(memo, iterator, context) { iterator =3D iterator.bind(context); this.each(function(value, index) { memo =3D iterator(memo, value, index); }); return memo; }, invoke: function(method) { var args =3D $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); }, max: function(iterator, context) { iterator =3D iterator ? iterator.bind(context) : Prototype.K; var result; this.each(function(value, index) { value =3D iterator(value, index); if (result =3D=3D undefined || value >=3D result) result =3D value; }); return result; }, min: function(iterator, context) { iterator =3D iterator ? iterator.bind(context) : Prototype.K; var result; this.each(function(value, index) { value =3D iterator(value, index); if (result =3D=3D undefined || value < result) result =3D value; }); return result; }, partition: function(iterator, context) { iterator =3D iterator ? iterator.bind(context) : Prototype.K; var trues =3D [], falses =3D []; this.each(function(value, index) { (iterator(value, index) ? trues : falses).push(value); }); return [trues, falses]; }, pluck: function(property) { var results =3D []; this.each(function(value) { results.push(value[property]); }); return results; }, reject: function(iterator, context) { iterator =3D iterator.bind(context); var results =3D []; this.each(function(value, index) { if (!iterator(value, index)) results.push(value); }); return results; }, sortBy: function(iterator, context) { iterator =3D iterator.bind(context); return this.map(function(value, index) { return {value: value, criteria: iterator(value, index)}; }).sort(function(left, right) { var a =3D left.criteria, b =3D right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); }, toArray: function() { return this.map(); }, zip: function() { var iterator =3D Prototype.K, args =3D $A(arguments); if (Object.isFunction(args.last())) iterator =3D args.pop(); var collections =3D [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); }, size: function() { return this.toArray().length; }, inspect: function() { return '#'; } }; Object.extend(Enumerable, { map: Enumerable.collect, find: Enumerable.detect, select: Enumerable.findAll, filter: Enumerable.findAll, member: Enumerable.include, entries: Enumerable.toArray, every: Enumerable.all, some: Enumerable.any }); function $A(iterable) { if (!iterable) return []; if (iterable.toArray) return iterable.toArray(); var length =3D iterable.length, results =3D new Array(length); while (length--) results[length] =3D iterable[length]; return results; } if (Prototype.Browser.WebKit) { function $A(iterable) { if (!iterable) return []; if (!(Object.isFunction(iterable) && iterable =3D=3D '[object = NodeList]') && iterable.toArray) return iterable.toArray(); var length =3D iterable.length, results =3D new Array(length); while (length--) results[length] =3D iterable[length]; return results; } } Array.from =3D $A; Object.extend(Array.prototype, Enumerable); if (!Array.prototype._reverse) Array.prototype._reverse =3D = Array.prototype.reverse; Object.extend(Array.prototype, { _each: function(iterator) { for (var i =3D 0, length =3D this.length; i < length; i++) iterator(this[i]); }, clear: function() { this.length =3D 0; return this; }, first: function() { return this[0]; }, last: function() { return this[this.length - 1]; }, compact: function() { return this.select(function(value) { return value !=3D null; }); }, flatten: function() { return this.inject([], function(array, value) { return array.concat(Object.isArray(value) ? value.flatten() : [value]); }); }, without: function() { var values =3D $A(arguments); return this.select(function(value) { return !values.include(value); }); }, reverse: function(inline) { return (inline !=3D=3D false ? this : this.toArray())._reverse(); }, reduce: function() { return this.length > 1 ? this : this[0]; }, uniq: function(sorted) { return this.inject([], function(array, value, index) { if (0 =3D=3D index || (sorted ? array.last() !=3D value : = !array.include(value))) array.push(value); return array; }); }, intersect: function(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item =3D=3D=3D value = }); }); }, clone: function() { return [].concat(this); }, size: function() { return this.length; }, inspect: function() { return '[' + this.map(Object.inspect).join(', ') + ']'; }, toJSON: function() { var results =3D []; this.each(function(object) { var value =3D Object.toJSON(object); if (value !=3D=3D undefined) results.push(value); }); return '[' + results.join(', ') + ']'; } }); // use native browser JS 1.6 implementation if available if (Object.isFunction(Array.prototype.forEach)) Array.prototype._each =3D Array.prototype.forEach; if (!Array.prototype.indexOf) Array.prototype.indexOf =3D function(item, = i) { i || (i =3D 0); var length =3D this.length; if (i < 0) i =3D length + i; for (; i < length; i++) if (this[i] =3D=3D=3D item) return i; return -1; }; if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf =3D = function(item, i) { i =3D isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n =3D this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; }; Array.prototype.toArray =3D Array.prototype.clone; function $w(string) { if (!Object.isString(string)) return []; string =3D string.strip(); return string ? string.split(/\s+/) : []; } if (Prototype.Browser.Opera){ Array.prototype.concat =3D function() { var array =3D []; for (var i =3D 0, length =3D this.length; i < length; i++) = array.push(this[i]); for (var i =3D 0, length =3D arguments.length; i < length; i++) { if (Object.isArray(arguments[i])) { for (var j =3D 0, arrayLength =3D arguments[i].length; j < = arrayLength; j++) array.push(arguments[i][j]); } else { array.push(arguments[i]); } } return array; }; } Object.extend(Number.prototype, { toColorPart: function() { return this.toPaddedString(2, 16); }, succ: function() { return this + 1; }, times: function(iterator) { $R(0, this, true).each(iterator); return this; }, toPaddedString: function(length, radix) { var string =3D this.toString(radix || 10); return '0'.times(length - string.length) + string; }, toJSON: function() { return isFinite(this) ? this.toString() : 'null'; } }); $w('abs round ceil floor').each(function(method){ Number.prototype[method] =3D Math[method].methodize(); }); function $H(object) { return new Hash(object); }; var Hash =3D Class.create(Enumerable, (function() { if (function() { var i =3D 0, Test =3D function(value) { this.key =3D value }; Test.prototype.key =3D 'foo'; for (var property in new Test('bar')) i++; return i > 1; }()) { function each(iterator) { var cache =3D []; for (var key in this._object) { var value =3D this._object[key]; if (cache.include(key)) continue; cache.push(key); var pair =3D [key, value]; pair.key =3D key; pair.value =3D value; iterator(pair); } } } else { function each(iterator) { for (var key in this._object) { var value =3D this._object[key], pair =3D [key, value]; pair.key =3D key; pair.value =3D value; iterator(pair); } } } function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=3D' + encodeURIComponent(String.interpret(value)); } return { initialize: function(object) { this._object =3D Object.isHash(object) ? object.toObject() : = Object.clone(object); }, _each: each, set: function(key, value) { return this._object[key] =3D value; }, get: function(key) { return this._object[key]; }, unset: function(key) { var value =3D this._object[key]; delete this._object[key]; return value; }, toObject: function() { return Object.clone(this._object); }, keys: function() { return this.pluck('key'); }, values: function() { return this.pluck('value'); }, index: function(value) { var match =3D this.detect(function(pair) { return pair.value =3D=3D=3D value; }); return match && match.key; }, merge: function(object) { return this.clone().update(object); }, update: function(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); }, toQueryString: function() { return this.map(function(pair) { var key =3D encodeURIComponent(pair.key), values =3D pair.value; if (values && typeof values =3D=3D 'object') { if (Object.isArray(values)) return values.map(toQueryPair.curry(key)).join('&'); } return toQueryPair(key, values); }).join('&'); }, inspect: function() { return '#'; }, toJSON: function() { return Object.toJSON(this.toObject()); }, clone: function() { return new Hash(this); } } })()); Hash.prototype.toTemplateReplacements =3D Hash.prototype.toObject; Hash.from =3D $H; var ObjectRange =3D Class.create(Enumerable, { initialize: function(start, end, exclusive) { this.start =3D start; this.end =3D end; this.exclusive =3D exclusive; }, _each: function(iterator) { var value =3D this.start; while (this.include(value)) { iterator(value); value =3D value.succ(); } }, include: function(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <=3D this.end; } }); var $R =3D function(start, end, exclusive) { return new ObjectRange(start, end, exclusive); }; var Ajax =3D { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders =3D { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders =3D this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, = json]); } catch (e) { } } }); } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base =3D Class.create({ initialize: function(options) { this.options =3D { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method =3D this.options.method.toLowerCase(); if (Object.isString(this.options.parameters)) this.options.parameters =3D = this.options.parameters.toQueryParams(); } }); Ajax.Request =3D Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport =3D Ajax.getTransport(); this.request(url); }, request: function(url) { this.url =3D url; this.method =3D this.options.method; var params =3D Object.clone(this.options.parameters); if (!['get', 'post'].include(this.method)) { // simulate other verbs over post params['_method'] =3D this.method; this.method =3D 'post'; } this.parameters =3D params; if (params =3D Object.toQueryString(params)) { // when GET, append parameters to URL if (this.method =3D=3D 'get') this.url +=3D (this.url.include('?') ? '&' : '?') + params; else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) params +=3D '&_=3D'; } try { var response =3D new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) = this.respondToReadyState.bind(this).defer(1); this.transport.onreadystatechange =3D = this.onStateChange.bind(this); this.setRequestHeaders(); this.body =3D this.method =3D=3D 'post' ? (this.options.postBody = || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests = */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState =3D this.transport.readyState; if (readyState > 1 && !((readyState =3D=3D 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers =3D { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, = */*' }; if (this.method =3D=3D 'post') { headers['Content-type'] =3D this.options.contentType + (this.options.encoding ? '; charset=3D' + this.options.encoding = : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < = 2005) headers['Connection'] =3D 'close'; } // user-defined headers if (typeof this.options.requestHeaders =3D=3D 'object') { var extras =3D this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i =3D 0, length =3D extras.length; i < length; i +=3D = 2) headers[extras[i]] =3D extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] =3D = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status =3D this.getStatus(); return !status || (status >=3D 200 && status < 300); }, getStatus: function() { try { return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state =3D Ajax.Request.Events[readyState], response =3D new = Ajax.Response(this); if (state =3D=3D 'Complete') { try { this._complete =3D true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : = 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); } var contentType =3D response.getHeader('Content-type'); if (this.options.evalJS =3D=3D 'force' || (this.options.evalJS && contentType && = contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s= *$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, = response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, = response.headerJSON); } catch (e) { this.dispatchException(e); } if (state =3D=3D 'Complete') { // avoid memory leak in MSIE: clean up this.transport.onreadystatechange =3D Prototype.emptyFunction; } }, getHeader: function(name) { try { return this.transport.getResponseHeader(name); } catch (e) { return null } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, = exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events =3D ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response =3D Class.create({ initialize: function(request){ this.request =3D request; var transport =3D this.transport =3D request.transport, readyState =3D this.readyState =3D transport.readyState; if((readyState > 2 && !Prototype.Browser.IE) || readyState =3D=3D 4) = { this.status =3D this.getStatus(); this.statusText =3D this.getStatusText(); this.responseText =3D String.interpret(transport.responseText); this.headerJSON =3D this._getHeaderJSON(); } if(readyState =3D=3D 4) { var xml =3D transport.responseXML; this.responseXML =3D xml =3D=3D=3D undefined ? null : xml; this.responseJSON =3D this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json =3D this.getHeader('X-JSON'); if (!json) return null; json =3D decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options =3D this.request.options; if (!options.evalJSON || (options.evalJSON !=3D 'force' && !(this.getHeader('Content-type') || = '').include('application/json'))) return null; try { return this.transport.responseText.evalJSON(options.sanitizeJSON); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater =3D Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container =3D { success: (container.success || container), failure: (container.failure || (container.success ? null : = container)) }; options =3D options || { }; var onComplete =3D options.onComplete; options.onComplete =3D (function(response, param) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, param); }).bind(this); $super(url, options); }, updateContent: function(responseText) { var receiver =3D this.container[this.success() ? 'success' : = 'failure'], options =3D this.options; if (!options.evalScripts) responseText =3D = responseText.stripScripts(); if (receiver =3D $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion =3D { }; insertion[options.insertion] =3D = responseText; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } if (this.success()) { if (this.onComplete) this.onComplete.bind(this).defer(); } } }); Ajax.PeriodicalUpdater =3D Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete =3D this.options.onComplete; this.frequency =3D (this.options.frequency || 2); this.decay =3D (this.options.decay || 1); this.updater =3D { }; this.container =3D container; this.url =3D url; this.start(); }, start: function() { this.options.onComplete =3D this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete =3D undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay =3D (response.responseText =3D=3D this.lastText ? this.decay * this.options.decay : 1); this.lastText =3D response.responseText; } this.timer =3D this.onTimerEvent.bind(this).delay(this.decay * = this.frequency); }, onTimerEvent: function() { this.updater =3D new Ajax.Updater(this.container, this.url, = this.options); } }); function $(element) { if (arguments.length > 1) { for (var i =3D 0, elements =3D [], length =3D arguments.length; i < = length; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element =3D document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath =3D function(expression, parentElement) { var results =3D []; var query =3D document.evaluate(expression, $(parentElement) || = document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i =3D 0, length =3D query.snapshotLength; i < length; i++) results.push(Element.extend(query.snapshotItem(i))); return results; }; } /*-----------------------------------------------------------------------= ---*/ if (!window.Node) var Node =3D { }; if (!Node.ELEMENT_NODE) { // DOM level 2 ECMAScript Language Binding Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function() { var element =3D this.Element; this.Element =3D function(tagName, attributes) { attributes =3D attributes || { }; tagName =3D tagName.toLowerCase(); var cache =3D Element.cache; if (Prototype.Browser.IE && attributes.name) { tagName =3D '<' + tagName + ' name=3D"' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), = attributes); } if (!cache[tagName]) cache[tagName] =3D = Element.extend(document.createElement(tagName)); return Element.writeAttribute(cache[tagName].cloneNode(false), = attributes); }; Object.extend(this.Element, element || { }); }).call(window); Element.cache =3D { }; Element.Methods =3D { visible: function(element) { return $(element).style.display !=3D 'none'; }, toggle: function(element) { element =3D $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { $(element).style.display =3D 'none'; return element; }, show: function(element) { $(element).style.display =3D ''; return element; }, remove: function(element) { element =3D $(element); element.parentNode.removeChild(element); return element; }, update: function(element, content) { element =3D $(element); if (content && content.toElement) content =3D content.toElement(); if (Object.isElement(content)) return = element.update().insert(content); content =3D Object.toHTML(content); element.innerHTML =3D content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }, replace: function(element, content) { element =3D $(element); if (content && content.toElement) content =3D content.toElement(); else if (!Object.isElement(content)) { content =3D Object.toHTML(content); var range =3D element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content =3D = range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; }, insert: function(element, insertions) { element =3D $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && = (insertions.toElement || insertions.toHTML))) insertions =3D {bottom:insertions}; var content, t, range; for (position in insertions) { content =3D insertions[position]; position =3D position.toLowerCase(); t =3D Element._insertionTranslations[position]; if (content && content.toElement) content =3D content.toElement(); if (Object.isElement(content)) { t.insert(element, content); continue; } content =3D Object.toHTML(content); range =3D element.ownerDocument.createRange(); t.initializeRange(element, range); t.insert(element, = range.createContextualFragment(content.stripScripts())); content.evalScripts.bind(content).defer(); } return element; }, wrap: function(element, wrapper, attributes) { element =3D $(element); if (Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes || { }); else if (Object.isString(wrapper)) wrapper =3D new Element(wrapper, = attributes); else wrapper =3D new Element('div', wrapper); if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; }, inspect: function(element) { element =3D $(element); var result =3D '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property =3D pair.first(), attribute =3D pair.last(); var value =3D (element[property] || '').toString(); if (value) result +=3D ' ' + attribute + '=3D' + = value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property) { element =3D $(element); var elements =3D []; while (element =3D element[property]) if (element.nodeType =3D=3D 1) elements.push(Element.extend(element)); return elements; }, ancestors: function(element) { return $(element).recursivelyCollect('parentNode'); }, descendants: function(element) { return = $A($(element).getElementsByTagName('*')).each(Element.extend); }, firstDescendant: function(element) { element =3D $(element).firstChild; while (element && element.nodeType !=3D 1) element =3D = element.nextSibling; return $(element); }, immediateDescendants: function(element) { if (!(element =3D $(element).firstChild)) return []; while (element && element.nodeType !=3D 1) element =3D = element.nextSibling; if (element) return [element].concat($(element).nextSiblings()); return []; }, previousSiblings: function(element) { return $(element).recursivelyCollect('previousSibling'); }, nextSiblings: function(element) { return $(element).recursivelyCollect('nextSibling'); }, siblings: function(element) { element =3D $(element); return = element.previousSiblings().reverse().concat(element.nextSiblings()); }, match: function(element, selector) { if (Object.isString(selector)) selector =3D new Selector(selector); return selector.match($(element)); }, up: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return $(element.parentNode); var ancestors =3D element.ancestors(); return expression ? Selector.findElement(ancestors, expression, = index) : ancestors[index || 0]; }, down: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return element.firstDescendant(); var descendants =3D element.descendants(); return expression ? Selector.findElement(descendants, expression, = index) : descendants[index || 0]; }, previous: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return = $(Selector.handlers.previousElementSibling(element)); var previousSiblings =3D element.previousSiblings(); return expression ? Selector.findElement(previousSiblings, = expression, index) : previousSiblings[index || 0]; }, next: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return = $(Selector.handlers.nextElementSibling(element)); var nextSiblings =3D element.nextSiblings(); return expression ? Selector.findElement(nextSiblings, expression, = index) : nextSiblings[index || 0]; }, select: function() { var args =3D $A(arguments), element =3D $(args.shift()); return Selector.findChildElements(element, args); }, adjacent: function() { var args =3D $A(arguments), element =3D $(args.shift()); return Selector.findChildElements(element.parentNode, = args).without(element); }, identify: function(element) { element =3D $(element); var id =3D element.readAttribute('id'), self =3D arguments.callee; if (id) return id; do { id =3D 'anonymous_element_' + self.counter++ } while ($(id)); element.writeAttribute('id', id); return id; }, readAttribute: function(element, name) { element =3D $(element); if (Prototype.Browser.IE) { var t =3D Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name =3D t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null = : element.attributes[name].value; } } return element.getAttribute(name); }, writeAttribute: function(element, name, value) { element =3D $(element); var attributes =3D { }, t =3D Element._attributeTranslations.write; if (typeof name =3D=3D 'object') attributes =3D name; else attributes[name] =3D value =3D=3D=3D undefined ? true : value; for (var attr in attributes) { var name =3D t.names[attr] || attr, value =3D attributes[attr]; if (t.values[attr]) name =3D t.values[attr](element, value); if (value =3D=3D=3D false || value =3D=3D=3D null) element.removeAttribute(name); else if (value =3D=3D=3D true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; }, getHeight: function(element) { return $(element).getDimensions().height; }, getWidth: function(element) { return $(element).getDimensions().width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element =3D $(element))) return; var elementClassName =3D element.className; return (elementClassName.length > 0 && (elementClassName =3D=3D = className || new RegExp("(^|\\s)" + className + = "(\\s|$)").test(elementClassName))); }, addClassName: function(element, className) { if (!(element =3D $(element))) return; if (!element.hasClassName(className)) element.className +=3D (element.className ? ' ' : '') + className; return element; }, removeClassName: function(element, className) { if (!(element =3D $(element))) return; element.className =3D element.className.replace( new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element =3D $(element))) return; return element[element.hasClassName(className) ? 'removeClassName' : 'addClassName'](className); }, // removes whitespace-only text node children cleanWhitespace: function(element) { element =3D $(element); var node =3D element.firstChild; while (node) { var nextNode =3D node.nextSibling; if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node =3D nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element =3D $(element), ancestor =3D $(ancestor); if (element.compareDocumentPosition) return (element.compareDocumentPosition(ancestor) & 8) =3D=3D=3D = 8; if (element.sourceIndex && !Prototype.Browser.Opera) { var e =3D element.sourceIndex, a =3D ancestor.sourceIndex, nextAncestor =3D ancestor.nextSibling; if (!nextAncestor) { do { ancestor =3D ancestor.parentNode; } while (!(nextAncestor =3D ancestor.nextSibling) && = ancestor.parentNode); } if (nextAncestor) return (e > a && e < nextAncestor.sourceIndex); } while (element =3D element.parentNode) if (element =3D=3D ancestor) return true; return false; }, scrollTo: function(element) { element =3D $(element); var pos =3D element.cumulativeOffset(); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element =3D $(element); style =3D style =3D=3D 'float' ? 'cssFloat' : style.camelize(); var value =3D element.style[style]; if (!value) { var css =3D document.defaultView.getComputedStyle(element, null); value =3D css ? css[style] : null; } if (style =3D=3D 'opacity') return value ? parseFloat(value) : 1.0; return value =3D=3D 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) { element =3D $(element); var elementStyle =3D element.style, match; if (Object.isString(styles)) { element.style.cssText +=3D ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : = element; } for (var property in styles) if (property =3D=3D 'opacity') = element.setOpacity(styles[property]); else elementStyle[(property =3D=3D 'float' || property =3D=3D = 'cssFloat') ? (elementStyle.styleFloat =3D=3D=3D undefined ? 'cssFloat' : = 'styleFloat') : property] =3D styles[property]; return element; }, setOpacity: function(element, value) { element =3D $(element); element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? = '' : (value < 0.00001) ? 0 : value; return element; }, getDimensions: function(element) { element =3D $(element); var display =3D $(element).getStyle('display'); if (display !=3D 'none' && display !=3D null) // Safari bug return {width: element.offsetWidth, height: element.offsetHeight}; // All *Width and *Height properties give 0 on elements with display = none, // so enable the element temporarily var els =3D element.style; var originalVisibility =3D els.visibility; var originalPosition =3D els.position; var originalDisplay =3D els.display; els.visibility =3D 'hidden'; els.position =3D 'absolute'; els.display =3D 'block'; var originalWidth =3D element.clientWidth; var originalHeight =3D element.clientHeight; els.display =3D originalDisplay; els.position =3D originalPosition; els.visibility =3D originalVisibility; return {width: originalWidth, height: originalHeight}; }, makePositioned: function(element) { element =3D $(element); var pos =3D Element.getStyle(element, 'position'); if (pos =3D=3D 'static' || !pos) { element._madePositioned =3D true; element.style.position =3D 'relative'; // Opera returns the offset relative to the positioning context, = when an // element is position relative but top and left have not been = defined if (window.opera) { element.style.top =3D 0; element.style.left =3D 0; } } return element; }, undoPositioned: function(element) { element =3D $(element); if (element._madePositioned) { element._madePositioned =3D undefined; element.style.position =3D element.style.top =3D element.style.left =3D element.style.bottom =3D element.style.right =3D ''; } return element; }, makeClipping: function(element) { element =3D $(element); if (element._overflow) return element; element._overflow =3D Element.getStyle(element, 'overflow') || = 'auto'; if (element._overflow !=3D=3D 'hidden') element.style.overflow =3D 'hidden'; return element; }, undoClipping: function(element) { element =3D $(element); if (!element._overflow) return element; element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : = element._overflow; element._overflow =3D null; return element; }, cumulativeOffset: function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; element =3D element.offsetParent; } while (element); return Element._returnOffset(valueL, valueT); }, positionedOffset: function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; element =3D element.offsetParent; if (element) { if (element.tagName =3D=3D 'BODY') break; var p =3D Element.getStyle(element, 'position'); if (p =3D=3D 'relative' || p =3D=3D 'absolute') break; } } while (element); return Element._returnOffset(valueL, valueT); }, absolutize: function(element) { element =3D $(element); if (element.getStyle('position') =3D=3D 'absolute') return; // Position.prepare(); // To be done manually by Scripty when it = needs it. var offsets =3D element.positionedOffset(); var top =3D offsets[1]; var left =3D offsets[0]; var width =3D element.clientWidth; var height =3D element.clientHeight; element._originalLeft =3D left - parseFloat(element.style.left || = 0); element._originalTop =3D top - parseFloat(element.style.top || = 0); element._originalWidth =3D element.style.width; element._originalHeight =3D element.style.height; element.style.position =3D 'absolute'; element.style.top =3D top + 'px'; element.style.left =3D left + 'px'; element.style.width =3D width + 'px'; element.style.height =3D height + 'px'; return element; }, relativize: function(element) { element =3D $(element); if (element.getStyle('position') =3D=3D 'relative') return; // Position.prepare(); // To be done manually by Scripty when it = needs it. element.style.position =3D 'relative'; var top =3D parseFloat(element.style.top || 0) - = (element._originalTop || 0); var left =3D parseFloat(element.style.left || 0) - = (element._originalLeft || 0); element.style.top =3D top + 'px'; element.style.left =3D left + 'px'; element.style.height =3D element._originalHeight; element.style.width =3D element._originalWidth; return element; }, cumulativeScrollOffset: function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.scrollTop || 0; valueL +=3D element.scrollLeft || 0; element =3D element.parentNode; } while (element); return Element._returnOffset(valueL, valueT); }, getOffsetParent: function(element) { if (element.offsetParent) return $(element.offsetParent); if (element =3D=3D document.body) return $(element); while ((element =3D element.parentNode) && element !=3D = document.body) if (Element.getStyle(element, 'position') !=3D 'static') return $(element); return $(document.body); }, viewportOffset: function(forElement) { var valueT =3D 0, valueL =3D 0; var element =3D forElement; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; // Safari fix if (element.offsetParent =3D=3D document.body && Element.getStyle(element, 'position') =3D=3D 'absolute') break; } while (element =3D element.offsetParent); element =3D forElement; do { if (!Prototype.Browser.Opera || element.tagName =3D=3D 'BODY') { valueT -=3D element.scrollTop || 0; valueL -=3D element.scrollLeft || 0; } } while (element =3D element.parentNode); return Element._returnOffset(valueL, valueT); }, clonePosition: function(element, source) { var options =3D Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || { }); // find page position of source source =3D $(source); var p =3D source.viewportOffset(); // find coordinate system to use element =3D $(element); var delta =3D [0, 0]; var parent =3D null; // delta [0,0] will do fine with position: fixed elements, // position:absolute needs offsetParent deltas if (Element.getStyle(element, 'position') =3D=3D 'absolute') { parent =3D element.getOffsetParent(); delta =3D parent.viewportOffset(); } // correct by body offsets (fixes Safari) if (parent =3D=3D document.body) { delta[0] -=3D document.body.offsetLeft; delta[1] -=3D document.body.offsetTop; } // set position if (options.setLeft) element.style.left =3D (p[0] - delta[0] + = options.offsetLeft) + 'px'; if (options.setTop) element.style.top =3D (p[1] - delta[1] + = options.offsetTop) + 'px'; if (options.setWidth) element.style.width =3D source.offsetWidth + = 'px'; if (options.setHeight) element.style.height =3D source.offsetHeight = + 'px'; return element; } }; Element.Methods.identify.counter =3D 1; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations =3D { write: { names: { className: 'class', htmlFor: 'for' }, values: { } } }; if (!document.createRange || Prototype.Browser.Opera) { Element.Methods.insert =3D function(element, insertions) { element =3D $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && = (insertions.toElement || insertions.toHTML))) insertions =3D { bottom: insertions }; var t =3D Element._insertionTranslations, content, position, pos, = tagName; for (position in insertions) { content =3D insertions[position]; position =3D position.toLowerCase(); pos =3D t[position]; if (content && content.toElement) content =3D content.toElement(); if (Object.isElement(content)) { pos.insert(element, content); continue; } content =3D Object.toHTML(content); tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after') ? element.parentNode : element).tagName.toUpperCase(); if (t.tags[tagName]) { var fragments =3D = Element._getContentFromAnonymousElement(tagName, = content.stripScripts()); if (position =3D=3D 'top' || position =3D=3D 'after') = fragments.reverse(); fragments.each(pos.insert.curry(element)); } else element.insertAdjacentHTML(pos.adjacency, = content.stripScripts()); content.evalScripts.bind(content).defer(); } return element; }; } if (Prototype.Browser.Opera) { Element.Methods._getStyle =3D Element.Methods.getStyle; Element.Methods.getStyle =3D function(element, style) { switch(style) { case 'left': case 'top': case 'right': case 'bottom': if (Element._getStyle(element, 'position') =3D=3D 'static') = return null; default: return Element._getStyle(element, style); } }; Element.Methods._readAttribute =3D Element.Methods.readAttribute; Element.Methods.readAttribute =3D function(element, attribute) { if (attribute =3D=3D 'title') return element.title; return Element._readAttribute(element, attribute); }; } else if (Prototype.Browser.IE) { $w('positionedOffset getOffsetParent = viewportOffset').each(function(method) { Element.Methods[method] =3D Element.Methods[method].wrap( function(proceed, element) { element =3D $(element); var position =3D element.getStyle('position'); if (position !=3D 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value =3D proceed(element); element.setStyle({ position: position }); return value; } ); }); Element.Methods.getStyle =3D function(element, style) { element =3D $(element); style =3D (style =3D=3D 'float' || style =3D=3D 'cssFloat') ? = 'styleFloat' : style.camelize(); var value =3D element.style[style]; if (!value && element.currentStyle) value =3D = element.currentStyle[style]; if (style =3D=3D 'opacity') { if (value =3D (element.getStyle('filter') || = '').match(/alpha\(opacity=3D(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value =3D=3D 'auto') { if ((style =3D=3D 'width' || style =3D=3D 'height') && = (element.getStyle('display') !=3D 'none')) return element['offset' + style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity =3D function(element, value) { function stripAlpha(filter){ return filter.replace(/alpha\([^\)]*\)/gi,''); } element =3D $(element); var currentStyle =3D element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom =3D=3D 'normal')) element.style.zoom =3D 1; var filter =3D element.getStyle('filter'), style =3D element.style; if (value =3D=3D 1 || value =3D=3D=3D '') { (filter =3D stripAlpha(filter)) ? style.filter =3D filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value =3D 0; style.filter =3D stripAlpha(filter) + 'alpha(opacity=3D' + (value * 100) + ')'; return element; }; Element._attributeTranslations =3D { read: { names: { 'class': 'className', 'for': 'htmlFor' }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node =3D element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: function(element, attribute) { var attribute =3D element.getAttribute(attribute); return attribute ? attribute.toString().slice(23, -2) : null; }, _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } } }; Element._attributeTranslations.write =3D { names: Object.clone(Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked =3D !!value; }, style: function(element, value) { element.style.cssText =3D value ? value : ''; } } }; Element._attributeTranslations.has =3D {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc').each(function(attr) { Element._attributeTranslations.write.names[attr.toLowerCase()] =3D = attr; Element._attributeTranslations.has[attr.toLowerCase()] =3D attr; }); (function(v) { Object.extend(v, { href: v._getAttr, src: v._getAttr, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values); } else if (Prototype.Browser.Gecko && = /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity =3D function(element, value) { element =3D $(element); element.style.opacity =3D (value =3D=3D 1) ? 0.999999 : (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } else if (Prototype.Browser.WebKit) { Element.Methods.setOpacity =3D function(element, value) { element =3D $(element); element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? = '' : (value < 0.00001) ? 0 : value; if (value =3D=3D 1) if(element.tagName =3D=3D 'IMG' && element.width) { element.width++; element.width--; } else try { var n =3D document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { } return element; }; // Safari returns margins on body which is incorrect if the child is = absolutely // positioned. For performance reasons, redefine = Position.cumulativeOffset for // KHTML/WebKit only. Element.Methods.cumulativeOffset =3D function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; if (element.offsetParent =3D=3D document.body) if (Element.getStyle(element, 'position') =3D=3D 'absolute') = break; element =3D element.offsetParent; } while (element); return Element._returnOffset(valueL, valueT); }; } if (Prototype.Browser.IE || Prototype.Browser.Opera) { // IE and Opera are missing .innerHTML support for TABLE-related and = SELECT elements Element.Methods.update =3D function(element, content) { element =3D $(element); if (content && content.toElement) content =3D content.toElement(); if (Object.isElement(content)) return = element.update().insert(content); content =3D Object.toHTML(content); var tagName =3D element.tagName.toUpperCase(); if (tagName in Element._insertionTranslations.tags) { $A(element.childNodes).each(function(node) { = element.removeChild(node) }); Element._getContentFromAnonymousElement(tagName, = content.stripScripts()) .each(function(node) { element.appendChild(node) }); } else element.innerHTML =3D content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } if (document.createElement('div').outerHTML) { Element.Methods.replace =3D function(element, content) { element =3D $(element); if (content && content.toElement) content =3D content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content =3D Object.toHTML(content); var parent =3D element.parentNode, tagName =3D = parent.tagName.toUpperCase(); if (Element._insertionTranslations.tags[tagName]) { var nextSibling =3D element.next(); var fragments =3D Element._getContentFromAnonymousElement(tagName, = content.stripScripts()); parent.removeChild(element); if (nextSibling) fragments.each(function(node) { parent.insertBefore(node, = nextSibling) }); else fragments.each(function(node) { parent.appendChild(node) }); } else element.outerHTML =3D content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } Element._returnOffset =3D function(l, t) { var result =3D [l, t]; result.left =3D l; result.top =3D t; return result; }; Element._getContentFromAnonymousElement =3D function(tagName, html) { var div =3D new Element('div'), t =3D = Element._insertionTranslations.tags[tagName]; div.innerHTML =3D t[0] + html + t[1]; t[2].times(function() { div =3D div.firstChild }); return $A(div.childNodes); }; Element._insertionTranslations =3D { before: { adjacency: 'beforeBegin', insert: function(element, node) { element.parentNode.insertBefore(node, element); }, initializeRange: function(element, range) { range.setStartBefore(element); } }, top: { adjacency: 'afterBegin', insert: function(element, node) { element.insertBefore(node, element.firstChild); }, initializeRange: function(element, range) { range.selectNodeContents(element); range.collapse(true); } }, bottom: { adjacency: 'beforeEnd', insert: function(element, node) { element.appendChild(node); } }, after: { adjacency: 'afterEnd', insert: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, initializeRange: function(element, range) { range.setStartAfter(element); } }, tags: { TABLE: ['', '
', 1], TBODY: ['', '
', 2], TR: ['', '
', 3], TD: ['
', '
', 4], SELECT: ['', 1] } }; (function() { this.bottom.initializeRange =3D this.top.initializeRange; Object.extend(this.tags, { THEAD: this.tags.TBODY, TFOOT: this.tags.TBODY, TH: this.tags.TD }); }).call(Element._insertionTranslations); Element.Methods.Simulated =3D { hasAttribute: function(element, attribute) { attribute =3D Element._attributeTranslations.has[attribute] || = attribute; var node =3D $(element).getAttributeNode(attribute); return node && node.specified; } }; Element.Methods.ByTag =3D { }; Object.extend(Element, Element.Methods); if (!Prototype.BrowserFeatures.ElementExtensions && document.createElement('div').__proto__) { window.HTMLElement =3D { }; window.HTMLElement.prototype =3D = document.createElement('div').__proto__; Prototype.BrowserFeatures.ElementExtensions =3D true; } Element.extend =3D (function() { if (Prototype.BrowserFeatures.SpecificElementExtensions) return Prototype.K; var Methods =3D { }, ByTag =3D Element.Methods.ByTag; var extend =3D Object.extend(function(element) { if (!element || element._extendedByPrototype || element.nodeType !=3D 1 || element =3D=3D window) return = element; var methods =3D Object.clone(Methods), tagName =3D element.tagName, property, value; // extend methods for specific tags if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); for (property in methods) { value =3D methods[property]; if (Object.isFunction(value) && !(property in element)) element[property] =3D value.methodize(); } element._extendedByPrototype =3D Prototype.emptyFunction; return element; }, { refresh: function() { // extend methods for all tags (Safari doesn't need this) if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend; })(); Element.hasAttribute =3D function(element, attribute) { if (element.hasAttribute) return element.hasAttribute(attribute); return Element.Methods.Simulated.hasAttribute(element, attribute); }; Element.addMethods =3D function(methods) { var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods) }); } if (arguments.length =3D=3D 2) { var tagName =3D methods; methods =3D arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || { }); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName =3D tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] =3D { }; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent =3D onlyIfAbsent || false; for (var property in methods) { var value =3D methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] =3D value.methodize(); } } function findDOMClass(tagName) { var klass; var trans =3D { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": = "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": = "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", = "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", = "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", = "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass =3D 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass =3D 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; window[klass] =3D { }; window[klass].prototype =3D = document.createElement(tagName).__proto__; return window[klass]; } if (F.ElementExtensions) { copy(Element.Methods, HTMLElement.prototype); copy(Element.Methods.Simulated, HTMLElement.prototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass =3D findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) Element.extend.refresh(); Element.cache =3D { }; }; document.viewport =3D { getDimensions: function() { var dimensions =3D { }; $w('width height').each(function(d) { var D =3D d.capitalize(); dimensions[d] =3D self['inner' + D] || (document.documentElement['client' + D] || document.body['client' = + D]); }); return dimensions; }, getWidth: function() { return this.getDimensions().width; }, getHeight: function() { return this.getDimensions().height; }, getScrollOffsets: function() { return Element._returnOffset( window.pageXOffset || document.documentElement.scrollLeft || = document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || = document.body.scrollTop); } }; /* Portions of the Selector class are derived from Jack Slocum=E2=80=99s = DomQuery, * part of YUI-Ext version 0.40, distributed under the terms of an = MIT-style * license. Please see http://www.yui-ext.com/ for more information. */ var Selector =3D Class.create({ initialize: function(expression) { this.expression =3D expression.strip(); this.compileMatcher(); }, compileMatcher: function() { // Selectors with namespaced attributes can't use the XPath version if (Prototype.BrowserFeatures.XPath && = !(/(\[[\w-]*?:|:checked)/).test(this.expression)) return this.compileXPathMatcher(); var e =3D this.expression, ps =3D Selector.patterns, h =3D = Selector.handlers, c =3D Selector.criteria, le, p, m; if (Selector._cache[e]) { this.matcher =3D Selector._cache[e]; return; } this.matcher =3D ["this.matcher =3D function(root) {", "var r =3D root, h =3D Selector.handlers, c =3D = false, n;"]; while (e && le !=3D e && (/\S/).test(e)) { le =3D e; for (var i in ps) { p =3D ps[i]; if (m =3D e.match(p)) { this.matcher.push(Object.isFunction(c[i]) ? c[i](m) : new Template(c[i]).evaluate(m)); e =3D e.replace(m[0], ''); break; } } } this.matcher.push("return h.unique(n);\n}"); eval(this.matcher.join('\n')); Selector._cache[this.expression] =3D this.matcher; }, compileXPathMatcher: function() { var e =3D this.expression, ps =3D Selector.patterns, x =3D Selector.xpath, le, m; if (Selector._cache[e]) { this.xpath =3D Selector._cache[e]; return; } this.matcher =3D ['.//*']; while (e && le !=3D e && (/\S/).test(e)) { le =3D e; for (var i in ps) { if (m =3D e.match(ps[i])) { this.matcher.push(Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m)); e =3D e.replace(m[0], ''); break; } } } this.xpath =3D this.matcher.join(''); Selector._cache[this.expression] =3D this.xpath; }, findElements: function(root) { root =3D root || document; if (this.xpath) return document._getElementsByXPath(this.xpath, = root); return this.matcher(root); }, match: function(element) { this.tokens =3D []; var e =3D this.expression, ps =3D Selector.patterns, as =3D = Selector.assertions; var le, p, m; while (e && le !=3D=3D e && (/\S/).test(e)) { le =3D e; for (var i in ps) { p =3D ps[i]; if (m =3D e.match(p)) { // use the Selector.assertions methods unless the selector // is too complex. if (as[i]) { this.tokens.push([i, Object.clone(m)]); e =3D e.replace(m[0], ''); } else { // reluctantly do a document-wide search // and look for a match in the array return this.findElements(document).include(element); } } } } var match =3D true, name, matches; for (var i =3D 0, token; token =3D this.tokens[i]; i++) { name =3D token[0], matches =3D token[1]; if (!Selector.assertions[name](element, matches)) { match =3D false; break; } } return match; }, toString: function() { return this.expression; }, inspect: function() { return "#"; } }); Object.extend(Selector, { _cache: { }, xpath: { descendant: "//*", child: "/*", adjacent: "/following-sibling::*[1]", laterSibling: '/following-sibling::*', tagName: function(m) { if (m[1] =3D=3D '*') return ''; return "[local-name()=3D'" + m[1].toLowerCase() + "' or local-name()=3D'" + m[1].toUpperCase() + "']"; }, className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", id: "[@id=3D'#{1}']", attrPresence: "[@#{1}]", attr: function(m) { m[3] =3D m[5] || m[6]; return new Template(Selector.xpath.operators[m[2]]).evaluate(m); }, pseudo: function(m) { var h =3D Selector.xpath.pseudos[m[1]]; if (!h) return ''; if (Object.isFunction(h)) return h(m); return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); }, operators: { '=3D': "[@#{1}=3D'#{3}']", '!=3D': "[@#{1}!=3D'#{3}']", '^=3D': "[starts-with(@#{1}, '#{3}')]", '$=3D': "[substring(@#{1}, (string-length(@#{1}) - = string-length('#{3}') + 1))=3D'#{3}']", '*=3D': "[contains(@#{1}, '#{3}')]", '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" }, pseudos: { 'first-child': '[not(preceding-sibling::*)]', 'last-child': '[not(following-sibling::*)]', 'only-child': '[not(preceding-sibling::* or = following-sibling::*)]', 'empty': "[count(*) =3D 0 and (count(text()) =3D 0 or = translate(text(), ' \t\r\n', '') =3D '')]", 'checked': "[@checked]", 'disabled': "[@disabled]", 'enabled': "[not(@disabled)]", 'not': function(m) { var e =3D m[6], p =3D Selector.patterns, x =3D Selector.xpath, le, m, v; var exclusion =3D []; while (e && le !=3D e && (/\S/).test(e)) { le =3D e; for (var i in p) { if (m =3D e.match(p[i])) { v =3D Object.isFunction(x[i]) ? x[i](m) : new = Template(x[i]).evaluate(m); exclusion.push("(" + v.substring(1, v.length - 1) + ")"); e =3D e.replace(m[0], ''); break; } } } return "[not(" + exclusion.join(" and ") + ")]"; }, 'nth-child': function(m) { return = Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m); }, 'nth-last-child': function(m) { return = Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m); }, 'nth-of-type': function(m) { return Selector.xpath.pseudos.nth("position() ", m); }, 'nth-last-of-type': function(m) { return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", = m); }, 'first-of-type': function(m) { m[6] =3D "1"; return Selector.xpath.pseudos['nth-of-type'](m); }, 'last-of-type': function(m) { m[6] =3D "1"; return = Selector.xpath.pseudos['nth-last-of-type'](m); }, 'only-of-type': function(m) { var p =3D Selector.xpath.pseudos; return p['first-of-type'](m) + = p['last-of-type'](m); }, nth: function(fragment, m) { var mm, formula =3D m[6], predicate; if (formula =3D=3D 'even') formula =3D '2n+0'; if (formula =3D=3D 'odd') formula =3D '2n+1'; if (mm =3D formula.match(/^(\d+)$/)) // digit only return '[' + fragment + "=3D " + mm[1] + ']'; if (mm =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b if (mm[1] =3D=3D "-") mm[1] =3D -1; var a =3D mm[1] ? Number(mm[1]) : 1; var b =3D mm[2] ? Number(mm[2]) : 0; predicate =3D "[((#{fragment} - #{b}) mod #{a} =3D 0) and " + "((#{fragment} - #{b}) div #{a} >=3D 0)]"; return new Template(predicate).evaluate({ fragment: fragment, a: a, b: b }); } } } }, criteria: { tagName: 'n =3D h.tagName(n, r, "#{1}", c); c =3D false;', className: 'n =3D h.className(n, r, "#{1}", c); c =3D false;', id: 'n =3D h.id(n, r, "#{1}", c); c =3D false;', attrPresence: 'n =3D h.attrPresence(n, r, "#{1}"); c =3D false;', attr: function(m) { m[3] =3D (m[5] || m[6]); return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = =3D false;').evaluate(m); }, pseudo: function(m) { if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"'); return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c = =3D false;').evaluate(m); }, descendant: 'c =3D "descendant";', child: 'c =3D "child";', adjacent: 'c =3D "adjacent";', laterSibling: 'c =3D "laterSibling";' }, patterns: { // combinators must be listed first // (and descendant needs to be last combinator) laterSibling: /^\s*~\s*/, child: /^\s*>\s*/, adjacent: /^\s*\+\s*/, descendant: /^\s/, // selectors follow tagName: /^\s*(\*|[\w\-]+)(\b|$)?/, id: /^#([\w\-\*]+)(\b|$)/, className: /^\.([\w\-\*]+)(\b|$)/, pseudo: = /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis= )abled|not)(\((.*?)\))?(\b|$|(?=3D\s)|(?=3D:))/, attrPresence: /^\[([\w]+)\]/, attr: = /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\4]*?)\4|([^'"][^= \]]*?)))?\]/ }, // for Selector.match and Element#match assertions: { tagName: function(element, matches) { return matches[1].toUpperCase() =3D=3D = element.tagName.toUpperCase(); }, className: function(element, matches) { return Element.hasClassName(element, matches[1]); }, id: function(element, matches) { return element.id =3D=3D=3D matches[1]; }, attrPresence: function(element, matches) { return Element.hasAttribute(element, matches[1]); }, attr: function(element, matches) { var nodeValue =3D Element.readAttribute(element, matches[1]); return Selector.operators[matches[2]](nodeValue, matches[3]); } }, handlers: { // UTILITY FUNCTIONS // joins two collections concat: function(a, b) { for (var i =3D 0, node; node =3D b[i]; i++) a.push(node); return a; }, // marks an array of nodes for counting mark: function(nodes) { for (var i =3D 0, node; node =3D nodes[i]; i++) node._counted =3D true; return nodes; }, unmark: function(nodes) { for (var i =3D 0, node; node =3D nodes[i]; i++) node._counted =3D undefined; return nodes; }, // mark each child node with its position (for nth calls) // "ofType" flag indicates whether we're indexing for nth-of-type // rather than nth-child index: function(parentNode, reverse, ofType) { parentNode._counted =3D true; if (reverse) { for (var nodes =3D parentNode.childNodes, i =3D nodes.length - = 1, j =3D 1; i >=3D 0; i--) { var node =3D nodes[i]; if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) = node.nodeIndex =3D j++; } } else { for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node = =3D nodes[i]; i++) if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) = node.nodeIndex =3D j++; } }, // filters out duplicates and extends all nodes unique: function(nodes) { if (nodes.length =3D=3D 0) return nodes; var results =3D [], n; for (var i =3D 0, l =3D nodes.length; i < l; i++) if (!(n =3D nodes[i])._counted) { n._counted =3D true; results.push(Element.extend(n)); } return Selector.handlers.unmark(results); }, // COMBINATOR FUNCTIONS descendant: function(nodes) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) h.concat(results, node.getElementsByTagName('*')); return results; }, child: function(nodes) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { for (var j =3D 0, children =3D [], child; child =3D = node.childNodes[j]; j++) if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') = results.push(child); } return results; }, adjacent: function(nodes) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { var next =3D this.nextElementSibling(node); if (next) results.push(next); } return results; }, laterSibling: function(nodes) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) h.concat(results, Element.nextSiblings(node)); return results; }, nextElementSibling: function(node) { while (node =3D node.nextSibling) if (node.nodeType =3D=3D 1) return node; return null; }, previousElementSibling: function(node) { while (node =3D node.previousSibling) if (node.nodeType =3D=3D 1) return node; return null; }, // TOKEN FUNCTIONS tagName: function(nodes, root, tagName, combinator) { tagName =3D tagName.toUpperCase(); var results =3D [], h =3D Selector.handlers; if (nodes) { if (combinator) { // fastlane for ordinary descendant combinators if (combinator =3D=3D "descendant") { for (var i =3D 0, node; node =3D nodes[i]; i++) h.concat(results, node.getElementsByTagName(tagName)); return results; } else nodes =3D this[combinator](nodes); if (tagName =3D=3D "*") return nodes; } for (var i =3D 0, node; node =3D nodes[i]; i++) if (node.tagName.toUpperCase() =3D=3D tagName) = results.push(node); return results; } else return root.getElementsByTagName(tagName); }, id: function(nodes, root, id, combinator) { var targetNode =3D $(id), h =3D Selector.handlers; if (!targetNode) return []; if (!nodes && root =3D=3D document) return [targetNode]; if (nodes) { if (combinator) { if (combinator =3D=3D 'child') { for (var i =3D 0, node; node =3D nodes[i]; i++) if (targetNode.parentNode =3D=3D node) return = [targetNode]; } else if (combinator =3D=3D 'descendant') { for (var i =3D 0, node; node =3D nodes[i]; i++) if (Element.descendantOf(targetNode, node)) return = [targetNode]; } else if (combinator =3D=3D 'adjacent') { for (var i =3D 0, node; node =3D nodes[i]; i++) if (Selector.handlers.previousElementSibling(targetNode) = =3D=3D node) return [targetNode]; } else nodes =3D h[combinator](nodes); } for (var i =3D 0, node; node =3D nodes[i]; i++) if (node =3D=3D targetNode) return [targetNode]; return []; } return (targetNode && Element.descendantOf(targetNode, root)) ? = [targetNode] : []; }, className: function(nodes, root, className, combinator) { if (nodes && combinator) nodes =3D this[combinator](nodes); return Selector.handlers.byClassName(nodes, root, className); }, byClassName: function(nodes, root, className) { if (!nodes) nodes =3D Selector.handlers.descendant([root]); var needle =3D ' ' + className + ' '; for (var i =3D 0, results =3D [], node, nodeClassName; node =3D = nodes[i]; i++) { nodeClassName =3D node.className; if (nodeClassName.length =3D=3D 0) continue; if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' = ').include(needle)) results.push(node); } return results; }, attrPresence: function(nodes, root, attr) { if (!nodes) nodes =3D root.getElementsByTagName("*"); var results =3D []; for (var i =3D 0, node; node =3D nodes[i]; i++) if (Element.hasAttribute(node, attr)) results.push(node); return results; }, attr: function(nodes, root, attr, value, operator) { if (!nodes) nodes =3D root.getElementsByTagName("*"); var handler =3D Selector.operators[operator], results =3D []; for (var i =3D 0, node; node =3D nodes[i]; i++) { var nodeValue =3D Element.readAttribute(node, attr); if (nodeValue =3D=3D=3D null) continue; if (handler(nodeValue, value)) results.push(node); } return results; }, pseudo: function(nodes, name, value, root, combinator) { if (nodes && combinator) nodes =3D this[combinator](nodes); if (!nodes) nodes =3D root.getElementsByTagName("*"); return Selector.pseudos[name](nodes, value, root); } }, pseudos: { 'first-child': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { if (Selector.handlers.previousElementSibling(node)) continue; results.push(node); } return results; }, 'last-child': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { if (Selector.handlers.nextElementSibling(node)) continue; results.push(node); } return results; }, 'only-child': function(nodes, value, root) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (!h.previousElementSibling(node) && = !h.nextElementSibling(node)) results.push(node); return results; }, 'nth-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root); }, 'nth-last-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true); }, 'nth-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, false, true); }, 'nth-last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true, true); }, 'first-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, false, true); }, 'last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, true, true); }, 'only-of-type': function(nodes, formula, root) { var p =3D Selector.pseudos; return p['last-of-type'](p['first-of-type'](nodes, formula, root), = formula, root); }, // handles the an+b logic getIndices: function(a, b, total) { if (a =3D=3D 0) return b > 0 ? [b] : []; return $R(1, total).inject([], function(memo, i) { if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i); return memo; }); }, // handles nth(-last)-child, nth(-last)-of-type, and = (first|last)-of-type nth: function(nodes, formula, root, reverse, ofType) { if (nodes.length =3D=3D 0) return []; if (formula =3D=3D 'even') formula =3D '2n+0'; if (formula =3D=3D 'odd') formula =3D '2n+1'; var h =3D Selector.handlers, results =3D [], indexed =3D [], m; h.mark(nodes); for (var i =3D 0, node; node =3D nodes[i]; i++) { if (!node.parentNode._counted) { h.index(node.parentNode, reverse, ofType); indexed.push(node.parentNode); } } if (formula.match(/^\d+$/)) { // just a number formula =3D Number(formula); for (var i =3D 0, node; node =3D nodes[i]; i++) if (node.nodeIndex =3D=3D formula) results.push(node); } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // = an+b if (m[1] =3D=3D "-") m[1] =3D -1; var a =3D m[1] ? Number(m[1]) : 1; var b =3D m[2] ? Number(m[2]) : 0; var indices =3D Selector.pseudos.getIndices(a, b, nodes.length); for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; = i++) { for (var j =3D 0; j < l; j++) if (node.nodeIndex =3D=3D indices[j]) results.push(node); } } h.unmark(nodes); h.unmark(indexed); return results; }, 'empty': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { // IE treats comments as element nodes if (node.tagName =3D=3D '!' || (node.firstChild && = !node.innerHTML.match(/^\s*$/))) continue; results.push(node); } return results; }, 'not': function(nodes, selector, root) { var h =3D Selector.handlers, selectorType, m; var exclusions =3D new Selector(selector).findElements(root); h.mark(exclusions); for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (!node._counted) results.push(node); h.unmark(exclusions); return results; }, 'enabled': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (!node.disabled) results.push(node); return results; }, 'disabled': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (node.disabled) results.push(node); return results; }, 'checked': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (node.checked) results.push(node); return results; } }, operators: { '=3D': function(nv, v) { return nv =3D=3D v; }, '!=3D': function(nv, v) { return nv !=3D v; }, '^=3D': function(nv, v) { return nv.startsWith(v); }, '$=3D': function(nv, v) { return nv.endsWith(v); }, '*=3D': function(nv, v) { return nv.include(v); }, '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + = ' '); }, '|=3D': function(nv, v) { return ('-' + nv.toUpperCase() + = '-').include('-' + v.toUpperCase() + '-'); } }, matchElements: function(elements, expression) { var matches =3D new Selector(expression).findElements(), h =3D = Selector.handlers; h.mark(matches); for (var i =3D 0, results =3D [], element; element =3D elements[i]; = i++) if (element._counted) results.push(element); h.unmark(matches); return results; }, findElement: function(elements, expression, index) { if (Object.isNumber(expression)) { index =3D expression; expression =3D false; } return Selector.matchElements(elements, expression || '*')[index || = 0]; }, findChildElements: function(element, expressions) { var exprs =3D expressions.join(','), expressions =3D []; exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { expressions.push(m[1].strip()); }); var results =3D [], h =3D Selector.handlers; for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) { selector =3D new Selector(expressions[i].strip()); h.concat(results, selector.findElements(element)); } return (l > 1) ? h.unique(results) : results; } }); function $$() { return Selector.findChildElements(document, $A(arguments)); } var Form =3D { reset: function(form) { $(form).reset(); return form; }, serializeElements: function(elements, options) { if (typeof options !=3D 'object') options =3D { hash: !!options }; else if (options.hash =3D=3D=3D undefined) options.hash =3D true; var key, value, submitted =3D false, submit =3D options.submit; var data =3D elements.inject({ }, function(result, element) { if (!element.disabled && element.name) { key =3D element.name; value =3D $(element).getValue(); if (value !=3D null && (element.type !=3D 'submit' || = (!submitted && submit !=3D=3D false && (!submit || key =3D=3D submit) && = (submitted =3D true)))) { if (key in result) { // a key is already present; construct an array of values if (!Object.isArray(result[key])) result[key] =3D = [result[key]]; result[key].push(value); } else result[key] =3D value; } } return result; }); return options.hash ? data : Object.toQueryString(data); } }; Form.Methods =3D { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { return $A($(form).getElementsByTagName('*')).inject([], function(elements, child) { if (Form.Element.Serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; } ); }, getInputs: function(form, typeName, name) { form =3D $(form); var inputs =3D form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i = < length; i++) { var input =3D inputs[i]; if ((typeName && input.type !=3D typeName) || (name && input.name = !=3D name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form =3D $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form =3D $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements =3D $(form).getElements().findAll(function(element) { return 'hidden' !=3D element.type && !element.disabled; }); var firstByIndex =3D elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >=3D = 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) = { return ['input', 'select', = 'textarea'].include(element.tagName.toLowerCase()); }); }, focusFirstElement: function(form) { form =3D $(form); form.findFirstElement().activate(); return form; }, request: function(form, options) { form =3D $(form), options =3D Object.clone(options || { }); var params =3D options.parameters, action =3D = form.readAttribute('action') || ''; if (action.blank()) action =3D window.location.href; options.parameters =3D form.serialize(true); if (params) { if (Object.isString(params)) params =3D params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method =3D form.method; return new Ajax.Request(action, options); } }; /*-----------------------------------------------------------------------= ---*/ Form.Element =3D { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods =3D { serialize: function(element) { element =3D $(element); if (!element.disabled && element.name) { var value =3D element.getValue(); if (value !=3D undefined) { var pair =3D { }; pair[element.name] =3D value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element =3D $(element); var method =3D element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element =3D $(element); var method =3D element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value =3D ''; return element; }, present: function(element) { return $(element).value !=3D ''; }, activate: function(element) { element =3D $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() !=3D 'input' = || !['button', 'reset', 'submit'].include(element.type))) element.select(); } catch (e) { } return element; }, disable: function(element) { element =3D $(element); element.blur(); element.disabled =3D true; return element; }, enable: function(element) { element =3D $(element); element.disabled =3D false; return element; } }; /*-----------------------------------------------------------------------= ---*/ var Field =3D Form.Element; var $F =3D Form.Element.Methods.getValue; /*-----------------------------------------------------------------------= ---*/ Form.Element.Serializers =3D { input: function(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return Form.Element.Serializers.inputSelector(element, value); default: return Form.Element.Serializers.textarea(element, value); } }, inputSelector: function(element, value) { if (value =3D=3D=3D undefined) return element.checked ? = element.value : null; else element.checked =3D !!value; }, textarea: function(element, value) { if (value =3D=3D=3D undefined) return element.value; else element.value =3D value; }, select: function(element, index) { if (index =3D=3D=3D undefined) return this[element.type =3D=3D 'select-one' ? 'selectOne' : 'selectMany'](element); else { var opt, value, single =3D !Object.isArray(index); for (var i =3D 0, length =3D element.length; i < length; i++) { opt =3D element.options[i]; value =3D this.optionValue(opt); if (single) { if (value =3D=3D index) { opt.selected =3D true; return; } } else opt.selected =3D index.include(value); } } }, selectOne: function(element) { var index =3D element.selectedIndex; return index >=3D 0 ? this.optionValue(element.options[index]) : = null; }, selectMany: function(element) { var values, length =3D element.length; if (!length) return null; for (var i =3D 0, values =3D []; i < length; i++) { var opt =3D element.options[i]; if (opt.selected) values.push(this.optionValue(opt)); } return values; }, optionValue: function(opt) { // extend element because hasAttribute may not be native return Element.extend(opt).hasAttribute('value') ? opt.value : = opt.text; } }; /*-----------------------------------------------------------------------= ---*/ Abstract.TimedObserver =3D Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element =3D $(element); this.lastValue =3D this.getValue(); }, execute: function() { var value =3D this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue !=3D value : String(this.lastValue) !=3D = String(value)) { this.callback(this.element, value); this.lastValue =3D value; } } }); Form.Element.Observer =3D Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer =3D Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*-----------------------------------------------------------------------= ---*/ Abstract.EventObserver =3D Class.create({ initialize: function(element, callback) { this.element =3D $(element); this.callback =3D callback; this.lastValue =3D this.getValue(); if (this.element.tagName.toLowerCase() =3D=3D 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value =3D this.getValue(); if (this.lastValue !=3D value) { this.callback(this.element, value); this.lastValue =3D value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', = this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', = this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver =3D Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver =3D Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); if (!window.Event) var Event =3D { }; Object.extend(Event, { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: { }, relatedTarget: function(event) { var element; switch(event.type) { case 'mouseover': element =3D event.fromElement; break; case 'mouseout': element =3D event.toElement; break; default: return null; } return Element.extend(element); } }); Event.Methods =3D (function() { var isButton; if (Prototype.Browser.IE) { var buttonMap =3D { 0: 1, 1: 4, 2: 2 }; isButton =3D function(event, code) { return event.button =3D=3D buttonMap[code]; }; } else if (Prototype.Browser.WebKit) { isButton =3D function(event, code) { switch (code) { case 0: return event.which =3D=3D 1 && !event.metaKey; case 1: return event.which =3D=3D 1 && event.metaKey; default: return false; } }; } else { isButton =3D function(event, code) { return event.which ? (event.which =3D=3D=3D code + 1) : = (event.button =3D=3D=3D code); }; } return { isLeftClick: function(event) { return isButton(event, 0) }, isMiddleClick: function(event) { return isButton(event, 1) }, isRightClick: function(event) { return isButton(event, 2) }, element: function(event) { var node =3D Event.extend(event).target; return Element.extend(node.nodeType =3D=3D Node.TEXT_NODE ? = node.parentNode : node); }, findElement: function(event, expression) { var element =3D Event.element(event); return element.match(expression) ? element : = element.up(expression); }, pointer: function(event) { return { x: event.pageX || (event.clientX + (document.documentElement.scrollLeft || = document.body.scrollLeft)), y: event.pageY || (event.clientY + (document.documentElement.scrollTop || = document.body.scrollTop)) }; }, pointerX: function(event) { return Event.pointer(event).x }, pointerY: function(event) { return Event.pointer(event).y }, stop: function(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped =3D true; } }; })(); Event.extend =3D (function() { var methods =3D Object.keys(Event.Methods).inject({ }, function(m, = name) { m[name] =3D Event.Methods[name].methodize(); return m; }); if (Prototype.Browser.IE) { Object.extend(methods, { stopPropagation: function() { this.cancelBubble =3D true }, preventDefault: function() { this.returnValue =3D false }, inspect: function() { return "[object Event]" } }); return function(event) { if (!event) return false; if (event._extendedByPrototype) return event; event._extendedByPrototype =3D Prototype.emptyFunction; var pointer =3D Event.pointer(event); Object.extend(event, { target: event.srcElement, relatedTarget: Event.relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); return Object.extend(event, methods); }; } else { Event.prototype =3D Event.prototype || = document.createEvent("HTMLEvents").__proto__; Object.extend(Event.prototype, methods); return Prototype.K; } })(); Object.extend(Event, (function() { var cache =3D Event.cache; function getEventID(element) { if (element._eventID) return element._eventID; arguments.callee.id =3D arguments.callee.id || 1; return element._eventID =3D ++arguments.callee.id; } function getDOMEventName(eventName) { if (eventName && eventName.include(':')) return "dataavailable"; return eventName; } function getCacheForID(id) { return cache[id] =3D cache[id] || { }; } function getWrappersForEventName(id, eventName) { var c =3D getCacheForID(id); return c[eventName] =3D c[eventName] || []; } function createWrapper(element, eventName, handler) { var id =3D getEventID(element); var c =3D getWrappersForEventName(id, eventName); if (c.pluck("handler").include(handler)) return false; var wrapper =3D function(event) { if (!Event || !Event.extend || (event.eventName && event.eventName !=3D eventName)) return false; Event.extend(event); handler.call(element, event) }; wrapper.handler =3D handler; c.push(wrapper); return wrapper; } function findWrapper(id, eventName, handler) { var c =3D getWrappersForEventName(id, eventName); return c.find(function(wrapper) { return wrapper.handler =3D=3D = handler }); } function destroyWrapper(id, eventName, handler) { var c =3D getCacheForID(id); if (!c[eventName]) return false; c[eventName] =3D c[eventName].without(findWrapper(id, eventName, = handler)); } function destroyCache() { for (var id in cache) for (var eventName in cache[id]) cache[id][eventName] =3D null; } if (window.attachEvent) { window.attachEvent("onunload", destroyCache); } return { observe: function(element, eventName, handler) { element =3D $(element); var name =3D getDOMEventName(eventName); var wrapper =3D createWrapper(element, eventName, handler); if (!wrapper) return element; if (element.addEventListener) { element.addEventListener(name, wrapper, false); } else { element.attachEvent("on" + name, wrapper); } return element; }, stopObserving: function(element, eventName, handler) { element =3D $(element); var id =3D getEventID(element), name =3D = getDOMEventName(eventName); if (!handler && eventName) { getWrappersForEventName(id, eventName).each(function(wrapper) { element.stopObserving(eventName, wrapper.handler); }); return element; } else if (!eventName) { Object.keys(getCacheForID(id)).each(function(eventName) { element.stopObserving(eventName); }); return element; } var wrapper =3D findWrapper(id, eventName, handler); if (!wrapper) return element; if (element.removeEventListener) { element.removeEventListener(name, wrapper, false); } else { element.detachEvent("on" + name, wrapper); } destroyWrapper(id, eventName, handler); return element; }, fire: function(element, eventName, memo) { element =3D $(element); if (element =3D=3D document && document.createEvent && = !element.dispatchEvent) element =3D document.documentElement; if (document.createEvent) { var event =3D document.createEvent("HTMLEvents"); event.initEvent("dataavailable", true, true); } else { var event =3D document.createEventObject(); event.eventType =3D "ondataavailable"; } event.eventName =3D eventName; event.memo =3D memo || { }; if (document.createEvent) { element.dispatchEvent(event); } else { element.fireEvent(event.eventType, event); } return event; } }; })()); Object.extend(Event, Event.Methods); Element.addMethods({ fire: Event.fire, observe: Event.observe, stopObserving: Event.stopObserving }); Object.extend(document, { fire: Element.Methods.fire.methodize(), observe: Element.Methods.observe.methodize(), stopObserving: Element.Methods.stopObserving.methodize() }); (function() { /* Support for the DOMContentLoaded event is based on work by Dan = Webb, Matthias Miller, Dean Edwards and John Resig. */ var timer, fired =3D false; function fireContentLoadedEvent() { if (fired) return; if (timer) window.clearInterval(timer); document.fire("dom:loaded"); fired =3D true; } if (document.addEventListener) { if (Prototype.Browser.WebKit) { timer =3D window.setInterval(function() { if (/loaded|complete/.test(document.readyState)) fireContentLoadedEvent(); }, 0); Event.observe(window, "load", fireContentLoadedEvent); } else { document.addEventListener("DOMContentLoaded", fireContentLoadedEvent, false); } } else { document.write("