From: Subject: Aptina Imaging - History / Legacy Date: Tue, 4 Mar 2008 14:22:08 -0800 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01C87E03.216380F0" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C87E03.216380F0 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.aptina.com/about/history_legacy.jsp =EF=BB=BF Aptina Imaging - = History / Legacy

History / Legacy

At Aptina, we=E2=80=99re the synthesis of foundational CMOS image = sensor technology,=20 stunning innovation, and second-to-none manufacturing quality. = We=E2=80=99re the=20 aggregate of three of the industry=E2=80=99s most innovative companies. = We trace our=20 history to the beginning of the development of CMOS image sensors. We = take pride=20 in where we=E2=80=99ve been, and we look forward to our future.

The Birth of Digital Imaging: 1969

In 1969, Drs. Willard Boyle and George Smith developed the = charge-coupled=20 device (CCD) while they were both researchers in the Semiconductor = Components=20 Division at Bell Laboratories.

Boyle and Smith=E2=80=99s invention sparked the digital imaging = revolution. But like=20 many first generation technologies, the CCD had several shortcomings, = including=20 a complicated, unique, and therefore expensive manufacturing process, = dependency=20 on powerful and separate processors, and relatively slow readout.

A Step Toward Imaging Efficiency: Up to 1995

While at NASA=E2=80=99s Jet Propulsion Laboratory, Dr. Eric Fossum = conducted the=20 research that made CMOS image sensors practical =E2=80=9Cfor space = applications in which=20 it has several advantages over CCDs, including a requirement for less = power and=20 less susceptibility to radiation damage in space=E2=80=9D, a NASA report = said.

Dr. Fossum=E2=80=99s research led to the development of CMOS = active-pixel sensors=20 that included many on-chip functions, allowing for more portability, = lower power=20 consumption, and complete miniature imaging systems. Dr. Fossum and = several of=20 his JPL coworkers took this technology public and formed the Photobit=20 Corporation.

Photobit, a Leader in Imaging Solutions: 1995 to 2001

Photobit was effectively the first company to commercialize CMOS = image=20 sensors. The company had design wins with leading manufacturers like, = Logitech=20 for its popular QuickCam=E2=84=A2 Express, Basler AG for high-speed = machine vision=20 solutions, Schick Technologies for dental radiography, and was the = world's=20 leading supplier of CMOS imagers to the automotive industry thanks to = Gentex's=20 successful solutions, like their automatic-dimming mirrors.

Micron Brings Manufacturing Processing Prowess: 2001

In 2001 Micron Technology, a leading manufacturer of semiconductor = memory=20 acquired Photobit, integrated the company=E2=80=99s cadre of imaging = engineers, and=20 brought new scale to the CMOS imaging business.

The combination of Photobit=E2=80=99s foundational technology and = Micron=E2=80=99s=20 semiconductor processes was nothing short of magical. In general, DRAM = processes=20 and CMOS image sensor processes are very similar. Plus, the new Micron = Imaging=20 Group found that there was another advantage to DRAM. DRAM memory cells, = which=20 are strikingly similar to pixels had long been designed to hold a = charge.=20 Because of this memory processes produce very low noise cells and = therefore=20 high-quality imagers. Most imagers at the time were produced using logic = semiconductor processes, which are generally designed to move charges = about=20 quickly with little regard for the system noise they produce. Thus, in a = few=20 generations CMOS image quality rose to parity and even superiority to = CCD=20 quality. Put another way, thanks to Micron=E2=80=99s manufacturing, if = you compared a=20 modern Aptina CMOS imager to a CCD with similar sized pixels, = you=E2=80=99d find that in=20 most cases the Aptina CMOS sensor offers better image quality.

Avago: 2006

In December 2006, the then Micron Imaging Group took another step = toward=20 imaging dominance, acquiring Avago Technologies' image sensor business, = which=20 included nearly 90 top-notch imaging engineers. These engineers had been = rapidly=20 advancing CMOS technology and Micron saw the deal as an opportunity to = leap=20 ahead of the competition.

The World=E2=80=99s Leading Supplier: 2006 and 2007

In 2006, Micron's Imaging Group also became the world's leading = supplier of=20 CMOS image sensors. Micron CMOS sensors were designed into one of every = three=20 camera phones on Earth in 2006 and 2007.

The Aptina Era Begins

In 2008, Micron saw yet another strategic opportunity. Its imaging = business=20 while similar to DRAM at the fab level, demanded a new focus on sales = and=20 marketing. So Micron created Aptina, a division that is the world's = foremost=20 imaging solutions provider and the imaging company with perhaps the = industry's=20 brightest future.

=C2=A9 2008 Micron Technology, Inc. All Rights = Reserved.

------=_NextPart_000_0000_01C87E03.216380F0 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://www.aptina.com/assets/images/aptina-logo.jpg /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAASwAA/+4ADkFkb2JlAGTAAAAAAf/b AIQAAwICAgICAwICAwUDAwMFBQQDAwQFBgUFBQUFBggGBwcHBwYICAkKCgoJCAwMDAwMDA4ODg4O EBAQEBAQEBAQEAEDBAQGBgYMCAgMEg4MDhIUEBAQEBQREBAQEBARERAQEBAQEBEQEBAQEBAQEBAQ EBAQEBAQEBAQEBAQEBAQEBAQ/8AAEQgANwC2AwERAAIRAQMRAf/EAKEAAAAGAwEAAAAAAAAAAAAA AAABBQYHCAIDBAkBAQEAAwADAAAAAAAAAAAAAAABAgUGAwQHEAABAwIFAgMFAwYJDQAAAAACAQME BQYAERIHCCETMVEiQWEyFAmBkRZxQiMVtRehsWKT09SlVldScoIzY3OzJGR0tGYZEQEAAgEDAgMJ AAAAAAAAAAAAAREDIQIEMVEiEwXwQWGB4RIycgb/2gAMAwEAAhEDEQA/APPXv+/GQ7KXAqFZljBp jKvvEikooqCIiKZkRkSoIiidVIlRE9uAcaUm0KIGqtTHaq6P+tCCYxYwL/3D7ZkfvybFPIl8cLWm AXNYHZIgokVxkeiyFmyyJFTLxMXUD8vp+7EsqGYRbErgaqbIfpJl8DrjgVCIqr7CVpttxsfeiOr7 sLKItZo9RoLwNzQFW3kU40pokcYeBOik2Y9Fy9qeIr0VEXpioTkewB95MAffwA73vwB95PPAH3/f gD73vwB9/ADvYA0ewB97ADvYA0ewB9/ABHvfgMu/78AO/wC/AI8RqTPlMwYbauvyDFplofEjNdIo n5VXASFApdRmy4m3litfOzZ5IL7gloCU636jedP2MNZ+n78tZZYjLotrtHxj27tNtipXRFbuiudC cmT20cjtF5R45ZgCJ5qil5risT8tyPbNgXrIs+HGjMUqsaZMeK202IR5LnRBURRERC05J/o4iOLd LjftPuBGdfKktUSrqi9mt0oAiyBLxRXEBEB1M/FDRcVVLbstSubaXDK28voEkw3078eWyOTchrPS MqNqX0Oh4GOf8lcxLEZdUb1mA/Rak9TnzQ1bVFbdHPS62aIYODmiLkQqipisXF3vfgJN2N47bu8j KpVKTtNRkqrtGZbkVJ12QzFZZF41BsVcfIB1GqFpHPNUEl9i4BnXraVy7eXbVrGu+GVPrVDkuwqj DNUVQdaLSuRCqoQr4iSLkSKip0XAIve9+APvYAd5cBIVhbG7lblWLd+41o09uVQrFZGVckk5LLJM NE246ii24SEfpbLoKLgI/wC9gJWs2h8eJuxl3169LoqMDdGHJbCzbbjtGUCbGXsazfNIbooqanfG Q38KdPMIqR7AH38AO978UH3vfiA+/wC/AH3vfgD73vwCht1GV6oTp4p64cY0YLydkEjH3oBmqe9M CFjeMlvRYbdYvF4EWTLkHToZqnUI0MtBonlqeQ8/PSPlgqwtRvOn2pQpVdqJ5NRQ1IGfUzXoAJ7y VUTAKFo7Yzbr22qFduBO3c1wqNRhPHmKxNCKsZvzFCRfV5CqJlmOON5Pq/28qKnw7dJ+Pf6NLl5l ZtPxhz2bfp3NRDCoIrNVpplDq0Yk0mD7XpVVH2Z5ffmnsx2G3dG6LjpLcxUxcIn5RUKJcW30iu6E +dtov1nHdRMy7LfSSHnkTOr7URfZjJVS7+hq3S6VNXqTJPQyL/ZIqPNdfb1M/sRMCTPhsy6hLYgQ WSkSZJgzHYaFTNxxwkEREU6qqquSJgj0p3MvKX9NzjBaO0ViyWmN373eZuC6p4o28sNpoxJwVRc0 UMwSK3mmkxF40yLEDW502fb/ACP2RtLnXtfE0uSI7FM3EpzSaijPNL2BccyRFzYe/QkS/E2rRJ6U wFd+B1Jo1ycttuqJcECPU6fKlyxkwJjISGHUGnyCRDbcQhJEVEXqnjii2O+3MHi1sJudc23W3vHq iV2pUyoSGLhq9TjQozZzAcLujHH5aUatoS+n1NiPgIZZYg5LJufhHz4cc20qVhsbNblzGzW3apSE YGNJfbBSQENhuM28WSZk080JKPRtzV4BL3Hy8ntk9gd69t7z25pCVTZCA3GriNq2TN1AUaRKaekq sdFUHWkRR1oa6T6oi5pgKt176jG29ZodRo7PHG1ITk6M/GbmNJF7jBPNqCODlT0XMVXNOqYtDTsN atqVL6cW+l1VCjQpVZp1VjN0+rvRWXJkcFWnZi0+QqYIuougqnivngLCX9uHxf42cbuP163xs/TL 0uq4bWp71GBYMJlo3WqXT3Jb8t5xp1FNTdbUTJpw81JUy65wRNQedfEbcp9LS3x480eh0WavaKu0 NqO7IiC5kKnkxFiyBRPEiZd15eAquFCPuTnByVY+4FjObCzVuuyt2XmWbJlqaOKw/JQXAZdeFMia Vs+4Dqon6NC1fApFRMV10PhDwFiw7Pvi2B3o3VNhuRWI8wGyp8TuihCJNyEcYZEk6gPbdey9RaRI cQZbbct+HnIbcK3dtdxOONLt964KhCpdIqlN+TkkkqVIFpgXjYiU90WlcNELIjTJeoqmeAh3lvH2 v468w7iolDsKnVG2I0SjK3bDqCEXM2osl/IjB0xV0UMFIciTXqRc0TFFfPxxYH70fxf+CQ/Cvcz/ AAV+sDy7HY7Pb+c7WvPV69ejPPAcuzHblT6pCX4iZadRP5Lbmlf4TTAWK2VkFT7MSAnU4U+qtOj4 ZKs950fvAxX7cVLaYG4VsbkbysWlX6lFgWpZxJMrDkyUyw3OniukI490h1IK5oXTwQ09o40XrHKy YcE+XEzunSKi67z7e96XMz7sePwxMzPZdWk727IfqklfvKjg6iekFqcJF/4uPiOeOfGWKxb6/WXj 4+LH5OsTapW+e61kbfboQdxrSrEOpUa4jGn3PEgzI75NOon6OV22zJdOSepUT2L7Tx9Z/nuVl3Y/ Ky7d0THS4mNO3yThZpm9kxMV00J+5e6lpz7EuKPGq0KQ49T5jbUZuWy446ZsGIgIiqqqkq5eGOyb K0A7tsDTbbp8RxER118SRPLsskJZfaaYirMfS447hdN3VXkteVNfm23t0LrtEhx4xynp9aaa736B hsSN0ozaoQgKaleNrTmqKmJIiXkHY3L/AJB7uXDupce0d5NnVn1SnwVturEMOA16I0cco+XobRNS p8Rai8SXFFg/pz0TfGwbnuDYjebau6A2z3KjPRakVSt+qMwYc1WFb7jrhsiLbb7WbThdOvbXUiAu IGRsfsRXeN/1M7Q2tq6m9Giz5kmhVExUfnaZIp8so7ydMs8kUDy6I4Jj7MBAfMhxU5WbsJ/7JVf/ ACSxRo4mWNe+4nIuwKLYTTy1CLWKfUnprKZpBjQZISHpRl4CLYAq9fiXIUzIkRQ9T7gqdB3m3Q5b 7G2VLaeuioWxSIcVjU2IyJjNNlMOChavBp19lpwl+Aiy9mIPGCq06qUKpy6LWojsGoQXTjzYUhsm 3mXmiUTAwJEUSFUyVFxRePjsef0v+Qa+VYifx0zEA+oSeXGTh6vnaB/sqg4CiXdxR7GcQrho9L4k 8XKzdbyE0N3VSBFfkLr0SJn4kpsMRU16et4AHyTwxB56c8bJvWxuVe4SXo09nXKpLrNFmuiXbkU2 a6TsbtGvQhaBUZXL4SBR9mKGfxbcz5NbRJ53fbX7Vj4CY/qjHlzKuxP+jo37OZwgVO7vvwCjt7co WxdkKpSVyikqsy/9050VV/zVyL7MVE93nXbg25pVVrFrRSmsXMLAQ3WslCJVHNMcXSzVEQHG9OS+ HcBM/jwCla/Hbb2DQIce5qYFVq2jXUZ7jryK4+aqR5aTFMkVck6eCdeuFBV/cFtD/dtn+ekf0mFI H7gtof7ts/z0j+kwoNaftPtu/dkOk2rQ2mVozrc2tzxceMW1FNTEVNZkKmZZGafmgnX40wpUS703 NGrd2rTobmuJSkJjWPVFeJc3VT8mSD9mAtJdf1GQ212bsDZ7ho1ULKYt1lz8SViswKVIkTpBpmSg 24s1vJ10jdcJUEs9IjkKLnKVHn/045vf4k/2FQP6hhQH/wBOOb3+JP8AYVA/qGFC0WyHL7bzlNvB x3j3fRqgzvJa0yaxUrkajw26XOjHTpQuoqtvC4iuaQdROygtnrEPSWeINvIHldwZqm9N42ryJ2Pl VOu2vU5dJ/EVF+XcenjEcVoHHySRTnM1RPhInNPgi4CMLm+pFtrtjZ8+yeFm1cfb4qkOiRdVQBg5 6J1RF7IK93HBRfQbz7iD/kLgKe7db1bl7Wbkx92rOrj8e6GX3ZL9ReJX1llIVSfGSjmfdF3NdaFn n4+OS4outK588Ot70YrPKjYcpdztAASK3bqsuFKUA0opEciC+gJ+aBuu6U/OxAy7z5j8dI2yW8Oy Wzdj1W26PfsqnyLbYdSP2oiRWYIPLIzlPHqcOMZekj+JOuKI45P8nbU3z2i2K28t6lzoE3auhFRa xJm9nsynlhU2Nrj9pwy06oRL6kFclT34CuHcXAWeuPlja1V4N2Vxfp1MqMa5rWq7lWerebIwyEp0 +WKNELndQ0SWPiKdRX3YCULF+o9ZN82PA235obbM7lwqYKNwrnjiytVEUHRrMHibzeVOhOtvNKX5 yKua4lB0WVzO+nJs1cNOufaLYmrhVGpLRO1OqfLuyILRHk69DKVUJ6o6IKqgIq1q+HWKdUCrfM7f W0uRXICubrWTEmwqRUmKeyxHqrbLUoSiRG2DUhjvPgiKQLlka9PLFEH91MBzYomnZ/ealUyAti7i MjMob4qw2+6PdFtsuituCueYeXlgiw9v2Tc6wG5m2NXi3PRTRFj0yoySF5kPYLM4Bd1InsF4M08O 5ioXAtTeRWCc/dxUTUemtqo0NWl96EdQA8vyhgOCoWRuXIjm9c8iJZlMFM5KsyBmVFR9qI6ojHZz T85O6vllgIH3S3jti26QdhbU5KCaxlVUCU01GuZqLh5k44aqqkar4+3EVXpVUlVVXNV6qq4KGAGA GA6adU6jR5rVSpEp2DLYVVZlRnCadBVRRVRMFQk6Ll0XAYTZsypS3p9RfclSpBK4/JeMnHHDJc1I iJVVVXzXAac1wAzXADNcAtQbUqtRtOr3nHJv5CiyYEKYhEqOq7URkEzoHLJUyinq6pl0wQ/K3xq3 Pt7bdzdWpsxm6AFMpFaF9HiVxyPWX+wwADoTNwVUScTPIRIVzXPANmobW3bTNsqXuzKaaSg1eY5T 4hCaq93G+4mogyyQCJlwRXPqoF5YDfd20d2WRa1NuuvKwDNT+W0xGleceY+cjfOMI8SN9kSNnI+3 3FNBJFUUzwHfRNib9uLcOXtfSBjP16JD/WPZ7yi26Cxm5QttmQpmZC4KIi5Jq6Z+3AYQ9kL2l7g1 nbjOMzULfaORWJTrppGjtArYalVG1cJVceBsREFJTJERMAzbgo82267ULeqGSyabIeivkKGIkbJq CkKOiB5LlmmoUXLxRMRXBrwGOKBgHfYEndeLM722aVYpCeKUhuQ6v2iyhfxYImuLuXzsYpjkMKRc zoFoyklQpimCB5KjCD6vbmi4uqaIo3IqO/NSTv7ohXQbXqg1WPKjtfYLgAP8GIqPMFDADADADADA DADADADALdPqF2M2fWaZTgeW3ZUqnO1swjobKSmBkpDRx7QqgSi49pHUmv1dF09CH/cF38k5e2g0 i42KsNkfIRI4OP0ntQfkASnJGVJHy4pp/wCXiaD15rmnX9KWsEqqXJvi9tbGpdWZqKWATcWPCNyn aKZlHkPuMq0/2UBHFdN3MxLWfUSUkHJAF43VvZULAp1t3qxNG2IR05yE9LpYMIRJEdSBqmdgHXU+ WJzsobhJ289HpToGuLcO9R33UajAaqH4slwUjVAGKflMSCsZpsV7IM5tp2RDJwRFfAkLNc8B1NXd vrG3LuK6exOW8DZfK62XaS24XyxdsXvnYLkdWkbz0Zo41pQtK+OWAZ97T7rql31io30LwXDJlPO1 oJTHyz6SiNVcRxlBDQWrxHSmXlgETBX/2Q== ------=_NextPart_000_0000_01C87E03.216380F0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.aptina.com/assets/images/wrapper-width.gif R0lGODlhGwQBAIAAAP///wAAACH5BAEAAAAALAAAAAAbBAEAAAIfhI+py+0Po5y02ouz3rz7D4bi SJbmiabqyrbuC8dUAQA7 ------=_NextPart_000_0000_01C87E03.216380F0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.aptina.com/assets/css/reset.css HTML { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } BODY { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } DIV { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } SPAN { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } APPLET { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } OBJECT { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } IFRAME { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } H1 { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } H2 { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } H3 { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } H4 { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } H5 { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } H6 { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } P { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } BLOCKQUOTE { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } PRE { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } A { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } ABBR { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } ACRONYM { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } ADDRESS { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } BIG { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } CITE { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } CODE { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } DEL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } DFN { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } EM { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } FONT { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } IMG { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } INS { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } KBD { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } Q { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } S { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } SAMP { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } SMALL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } STRIKE { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } STRONG { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } SUB { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } SUP { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } TT { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } VAR { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } DL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } DT { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } DD { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } OL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } UL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } LI { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } FIELDSET { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } FORM { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } LABEL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } LEGEND { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } TABLE { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } CAPTION { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } TBODY { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } TFOOT { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } THEAD { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } TR { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } TH { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } TD { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px; outline: 0 } :focus { outline: 0 } BODY { BACKGROUND: white; COLOR: black; LINE-HEIGHT: 1 } OL { LIST-STYLE-TYPE: none } UL { LIST-STYLE-TYPE: none } TABLE { BORDER-COLLAPSE: separate; border-spacing: 0 } CAPTION { FONT-WEIGHT: normal; TEXT-ALIGN: left } TH { FONT-WEIGHT: normal; TEXT-ALIGN: left } TD { FONT-WEIGHT: normal; TEXT-ALIGN: left } BLOCKQUOTE:unknown { content: "" } BLOCKQUOTE:unknown { content: "" } Q:unknown { content: "" } Q:unknown { content: "" } BLOCKQUOTE { quotes: "" "" } Q { quotes: "" "" } ------=_NextPart_000_0000_01C87E03.216380F0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.aptina.com/assets/css/styles.css @import url( /assets/css/reset.css ); BODY { BACKGROUND: url(/assets/images/tiled-bg.jpg) #202020; FONT: 12px arial, = sans-serif; COLOR: #bcbcbc; HEIGHT: 100% } BODY#home { BACKGROUND: url(/assets/images/aptina-bg.jpg) #171717 repeat-x } H1 { FONT: 22px/18px arial; COLOR: #fff; BACKGROUND-COLOR: transparent } #home IMG#hero { WIDTH: 947px; HEIGHT: 469px } #page-title-banner H1.sIFR-replaced { PADDING-TOP: 3px } H4 { COLOR: #fff; BACKGROUND-COLOR: transparent } H5 { COLOR: #fff } H6 { COLOR: #bcbcbc } A { TEXT-DECORATION: none } INPUT { POSITION: relative } #content A { COLOR: #bcbcbc; TEXT-DECORATION: underline } #content A:hover { COLOR: #999999 } P { LINE-HEIGHT: 18px } .right { FLOAT: right } .left { FLOAT: left } IMG.thumbnail { BORDER-RIGHT: #3e3e3e 3px solid; BORDER-TOP: #3e3e3e 3px solid; = BORDER-LEFT: #3e3e3e 3px solid; BORDER-BOTTOM: #3e3e3e 3px solid } SPAN.arrow { PADDING-LEFT: 5px; FONT-SIZE: 5pt; COLOR: #87c525; BOTTOM: 1px; = POSITION: relative } SUP.exponent { FONT-SIZE: 0.9em; VERTICAL-ALIGN: super } SUP.tm { FONT-SIZE: 16px; BOTTOM: 4px; POSITION: relative } #content UL { MARGIN-BOTTOM: 10px } #content UL LI { PADDING-LEFT: 9px; BACKGROUND: url(/assets/images/grn-square.gif) = no-repeat 0px 7px; MARGIN: 0px 0px 6px; LINE-HEIGHT: 18px; = LIST-STYLE-TYPE: none } UL.spaced LI { MARGIN-BOTTOM: 10px } .red { COLOR: #ff0000 } .small { FONT-SIZE: 11px; LINE-HEIGHT: 15px } #content FORM { WIDTH: 80% } #content FORM .error { DISPLAY: none; MARGIN: 5px 5px 0px 0px; COLOR: red } #content FORM .row { CLEAR: both; FLOAT: left; WIDTH: 350px } #content FORM .row INPUT { BACKGROUND: #404040 } #content FORM SELECT { BACKGROUND: #404040 } FORM LABEL { FONT-SIZE: 11px; FLOAT: left; MARGIN: 10px 20px 0px 0px; WIDTH: 32%; = TEXT-ALIGN: right } FORM INPUT { BORDER-RIGHT: #4a4647 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: = #393939 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 11px; BACKGROUND: = #404040; PADDING-BOTTOM: 2px; BORDER-LEFT: #393939 1px solid; COLOR: = #c9c9c9; PADDING-TOP: 2px; BORDER-BOTTOM: #4a4647 1px solid } FORM SELECT { BORDER-RIGHT: #4a4647 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: = #393939 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 11px; BACKGROUND: = #404040; PADDING-BOTTOM: 2px; BORDER-LEFT: #393939 1px solid; COLOR: = #c9c9c9; PADDING-TOP: 2px; BORDER-BOTTOM: #4a4647 1px solid } FORM TEXTAREA { BORDER-RIGHT: #4a4647 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: = #393939 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 11px; BACKGROUND: = #404040; PADDING-BOTTOM: 2px; BORDER-LEFT: #393939 1px solid; COLOR: = #c9c9c9; PADDING-TOP: 2px; BORDER-BOTTOM: #4a4647 1px solid } FORM TEXTAREA { WIDTH: 295px; HEIGHT: 100px } FORM INPUT { FLOAT: left; MARGIN: 5px 0px } .login INPUT { FLOAT: left; MARGIN: 5px 0px } FORM SELECT { PADDING-RIGHT: 0px; PADDING-LEFT: 2px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } FORM SELECT#country { MARGIN-TOP: 6px; FLOAT: none; WIDTH: 151px } FORM SELECT#salutation { MARGIN-TOP: 6px; FLOAT: none; WIDTH: 151px } FORM INPUT[type=3D'radio'] { BORDER-TOP-WIDTH: 0px; CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: = 0px; BORDER-LEFT-WIDTH: 0px; BACKGROUND: none transparent scroll repeat = 0% 0%; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 8px = 8px 0px; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px } FORM INPUT[type=3D'radio'] + LABEL { FLOAT: none; MARGIN: 0px } FORM INPUT#submit { CLEAR: both; FLOAT: none } #content FORM #submit-login { FLOAT: right; MARGIN-RIGHT: 47px } #content FORM #submit-email { FLOAT: right; MARGIN-RIGHT: 47px } #content FORM.login #submit-login { FLOAT: right; MARGIN-RIGHT: 47px } #content FORM.login #submit-email { FLOAT: right; MARGIN-RIGHT: 47px } FORM INPUT[type=3D'image'] { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BACKGROUND: none = transparent scroll repeat 0% 0%; BORDER-BOTTOM-WIDTH: 0px; = BORDER-RIGHT-WIDTH: 0px } FORM LABEL.req SPAN.req { COLOR: #ff0000 } #content FORM SPAN.required { COLOR: #ff0000 } * HTML FORM SELECT#country { MARGIN-LEFT: -3px } * HTML FORM SELECT#salutation { MARGIN-LEFT: -3px } #container { =09 } #content-wrap { MIN-HEIGHT: 400px; BACKGROUND: url(/assets/images/content-wrap-bg.gif) = #100f10 repeat-y; FLOAT: left; PADDING-BOTTOM: 30px; WIDTH: 947px } #wrapper { MARGIN: 0px auto; WIDTH: 948px; POSITION: relative } #main { BACKGROUND: url(/assets/images/content-btm.gif) #100f10 repeat-x center = bottom; FLOAT: left; MARGIN-BOTTOM: 38px; PADDING-BOTTOM: 32px; WIDTH: = 948px; POSITION: relative } #home #header { BORDER-BOTTOM: #87c525 1px solid; HEIGHT: 127px } #header { BACKGROUND: url(/assets/images/header-bg-no-search.png) no-repeat; = FLOAT: left; WIDTH: 947px; BORDER-BOTTOM: #87c525 0px solid; HEIGHT: = 135px } #header IMG { FLOAT: left; MARGIN: 48px 0px 0px 30px } #header P#company-name { TEXT-INDENT: -99999px } #header UL#login-register LI { FLOAT: left } #header #mainnav-container { FLOAT: right; MARGIN: 45px 0px 0px; WIDTH: 705px; HEIGHT: 26px } #header UL#mainnav { MARGIN-LEFT: 8px } #header UL#mainnav LI A { MARGIN-TOP: 9px; DISPLAY: block; POSITION: relative; HEIGHT: 18px } #header UL#mainnav LI { FLOAT: left; TEXT-INDENT: -99999px } #header UL#mainnav A { PADDING-RIGHT: 8px; PADDING-LEFT: 8px; BACKGROUND: = url(/assets/images/global-nav.gif) no-repeat; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } #header LI#n-products A { BACKGROUND-POSITION: 8px -60px; WIDTH: 46px } BODY#products #header LI#n-products A { BACKGROUND-POSITION: 8px -34px } BODY#products #header LI#n-products A:hover { BACKGROUND-POSITION: 8px -34px } #header LI#n-products A:hover { BACKGROUND-POSITION: 8px -8px } #header LI#n-solutions A { BACKGROUND-POSITION: -53px -60px; WIDTH: 49px } #header LI#n-solutions A:hover { BACKGROUND-POSITION: -53px -8px } BODY#solutions #header LI#n-solutions A { BACKGROUND-POSITION: -53px -34px } BODY#solutions #header LI#n-solutions A:hover { BACKGROUND-POSITION: -53px -34px } #header LI#n-support A { BACKGROUND-POSITION: -118px -60px; WIDTH: 42px } BODY#support #header LI#n-support A { BACKGROUND-POSITION: -118px -34px } BODY#support #header LI#n-support A:hover { BACKGROUND-POSITION: -118px -34px } #header LI#n-support A:hover { BACKGROUND-POSITION: -118px -8px } #header LI#n-howtobuy A { BACKGROUND-POSITION: -175px -60px; WIDTH: 62px } BODY#how_to_buy #header LI#n-howtobuy A { BACKGROUND-POSITION: -175px -34px } BODY#how_to_buy #header LI#n-howtobuy A:hover { BACKGROUND-POSITION: -175px -34px } #header LI#n-howtobuy A:hover { BACKGROUND-POSITION: -175px -8px } #header LI#n-about A { BACKGROUND-POSITION: -252px -60px; WIDTH: 33px } BODY#about #header LI#n-about A { BACKGROUND-POSITION: -252px -34px } BODY#about #header LI#n-about A:hover { BACKGROUND-POSITION: -252px -34px } #header LI#n-about A:hover { BACKGROUND-POSITION: -252px -8px } #header LI#n-news A { BACKGROUND-POSITION: -300px -60px; WIDTH: 29px } BODY#news #header LI#n-news A { BACKGROUND-POSITION: -300px -34px } BODY#news #header LI#n-news A:hover { BACKGROUND-POSITION: -300px -34px } #header LI#n-news A:hover { BACKGROUND-POSITION: -300px -8px } #header LI#n-careers A { BACKGROUND-POSITION: -345px -60px; WIDTH: 38px } BODY#careers #header LI#n-careers A { BACKGROUND-POSITION: -345px -34px } BODY#careers #header LI#n-careers A:hover { BACKGROUND-POSITION: -345px -34px } #header LI#n-careers A:hover { BACKGROUND-POSITION: -345px -8px } FORM#search INPUT#search-text { PADDING-RIGHT: 0px; PADDING-LEFT: 3px; FONT-SIZE: 10px; FLOAT: left; = PADDING-BOTTOM: 0px; MARGIN: 7px 7px 7px 13px; WIDTH: 136px; COLOR: = #f1f1f1; BORDER-TOP-STYLE: none; PADDING-TOP: 1px; BORDER-RIGHT-STYLE: = none; BORDER-LEFT-STYLE: none; HEIGHT: 14px; BACKGROUND-COLOR: #333; = BORDER-BOTTOM-STYLE: none } FORM#search INPUT#search-button { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; RIGHT: 12px; FLOAT: left; BORDER-BOTTOM-WIDTH: = 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; POSITION: = relative; TOP: 6px; BORDER-RIGHT-WIDTH: 0px } #header #welcome { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 10px; RIGHT: 25px; = PADDING-BOTTOM: 0px; WIDTH: 300px; PADDING-TOP: 0px; POSITION: absolute; = TOP: 40px; HEIGHT: 20px; TEXT-ALIGN: right } #header UL#login-register { PADDING-RIGHT: 22px; FLOAT: right; LINE-HEIGHT: 27px } #header UL#login-register LI { PADDING-RIGHT: 3px; FONT-SIZE: 10px; BACKGROUND: = url(/assets/images/green-divider.gif) no-repeat right 8px } #header UL#login-register LI.last { PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0% } #header UL#login-register LI A { PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 0px; COLOR: = #fff; PADDING-TOP: 0px; TEXT-DECORATION: none } #header UL#login-register LI A:hover { COLOR: #999 } .register #header UL#login-register LI A#register_link { COLOR: #999 } .login #header UL#login-register LI A#login_link { COLOR: #999 } .edit_profile #header UL#login-register LI A#edit_my_profile_link { COLOR: #999 } #header UL#mainnav UL { PADDING-RIGHT: 0px; DISPLAY: none; PADDING-LEFT: 15px; Z-INDEX: 200; = BACKGROUND: url(/assets/images/drop-top.png) no-repeat; LEFT: 248px; = PADDING-BOTTOM: 0px; WIDTH: 173px; PADDING-TOP: 20px; POSITION: = absolute; TOP: 86px; _background: url(/assets/images/drop-top.gif) = no-repeat } #header UL#mainnav UL LI A { =09 } #header UL#mainnav UL LI { FLOAT: none; TEXT-INDENT: 0px } #header UL#mainnav LI.over UL { DISPLAY: block } #header UL#mainnav LI.over#n-solutions UL { LEFT: 310px } #header UL#mainnav LI.over#n-support UL { LEFT: 372px } #header UL#mainnav LI.over#n-howtobuy UL { LEFT: 440px } #header UL#mainnav LI.over#n-about UL { LEFT: 504px } #header UL#mainnav LI.over#n-news UL { LEFT: 552px } #header UL#mainnav LI.over#n-careers UL { LEFT: 606px } #header UL#mainnav UL A { PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; BACKGROUND: = none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 0px; WIDTH: auto; = COLOR: #fff; LINE-HEIGHT: 18px; PADDING-TOP: 0px } #header UL#mainnav UL LI.last { PADDING-RIGHT: 0px; PADDING-LEFT: 15px; BACKGROUND: = url(/assets/images/drop-btm.gif) no-repeat 0px bottom; PADDING-BOTTOM: = 15px; MARGIN-LEFT: -15px; PADDING-TOP: 0px } #header UL#breadcrumbs { PADDING-RIGHT: 25px; FONT-SIZE: 11px; BACKGROUND: none transparent = scroll repeat 0% 0%; FLOAT: right; MARGIN: 25px 0px 0px; COLOR: #999 } #header UL#breadcrumbs LI { PADDING-RIGHT: 13px; PADDING-LEFT: 3px; BACKGROUND: = url(/assets/images/breadcrumb.gif) no-repeat 100% 50%; FLOAT: left; = MARGIN: 0px } #header UL#breadcrumbs LI.last { PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0% } #header UL#breadcrumbs A { COLOR: #999 } #header UL#breadcrumbs A:hover { COLOR: #7a7979 } #page-title-banner { PADDING-RIGHT: 0px; PADDING-LEFT: 36px; PADDING-BOTTOM: 0px; = PADDING-TOP: 20px; HEIGHT: 50px } #solutions IMG.solutions-banner { PADDING-BOTTOM: 10px } .one-col-image { MARGIN: 30px auto; WIDTH: auto; TEXT-ALIGN: center } .one-col-image IMG { MARGIN: 0px auto; TEXT-ALIGN: center } #content .one-col-image P.caption { TEXT-ALIGN: center } .two-col { DISPLAY: inline; FLOAT: left } .first { FLOAT: left } .last { FLOAT: right } .clear { CLEAR: both } .clear-bottom { CLEAR: both; MARGIN-BOTTOM: 25px } #content #more .clear-bottom { PADDING-BOTTOM: 10px } .two-col#content-wrap .first { OVERFLOW: hidden; WIDTH: 190px } .two-col#content-wrap .last { WIDTH: 739px } .two-col#content .first { WIDTH: 430px } .two-col#content .last { WIDTH: 273px } #content IMG#hero { BORDER-RIGHT: #3e3e3f 3px solid; BORDER-TOP: #3e3e3f 3px solid; = MARGIN-BOTTOM: 10px; BORDER-LEFT: #3e3e3f 3px solid; BORDER-BOTTOM: = #3e3e3f 3px solid } #content { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #100f10; = PADDING-BOTTOM: 0px; PADDING-TOP: 15px; FONT-FAMILY: Arial, Helvetica, = sans-serif } #content H3 { FONT-SIZE: 16px; MARGIN: 5px 0px } #content P { MARGIN: 0px 0px 15px } #content .last .info-box H4 { PADDING-RIGHT: 0px; PADDING-LEFT: 20px; FONT-SIZE: 14px; BACKGROUND: = url(/assets/images/info-box-heading.png) no-repeat; PADDING-BOTTOM: = 22px; MARGIN-LEFT: -20px; WIDTH: 235px; PADDING-TOP: 12px } #content .last .info-box { PADDING-RIGHT: 15px; PADDING-LEFT: 20px; BACKGROUND: = url(/assets/images/info-box-btm.gif) #000 no-repeat -1px bottom; FLOAT: = left; MARGIN-BOTTOM: 13px; PADDING-BOTTOM: 25px; WIDTH: 215px; = PADDING-TOP: 0px } #content .last .info-box IMG { PADDING-RIGHT: 15px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: left; = PADDING-BOTTOM: 5px; PADDING-TOP: 0px } #content .last .info-box P { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } #content .last .info-box A.linked { CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; = FONT-SIZE: 11px; FLOAT: left; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: = #fff; PADDING-TOP: 0px; TEXT-DECORATION: none } #content .last .info-box A.linked:hover { COLOR: #999 } #content .last .info-box UL { CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MARGIN-BOTTOM: 0px; = PADDING-BOTTOM: 20px; PADDING-TOP: 0px } #content .last .info-box LI { MARGIN-BOTTOM: 2px } .one-col#content .info-box H3 { PADDING-RIGHT: 0px; PADDING-LEFT: 25px; FONT-SIZE: 14px; BACKGROUND: = url(/assets/images/fullBox-top.jpg) #2b2b2b no-repeat; PADDING-BOTTOM: = 12px; WIDTH: 686px; PADDING-TOP: 12px } .one-col#content .info-box-inner { MARGIN-TOP: -2px; BACKGROUND: #2b2b2b; PADDING-BOTTOM: 12px; WIDTH: = 711px } .one-col#content .info-box-cap { CLEAR: both; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; = BACKGROUND: url(/assets/images/fullBox-bottom.png) no-repeat left = bottom; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 711px; PADDING-TOP: = 0px; POSITION: relative; TOP: -20px; HEIGHT: 5px } #content #copy-block { PADDING-BOTTOM: 35px } #localnav UL { BACKGROUND: url(/assets/images/sidebar-bg.gif) #121212 no-repeat center = bottom; PADDING-BOTTOM: 276px; MARGIN: 0px } #localnav UL UL { PADDING-RIGHT: 0pt; BORDER-TOP: #000000 1px solid; PADDING-LEFT: 0pt; = BACKGROUND: #202020; PADDING-BOTTOM: 10px; PADDING-TOP: 10px } #localnav UL UL LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #202020; = PADDING-BOTTOM: 0px; WIDTH: 190px; BORDER-TOP-STYLE: none; PADDING-TOP: = 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; = BORDER-BOTTOM-STYLE: none } #localnav UL UL LI.first-sub { BORDER-TOP: #000 1px solid; PADDING-TOP: 8px } #localnav UL UL LI.last-sub { PADDING-BOTTOM: 10px } #localnav UL UL LI.first-sub A { =09 } #localnav UL UL LI.last-sub A { =09 } #localnav LI { BORDER-TOP: #595858 1px solid; BACKGROUND: = url(/assets/images/localnav-li-vertline.gif) #474747 no-repeat right = bottom; BORDER-BOTTOM: #000 1px solid } #localnav LI.top { BORDER-TOP-STYLE: none } #localnav LI.top A { PADDING-TOP: 5px } #localnav LI.sub { BORDER-BOTTOM-STYLE: none } #localnav LI.top-sub { BORDER-TOP-STYLE: none } #localnav A { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 20px; FONT-WEIGHT: = bold; PADDING-BOTTOM: 6px; COLOR: #fff; PADDING-TOP: 4px; = TEXT-DECORATION: none } #localnav A.active { COLOR: #87c525 } #localnav A.active:hover { CURSOR: text; COLOR: #87c525 } #localnav A:hover { COLOR: #999 } #localnav UL UL LI A.active { COLOR: #7a7979 } #localnav UL UL LI A.active:hover { COLOR: #7a7979 } #localnav UL UL LI A { PADDING-RIGHT: 0pt; PADDING-LEFT: 25px; PADDING-BOTTOM: 0px; COLOR: = #ccc; LINE-HEIGHT: 24px; PADDING-TOP: 0px } #footer { CLEAR: both; FONT-SIZE: 10px; BACKGROUND: = url(/assets/images/footer-bg.gif) no-repeat; WIDTH: 948px; POSITION: = relative; HEIGHT: 26px; TEXT-ALIGN: center } #footer P#copyright { CLEAR: both; COLOR: #666 } #footer UL#footernav LI { DISPLAY: inline; FLOAT: none; HEIGHT: 18px } #footer UL#footernav LI A { DISPLAY: inline; FLOAT: none; HEIGHT: 18px } #footer UL#footernav A.first { DISPLAY: inline; FLOAT: none; HEIGHT: 18px } #footer UL#footernav { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; PADDING-BOTTOM: = 4px; PADDING-TOP: 4px } #footer UL#footernav LI A { DISPLAY: inline; PADDING-LEFT: 15px; BACKGROUND: = url(/assets/images/footernav-divider.gif) no-repeat 7px 2px; COLOR: = #666; LINE-HEIGHT: 18px } #footer UL#footernav LI A:hover { COLOR: #999 } #footer UL#footernav LI A.first { BACKGROUND-IMAGE: none } #bottom-bg-wrap { MIN-WIDTH: 1151px } #bottom-bg { MARGIN-TOP: -211px; BACKGROUND: url(/assets/images/bottom-bg.gif) = #171717 repeat-x 50% top; HEIGHT: 360px } #right-wing { RIGHT: -100px; BACKGROUND: url(/assets/images/right-side-bg.png) = no-repeat; WIDTH: 100px; BOTTOM: 0px; POSITION: absolute; HEIGHT: 600px } #left-wing { BACKGROUND: url(/assets/images/left-side-bg.png) no-repeat; LEFT: = -100px; WIDTH: 103px; BOTTOM: 0px; POSITION: absolute; HEIGHT: 600px } #drop-shadow-l { MARGIN-TOP: 24px; DISPLAY: none; BACKGROUND: = url(/assets/images/left-drop-bg.png) repeat-y; LEFT: -63px; WIDTH: 63px; = POSITION: absolute; TOP: 0px } #drop-shadow-r { MARGIN-TOP: 24px; DISPLAY: none; RIGHT: -68px; BACKGROUND: = url(/assets/images/right-drop-bg.png) repeat-y; WIDTH: 68px; POSITION: = absolute; TOP: 0px } #home #main { MARGIN-BOTTOM: 15px; COLOR: #fff } #home #main IMG#hero { Z-INDEX: -1 } #home #main #contentbox-inner { PADDING-RIGHT: 40px; PADDING-LEFT: 25px; Z-INDEX: 101; BACKGROUND: none = transparent scroll repeat 0% 0%; LEFT: 33px; PADDING-BOTTOM: 30px; = WIDTH: 363px; PADDING-TOP: 25px; POSITION: absolute; TOP: 34px; HEIGHT: = 109px } #home #main #contentbox { PADDING-RIGHT: 40px; PADDING-LEFT: 25px; Z-INDEX: 100; BACKGROUND: = #000; FILTER: alpha(opacity =3D 70); LEFT: 33px; PADDING-BOTTOM: 30px; = WIDTH: 363px; PADDING-TOP: 25px; POSITION: absolute; TOP: 34px; HEIGHT: = 109px; opacity: .7 } #home H1 { BACKGROUND: url(/assets/images/home-h1.png) no-repeat left top; = TEXT-INDENT: -99999px; HEIGHT: 28px } * HTML #home H1 { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= home-h1.png', sizingMethod=3D'crop') } #home #main #contentbox-inner P { MARGIN-BOTTOM: 3px } #home #main #contentbox-inner A { FONT-SIZE: 11px; COLOR: #87c525 } #home #main #contentbox-inner A:hover { COLOR: #999 } #home .box { FLOAT: left; WIDTH: 237px; HEIGHT: 90% } #home .box H3 { FONT-WEIGHT: 700; FONT-SIZE: 14px; MARGIN: 19px 0px 2px 14px; WIDTH: = 200px; TEXT-INDENT: -99999px } * HTML #home #about-solutions H3 { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= about_solutions.png', sizingMethod=3D'crop') } * HTML #home #explore-products H3 { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= explore_products.png', sizingMethod=3D'crop') } * HTML #home #about-features H3 { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= innovative_features.png', sizingMethod=3D'crop') } * HTML #home #learn-more H3 { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= wafer-level-cameras.png', sizingMethod=3D'crop') } * HTML #home .box P.linked A { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent = scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN-LEFT: 0px; WIDTH: = 100px; PADDING-TOP: 0px; POSITION: relative } * HTML #home .box P.linked { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent = scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN-LEFT: 15px; WIDTH: = 100px; PADDING-TOP: 0px } * HTML #home #about-solutions P.linked { FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= our_solutions_a.png', sizingMethod=3D'crop') } * HTML #home #about-solutions P.over.linked { FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= our_solutions_a_hov.png', sizingMethod=3D'crop') } * HTML #home #explore-products P.linked { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= our_products_a.png', sizingMethod=3D'crop') } * HTML #home #explore-products P.over.linked { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= our_products_a_hov.png', sizingMethod=3D'crop') } * HTML #home #about-features P.linked { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: progid: = DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/wafer-l= evel-home.png', sizingMethod=3D'crop') } * HTML #home #about-features P.linked { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= our_features_a.png', sizingMethod=3D'crop') } * HTML #home #about-features P.over.linked { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= our_features_a_hov.png', sizingMethod=3D'crop') } * HTML #home #learn-more P.linked { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= learn_more_a.png', sizingMethod=3D'crop') } * HTML #home #learn-more P.over.linked { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= learn_more_a_hov.png', sizingMethod=3D'crop') } #home .box P.linked { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } #home #about-solutions H3 { BACKGROUND: url(/assets/images/about_solutions.png) no-repeat left top } #home #explore-products H3 { BACKGROUND: url(/assets/images/explore_products.png) no-repeat left top } #home #about-features H3 { BACKGROUND: url(/assets/images/innovative_features.png) no-repeat left = top } #home #learn-more H3 { BACKGROUND: url(/assets/images/wafer-level-cameras.png) no-repeat left = top } #home #about-solutions A { BACKGROUND: url(/assets/images/our_solutions_a.png) no-repeat left top } #home #about-solutions A:hover { BACKGROUND: url(/assets/images/our_solutions_a_hov.png) no-repeat left = top } #home #explore-products A { BACKGROUND: url(/assets/images/our_products_a.png) no-repeat left top } #home #explore-products A:hover { BACKGROUND: url(/assets/images/our_products_a_hov.png) no-repeat left = top } #home #about-features A { BACKGROUND: url(/assets/images/our_features_a.png) no-repeat left top } #home #about-features A:hover { BACKGROUND: url(/assets/images/our_features_a_hov.png) no-repeat left = top } #home #learn-more A { BACKGROUND: url(/assets/images/learn_more_a.png) no-repeat left top } #home #learn-more A:hover { BACKGROUND: url(/assets/images/learn_more_a_hov.png) no-repeat left top } #home .box P { PADDING-RIGHT: 20px; PADDING-LEFT: 16px; PADDING-BOTTOM: 4px; = LINE-HEIGHT: 16px; PADDING-TOP: 5px } #home .box A { DISPLAY: block; MARGIN-LEFT: 15px; WIDTH: 80px; TEXT-INDENT: -99999px; = HEIGHT: 20px } #home #photo-info-wrapper { Z-INDEX: 500; RIGHT: 80px; LEFT: 0px; WIDTH: 936px; POSITION: absolute; = TOP: 309px } #home #photo-info { DISPLAY: none; BACKGROUND: #000; FILTER: alpha(opacity =3D 70); FLOAT: = left; WIDTH: 740px; LINE-HEIGHT: 24px; opacity: .7 } #home #info-expand { BACKGROUND: url(/assets/images/photo-info-btn.gif) no-repeat 0px 0px; = FLOAT: right; WIDTH: 24px; CURSOR: pointer; HEIGHT: 24px } #home .open#info-expand { BACKGROUND-POSITION: 0px -26px } #home #photo-info H4 { FONT-SIZE: 11px; FLOAT: left } #home #photo-info DT { FONT-SIZE: 11px; FLOAT: left } #home #photo-info DD { FONT-SIZE: 11px; FLOAT: left } #home #photo-info H4 { DISPLAY: inline; FONT-WEIGHT: normal; MARGIN: 0px 25px 0px 8px } #home #photo-info DT { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } #home #photo-info DT { PADDING-RIGHT: 0px; MARGIN-TOP: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: = bold; MARGIN-BOTTOM: 0px; PADDING-BOTTOM: 0px; MARGIN-RIGHT: 4px; = PADDING-TOP: 0px } #home #photo-info DD { PADDING-RIGHT: 0px; MARGIN-TOP: 0px; PADDING-LEFT: 0px; MARGIN-BOTTOM: = 0px; PADDING-BOTTOM: 0px; MARGIN-RIGHT: 8px; PADDING-TOP: 0px } #home #photo-info #photo-details { PADDING-RIGHT: 0px; MARGIN-TOP: 0px; PADDING-LEFT: 0px; FLOAT: left; = MARGIN-BOTTOM: 0px; PADDING-BOTTOM: 0px; MARGIN-RIGHT: 20px; = PADDING-TOP: 0px } #home #bottom-section { Z-INDEX: 100; BACKGROUND: #000; FILTER: alpha(opacity =3D 70); LEFT: = 0px; FLOAT: left; WIDTH: 947px; POSITION: absolute; TOP: 348px; HEIGHT: = 148px; opacity: .7 } #home #bottom-boxes { Z-INDEX: 100; BACKGROUND: url(/assets/images/bottom-boxes-bg.gif) = no-repeat; LEFT: 0px; FLOAT: left; WIDTH: 947px; POSITION: absolute; = TOP: 348px; HEIGHT: 153px } #home #bottom-boxes-inner { Z-INDEX: 101; LEFT: 0px; FLOAT: left; WIDTH: 960px; POSITION: absolute; = TOP: 348px; HEIGHT: 148px } #home #bottom-boxes-inner A { PADDING-LEFT: 16px; FONT-WEIGHT: 700; FONT-SIZE: 11px; COLOR: #fff; = POSITION: relative } #home #bottom-boxes-inner SPAN.arrow { PADDING-LEFT: 5px; COLOR: #87c525 } #home #bottom-boxes-inner IMG { FLOAT: right; MARGIN: 18px 10px 0px 0px } #home #footer { MARGIN: 0px 0px 50px } #home #left-wing { DISPLAY: block; BACKGROUND: url(/assets/images/left-wing.png) = no-repeat; LEFT: -101px; FLOAT: none; MARGIN: 0px; WIDTH: 102px; = POSITION: absolute; TOP: -125px; HEIGHT: 606px } #home #right-wing { DISPLAY: block; BACKGROUND: url(/assets/images/right-wing.png) = no-repeat; LEFT: 947px; FLOAT: none; MARGIN: 0px; WIDTH: 103px; = POSITION: absolute; TOP: -125px; HEIGHT: 609px } #page-title-banner { BACKGROUND: url(/assets/images/products-banner.jpg) no-repeat } #master #page-title-banner { BACKGROUND: url(/assets/images/careers-banner.jpg) no-repeat } #products #page-title-banner { BACKGROUND: url(/assets/images/products-banner.jpg) no-repeat } #careers #page-title-banner { BACKGROUND: url(/assets/images/careers-banner.jpg) no-repeat } #solutions #page-title-banner { BACKGROUND: url(/assets/images/solutions/solutions-banner.jpg) = no-repeat } #support #page-title-banner { BACKGROUND: url(/assets/images/support/support-banner.jpg) no-repeat } #news #page-title-banner { BACKGROUND: url(/assets/images/news/news_banner.jpg) no-repeat } .pr#news #page-title-banner { BACKGROUND: url(/assets/images/pr/pr-banner.jpg) no-repeat } #about #page-title-banner { BACKGROUND: url(/assets/images/about/about_banner.jpg) no-repeat } #search #page-title-banner { BACKGROUND: url(/assets/images/search/search-banner.jpg) no-repeat } #how_to_buy #page-title-banner { BACKGROUND: url(/assets/images/solutions/solutions-banner.jpg) = no-repeat } #features #page-title-banner { BACKGROUND: url(/assets/images/products-banner.jpg) no-repeat } #sitemap #page-title-banner { BACKGROUND: url(/assets/images/search/search-banner.jpg) no-repeat } #products .one-col#content .first { WIDTH: 710px } #products P.fineprint { FONT-SIZE: 10px; MARGIN: -5px 0px 10px; FONT-STYLE: italic; TEXT-ALIGN: = right } #products FORM { WIDTH: auto } .two-col#content #main-col .info-box { BACKGROUND: url(/assets/images/inner-box-middle.jpg) #2b2b2b repeat-x = 50% bottom; MARGIN-BOTTOM: 20px; OVERFLOW: hidden; WIDTH: 427px } .two-col#content #main-col .info-box .inner { PADDING-RIGHT: 15px; PADDING-LEFT: 15px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } .two-col#content #main-col .info-box H3 { PADDING-RIGHT: 0px; MARGIN-TOP: 0px; PADDING-LEFT: 20px; FONT-SIZE: = 15px; BACKGROUND: url(/assets/images/inner-box-top.jpg) no-repeat 50% = top; PADDING-BOTTOM: 7px; PADDING-TOP: 17px } .two-col#content #main-col .info-box-cap { CLEAR: both; BACKGROUND: url(/assets/images/inner-box-btm.jpg) #151515 = no-repeat center bottom; WIDTH: 427px; HEIGHT: 16px } .two-col#content #main-col .info-box-inner { BACKGROUND: url(/assets/images/features-inner-middle.jpg) #202020 = repeat-x 50% bottom; MARGIN-LEFT: 15px; WIDTH: 400px } .two-col#content #main-col .info-box-inner-cap { BACKGROUND: url(/assets/images/features-inner-btm.jpg) #111111 = no-repeat 50% bottom; WIDTH: 400px; HEIGHT: 8px } H2 { FONT-SIZE: 20px; BACKGROUND: none transparent scroll repeat 0% 0%; = COLOR: #fff } #careers #content H3 { PADDING-BOTTOM: 3px } #content A.linked { FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #fff; TEXT-DECORATION: none } #content A.linked:hover { COLOR: #999 } #careers #content UL#career-listings { PADDING-RIGHT: 15px; MARGIN-TOP: 10px; PADDING-LEFT: 20px; = MARGIN-BOTTOM: 5px; LINE-HEIGHT: 18px; MARGIN-RIGHT: 7px } #careers #content UL#career-listings LI { PADDING-LEFT: 10px } .two-col#content #main-col .video.info-box P { PADDING-RIGHT: 7px; PADDING-LEFT: 0px; MARGIN-BOTTOM: 20px; = PADDING-BOTTOM: 0px; MARGIN-LEFT: 20px; LINE-HEIGHT: 13px; PADDING-TOP: = 0px } .two-col#content #main-col .video.info-box A.linked { PADDING-RIGHT: 7px; PADDING-LEFT: 0px; MARGIN-BOTTOM: 20px; = PADDING-BOTTOM: 0px; MARGIN-LEFT: 20px; LINE-HEIGHT: 13px; PADDING-TOP: = 0px } .two-col#content #main-col .video.info-box BLOCKQUOTE { PADDING-RIGHT: 7px; PADDING-LEFT: 0px; MARGIN-BOTTOM: 20px; = PADDING-BOTTOM: 0px; MARGIN-LEFT: 20px; LINE-HEIGHT: 13px; PADDING-TOP: = 0px } .two-col#content #main-col .video.info-box H3 { COLOR: #fff } .two-col#content #main-col .video.info-box .video-desc { FLOAT: left; WIDTH: 165px; MARGIN-RIGHT: 0% } .two-col#content #main-col .video.info-box .video-thumb { FLOAT: left; WIDTH: 50% } .two-col#content #main-col .video.info-box .video-thumb IMG { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-RIGHT-WIDTH: 0px } IMG.thumbnail { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-RIGHT-WIDTH: 0px } .two-col#content #main-col .info-box IMG.inner-thumb { BORDER-RIGHT: #3e3e3e 3px solid; BORDER-TOP: #3e3e3e 3px solid; = MARGIN-BOTTOM: 5px; BORDER-LEFT: #3e3e3e 3px solid; MARGIN-RIGHT: 15px; = BORDER-BOTTOM: #3e3e3e 3px solid } .two-col#content #main-col .video.info-box BLOCKQUOTE { FONT-WEIGHT: bold } .two-col#content #main-col .video.info-box BLOCKQUOTE CITE { DISPLAY: block; MARGIN: 5px 0px 0px; COLOR: #666; FONT-STYLE: normal } .two-col#content #main-col .video.info-box P.caption { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 11px; PADDING-BOTTOM: = 0px; MARGIN: 5px 0px 0px; PADDING-TOP: 0px } .two-col#content #main-col .video.info-box A.linked { DISPLAY: block; TEXT-DECORATION: none } .two-col#content #main-col .wrap.video.info-box { BACKGROUND: url(/assets/images/inner-box-top.jpg) #2b2b2b no-repeat 50% = top; MARGIN: 25px 0px 30px } .two-col#content #main-col .wrap.video.info-box .video-wrap { BACKGROUND: url(/assets/images/inner-box-middle.jpg) repeat-x 50% = bottom; OVERFLOW: hidden } .two-col#content #main-col .wrap.video.info-box H3 { BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 22px } .two-col#content #main-col .wrap.video.info-box A.linked { MARGIN-BOTTOM: 8px } .two-col#content #main-col .wrap.video.info-box .video-thumb { PADDING-TOP: 24px } .two-col#content #main-col .wrap.video.info-box .video-desc P { WIDTH: auto } #content DL DT { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FONT-WEIGHT: bold; BACKGROUND: = url(/assets/images/grn-square.gif) no-repeat 0px 9px; PADDING-BOTTOM: = 0px; PADDING-TOP: 0px } #content DL A { FONT-WEIGHT: normal; TEXT-DECORATION: underline } #content DL A:hover { COLOR: #999 } #content DL DD { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; = PADDING-TOP: 0px } #content .info-box-inner DL { PADDING-RIGHT: 15px; PADDING-LEFT: 15px; PADDING-BOTTOM: 15px; = PADDING-TOP: 15px } .two-col#content .last .info-box DL { CLEAR: both; PADDING-LEFT: 0px } .two-col#content #main-col .info-box .info-box-inner UL { PADDING-RIGHT: 15px; PADDING-LEFT: 15px; PADDING-BOTTOM: 5px; = PADDING-TOP: 20px } .two-col#content #main-col .info-box .info-box-inner P { PADDING-RIGHT: 15px; PADDING-LEFT: 15px; PADDING-BOTTOM: 5px; = PADDING-TOP: 20px } .two-col#content #main-col .info-box .info-box-inner UL { LINE-HEIGHT: 15px } .two-col#content #main-col .info-box UL { LINE-HEIGHT: 15px } .two-col#content #main-col .info-box UL LI { PADDING-RIGHT: 0px; PADDING-LEFT: 10px; BACKGROUND: = url(/assets/images/grn-square.gif) no-repeat 0px 6px; PADDING-BOTTOM: = 10px; PADDING-TOP: 0px } .two-col#content #main-col .info-box UL { PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } #results-table-th { BACKGROUND: url(/assets/images/parts-table-thbg.png) no-repeat; COLOR: = #ccc } .pr#news .last.one-col { PADDING-LEFT: 25px; FLOAT: left; PADDING-BOTTOM: 20px; PADDING-TOP: = 20px } .pr#news #content H2 { MARGIN-BOTTOM: 6px } #content .two-col.press-release { CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: = url(/assets/images/press-release-top.jpg) no-repeat 50% top; = PADDING-BOTTOM: 0px; WIDTH: 100%; PADDING-TOP: 20px } #content .top.two-col.press-release { PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; BACKGROUND: none transparent = scroll repeat 0% 0%; PADDING-BOTTOM: 5px; PADDING-TOP: 0pt } .one-col#content .two-col.press-release { BACKGROUND: url(/assets/images/press-release-top-long.png) no-repeat = center top } .one-col#content .top.two-col.press-release { BACKGROUND: none transparent scroll repeat 0% 0% } #content .two-col.press-release .first { MARGIN: 8px 0px 15px } .two-col.press-release .last { MARGIN: 8px 0px 15px } #content .press-release H3 { MARGIN: -3px 0px } #content .two-col.press-release .first { WIDTH: 62% } #content .two-col.press-release .last { WIDTH: 28% } #content .press-release P { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; MARGIN: = 0px; PADDING-TOP: 0px } #content .press-release DIV.last P { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } #content .inner-box { CLEAR: both; BACKGROUND: url(/assets/images/inner-box-middle.jpg) = #2b2b2b repeat-x 50% bottom; MARGIN-BOTTOM: 20px; OVERFLOW: hidden; = WIDTH: 427px } #content .inner-box H4 { PADDING-RIGHT: 0px; PADDING-LEFT: 20px; FONT-SIZE: 15px; BACKGROUND: = url(/assets/images/inner-box-top.jpg) no-repeat 50% top; PADDING-BOTTOM: = 0px; PADDING-TOP: 22px } #content .inner-box .no-sifr-title { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: = url(/assets/images/inner-box-top.jpg) no-repeat 50% top; PADDING-BOTTOM: = 0px; PADDING-TOP: 10px } #content .inner-box-cap { CLEAR: both; BACKGROUND: url(/assets/images/inner-box-btm.jpg) #151515 = no-repeat center bottom; WIDTH: 427px; HEIGHT: 11px } #part-search #search-by { PADDING-LEFT: 96px; FLOAT: left; BOTTOM: 17px; POSITION: relative } #part-search #search-by A.active { COLOR: #87c525; TEXT-DECORATION: none } #part-search #search-by A { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 12px; PADDING-BOTTOM: = 0pt; PADDING-TOP: 0pt; TEXT-DECORATION: underline } TABLE.striped { CLEAR: both; BORDER-RIGHT: #323232 1px solid; BORDER-TOP: #323232 1px = solid; FONT-SIZE: 13px; MARGIN: 0px 0px 15px 20px; BORDER-LEFT: #323232 = 1px solid; WIDTH: 390px; COLOR: #969696; BORDER-BOTTOM: #323232 1px = solid; border-spacing: 0 } TABLE.mini.striped TH { BORDER-TOP: #4c4c4c 1px solid; BACKGROUND: #393939; WIDTH: 95px; COLOR: = #fff } TABLE.striped TR { BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 5px; PADDING-LEFT: 5px; = PADDING-BOTTOM: 0px; PADDING-TOP: 0px } TABLE.striped TD { BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 5px; PADDING-LEFT: 5px; = PADDING-BOTTOM: 0px; PADDING-TOP: 0px } TABLE.striped TH { BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 5px; PADDING-LEFT: 5px; = PADDING-BOTTOM: 0px; PADDING-TOP: 0px } TABLE.striped TR { FONT-SIZE: 11px; BACKGROUND: #131213; LINE-HEIGHT: 20px } TABLE.striped TR.alt { BACKGROUND: #1d1c1d } TABLE.striped TH#search-results { WIDTH: 200px } TABLE.striped TD.last-col { BORDER-RIGHT-STYLE: none } TABLE.striped TH.last-col { BORDER-RIGHT-STYLE: none } #part-search FORM { CLEAR: both; PADDING-LEFT: 20px; FLOAT: left; MARGIN: 0px 0px 25px; = WIDTH: 280px } #part-search SELECT { FONT-SIZE: 10px; FLOAT: left; WIDTH: 179px; HEIGHT: 15px } #part-search INPUT { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BACKGROUND: none = transparent scroll repeat 0% 0%; FLOAT: right; BORDER-BOTTOM-WIDTH: 0px; = BOTTOM: 6px; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px } .one-col#content .first { MARGIN-TOP: 0px; WIDTH: 730px } .pr#news .two-col#content-wrap .one-col#content { MARGIN-TOP: 0px; WIDTH: 730px } .one-col#content .inner-cta { BACKGROUND: url(/assets/images/featuresDouble-boxTop.gif); MARGIN: 15px = 0px 25px; WIDTH: 730px } .one-col#content .inner-cta .info-box-double { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px = 20px 0px 0px; WIDTH: 345px; PADDING-TOP: 0px } .one-col#content .inner-cta .info-box-double P { PADDING-LEFT: 20px } #content .info-box-double H3 { MARGIN-TOP: 0px } .one-col#content .info-box-double H3 { PADDING-RIGHT: 0px; PADDING-LEFT: 20px; PADDING-BOTTOM: 0px; = PADDING-TOP: 20px } .one-col#content .info-box-cap-double { CLEAR: both; BACKGROUND: = url(/assets/images/featuresDouble-boxBottom.png) no-repeat left bottom; = HEIGHT: 5px } .one-col#content .info-box P { PADDING-LEFT: 20px } FORM#newsletter { LEFT: 24px; MARGIN-BOTTOM: 16px; POSITION: relative } FIELDSET.newsletter { BORDER-RIGHT: #333 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #333 1px = solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: = #333 1px solid; WIDTH: 200px; PADDING-TOP: 0px; BORDER-BOTTOM: #484344 = 1px solid; HEIGHT: 17px } INPUT.email { PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 5px; FONT-SIZE: = 10px; BACKGROUND: #333; FLOAT: left; PADDING-BOTTOM: 0px; MARGIN: 0px; = WIDTH: 173px; COLOR: #999; BORDER-TOP-STYLE: none; PADDING-TOP: 2px; = BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; POSITION: static; = HEIGHT: 15px; BORDER-BOTTOM-STYLE: none; _width: 171px } INPUT.send { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } .two-col#content .last .gallery.info-box { PADDING-RIGHT: 20px; WIDTH: 210px } .two-col#content .last .gallery.info-box P { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: = 0px; WIDTH: 215px; PADDING-TOP: 0px } .two-col#content .last .gallery.info-box IMG { PADDING-RIGHT: 10px; PADDING-LEFT: 0px } .two-col#content .last .gallery.info-box .gallery-thumbs { CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: = 15px; OVERFLOW: hidden; PADDING-TOP: 10px } #content .product.gallery { PADDING-RIGHT: 15px; PADDING-LEFT: 15px; PADDING-BOTTOM: 15px; WIDTH: = 250px; PADDING-TOP: 15px } #content .product.gallery UL { MARGIN-TOP: -12px } #content .product.gallery IMG { MARGIN-BOTTOM: 5px } .search-rule { PADDING-RIGHT: 0px; MARGIN-TOP: 10px; PADDING-LEFT: 0px; BACKGROUND: = url(/assets/images/search/searchRule.jpg) no-repeat; MARGIN-BOTTOM: = 10px; PADDING-BOTTOM: 0px; WIDTH: 100%; PADDING-TOP: 0px; HEIGHT: 10px } #content .search-list A { COLOR: #87c525; TEXT-DECORATION: none } #content .search-list P { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } .search-list { CLEAR: both; HEIGHT: 18px } #content .search-list .pagination A.next { FONT-WEIGHT: bold; MARGIN-LEFT: 5px; TEXT-DECORATION: none } #content .search-list .pagination A { FONT-WEIGHT: normal; COLOR: #bcbcbc; TEXT-DECORATION: underline } #content .search-list .pagination A:hover { COLOR: #999 } #content .search-list .pagination A.activePage { FONT-WEIGHT: bold; CURSOR: text; COLOR: #666; TEXT-DECORATION: none } .one-col#content-wrap { BACKGROUND: url(none) #100f10 } .one-col #content { PADDING-RIGHT: 20px; PADDING-LEFT: 40px; PADDING-BOTTOM: 25px; = PADDING-TOP: 15px } #content FORM#search2 { BACKGROUND: url(/assets/images/search_input_bg.jpg) no-repeat 0px 0px; = MARGIN-BOTTOM: 20px; WIDTH: 158px; HEIGHT: 18px } #content FORM#search2 INPUT.text { PADDING-RIGHT: 0px; PADDING-LEFT: 5px; FONT-SIZE: 10px; FLOAT: left; = PADDING-BOTTOM: 0px; MARGIN: 1px 0px 0px 1px; WIDTH: 130px; COLOR: = #919191; BORDER-TOP-STYLE: none; PADDING-TOP: 2px; BORDER-RIGHT-STYLE: = none; BORDER-LEFT-STYLE: none; HEIGHT: 14px; BACKGROUND-COLOR: #2d2c2d; = BORDER-BOTTOM-STYLE: none } #content FORM#search2 INPUT.submit { RIGHT: 0px; FLOAT: left; POSITION: relative; TOP: 1px } #content #searchResults DL { MARGIN-TOP: 5px; MARGIN-BOTTOM: 20px; WIDTH: 700px } #content #searchResults DD { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; BACKGROUND: = none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 0px; PADDING-TOP: = 0px } #content #searchResults DT { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; BACKGROUND: = none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 0px; PADDING-TOP: = 0px } #content #searchResults DT A { FONT-WEIGHT: bold } #searchResults .pdf { DISPLAY: block; PADDING-LEFT: 15px; BACKGROUND: = url(/assets/images/pdf.gif) no-repeat 0px 3px; FLOAT: left; = MARGIN-RIGHT: 5px } #searchResults .date { MARGIN-LEFT: 7px } UL#tabs { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px = 0px 0px -2px; PADDING-TOP: 0px; HEIGHT: 32px } UL#tabs LI.selected A { BACKGROUND: url(/assets/images/tabs_selected_right.jpg) no-repeat right = top; COLOR: #87c525 } UL#tabs LI.selected { BACKGROUND: url(/assets/images/tabs_selected_left.jpg) no-repeat } UL#tabs LI.selected SPAN.rSide { BACKGROUND: url(/assets/images/tabs_selected_right.jpg) } UL#tabs LI { DISPLAY: block; PADDING-LEFT: 7px; BACKGROUND: = url(/assets/images/tabs_left.jpg) no-repeat left top; FLOAT: left; = MARGIN: 0px; HEIGHT: 32px } UL#tabs LI A { PADDING-RIGHT: 13px; DISPLAY: block; PADDING-LEFT: 6px; BACKGROUND: = url(/assets/images/tabs_right.jpg) no-repeat right top; FLOAT: left; = PADDING-BOTTOM: 0px; FONT: bold 11px Arial, Helvetica, sans-serif; = WIDTH: auto; COLOR: #fff; PADDING-TOP: 7px; HEIGHT: 25px; = TEXT-DECORATION: none } UL#tabs LI.selected A:hover { COLOR: #87c525 } UL#tabs LI A:hover { COLOR: #666 } .tab-body { PADDING-RIGHT: 10px; PADDING-LEFT: 20px; BACKGROUND: #1d1d1d; = PADDING-BOTTOM: 15px; WIDTH: 680px; PADDING-TOP: 15px } UL#tabs LI#n-howtobuy { PADDING-LEFT: 8px; BACKGROUND: url(none) } UL#tabs LI#n-howtobuy A { PADDING-LEFT: 8px; BACKGROUND: url(none) } UL#tabs LI#n-howtobuy SPAN.arrow { LEFT: -8px; TOP: 5px } #t-faq { DISPLAY: none } #t-reference { DISPLAY: none } #t-cases { DISPLAY: none } #t-parts { DISPLAY: none } #t-overview { DISPLAY: none } #t-diagram { DISPLAY: none } #t-documents { DISPLAY: none } #t-rohs { DISPLAY: none } #t-package { DISPLAY: none } #t-gallery { DISPLAY: none } #t-howtobuy { DISPLAY: none } #t-diagram IMG { BORDER-RIGHT: #fff 20px solid; BORDER-TOP: #fff 20px solid; = BORDER-LEFT: #fff 20px solid; BORDER-BOTTOM: #fff 20px solid } #content .read-more { PADDING-RIGHT: 24px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; BACKGROUND: = url(/assets/images/readLess.jpg) no-repeat right center; PADDING-BOTTOM: = 0px; CURSOR: pointer; PADDING-TOP: 0px; HEIGHT: 16px; TEXT-DECORATION: = none } #content .closed.read-more { BACKGROUND: url(/assets/images/readMore.jpg) no-repeat right center } #more { MARGIN: 20px 0px 10px 15px } #more P.list-header { PADDING-LEFT: 25px } #more UL { PADDING-LEFT: 25px } .big-box { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: = url(/assets/images/bigBox_top_full.png) no-repeat left top; = PADDING-BOTTOM: 9px; MARGIN: 0px; WIDTH: 100%; PADDING-TOP: 9px } .big-box-cap { CLEAR: both; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; = BACKGROUND: url(/assets/images/bigBox_bottom_full.png) no-repeat left = bottom; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 100%; PADDING-TOP: 9px; = POSITION: relative; TOP: -7px; HEIGHT: 5px } .big-box-inner { PADDING-RIGHT: 15px; PADDING-LEFT: 15px; BACKGROUND: #363636; = PADDING-BOTTOM: 10px; WIDTH: 100%; PADDING-TOP: 15px } #products .big-box { MARGIN-TOP: 15px } #more .big-box { BACKGROUND: url(/assets/images/bigBox_top_more.png) no-repeat left top; = WIDTH: 695px } #more .big-box-cap { BACKGROUND: url(/assets/images/bigBox_bottom_more.png) no-repeat left = bottom; WIDTH: 695px } BODY.tabs .big-box { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: = url(/assets/images/bigBox_top.png) no-repeat left top; PADDING-BOTTOM: = 9px; MARGIN: 0px; WIDTH: 669px; PADDING-TOP: 9px } BODY.tabs .big-box-cap { CLEAR: both; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; = BACKGROUND: url(/assets/images/bigBox_bottom.png) no-repeat left bottom; = PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 669px; PADDING-TOP: 9px; = POSITION: relative; TOP: -7px; HEIGHT: 5px } BODY.tabs .big-box-inner { PADDING-RIGHT: 15px; PADDING-LEFT: 15px; BACKGROUND: #363636; = PADDING-BOTTOM: 10px; WIDTH: 639px; PADDING-TOP: 15px } #content .big-box H3 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } BODY.tabs #content .big-box H3 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } .full-box { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: = url(/assets/images/fullBox-top.jpg) no-repeat left top; PADDING-BOTTOM: = 0px; MARGIN: 0px; WIDTH: 711px; PADDING-TOP: 6px } .full-box-inner { PADDING-RIGHT: 15px; PADDING-LEFT: 15px; BACKGROUND: = url(/assets/images/fullBox-inner-bg.jpg) #151515 repeat-x; = PADDING-BOTTOM: 10px; PADDING-TOP: 15px } .full-box-cap { CLEAR: both; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; = BACKGROUND: url(/assets/images/fullBox-bottom.png) no-repeat left = bottom; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 711px; PADDING-TOP: = 0px; POSITION: relative; TOP: -5px; HEIGHT: 5px } #content .full-box H3 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } .video { CLEAR: both; MARGIN-BOTTOM: 10px } .no-bg.video .video-desc { FLOAT: left; MARGIN: 0px 0px 0px 15px; WIDTH: 363px } .no-bg.video .video-thumb { BORDER-RIGHT: #3e3e3e 3px solid; BORDER-TOP: #3e3e3e 3px solid; FLOAT: = left; BORDER-LEFT: #3e3e3e 3px solid; BORDER-BOTTOM: #3e3e3e 3px solid } .no-bg.video A.linked { DISPLAY: block; TEXT-DECORATION: none } .no-bg.video .video-thumb IMG { BORDER-RIGHT: #3e3e3e 3px solid; BORDER-TOP: #3e3e3e 3px solid; FLOAT: = left; BORDER-LEFT: #3e3e3e 3px solid; BORDER-BOTTOM: #3e3e3e 3px solid } .big-box .features-nested { BACKGROUND: url(/assets/images/features-nested-top_full.gif) no-repeat = left top; WIDTH: 680px } #more .big-box .features-nested { BACKGROUND: url(/assets/images/features-nested-top_more.gif) no-repeat = left top; WIDTH: 665px } .features-nested { BACKGROUND: url(/assets/images/features-nested-top.gif) no-repeat left = top; WIDTH: 639px; PADDING-TOP: 7px } BODY.tabs .big-box .features-nested { BACKGROUND: url(/assets/images/features-nested-top.gif) no-repeat left = top; WIDTH: 639px; PADDING-TOP: 7px } .features-nested .inner { PADDING-RIGHT: 15px; PADDING-LEFT: 15px; BACKGROUND: #181718; = PADDING-BOTTOM: 15px; MARGIN: 0px; PADDING-TOP: 15px } .big-box .features-nested-cap { BACKGROUND: url(/assets/images/features-nested-bottom_full.gif) = no-repeat left bottom; WIDTH: 100% } #more .big-box .features-nested-cap { BACKGROUND: url(/assets/images/features-nested-bottom_more.gif) = no-repeat left bottom } .features-nested-cap { BACKGROUND: url(/assets/images/features-nested-bottom.gif) no-repeat = left bottom; WIDTH: 639px; HEIGHT: 7px } BODY.tabs .features-nested-cap { BACKGROUND: url(/assets/images/features-nested-bottom.gif) no-repeat = left bottom; WIDTH: 639px; HEIGHT: 7px } * HTML .features-nested-cap { POSITION: relative; TOP: -8px } P.download-info { COLOR: #666 } P.download-info A { PADDING-LEFT: 20px; BACKGROUND: url(/assets/images/video-Icon.jpg) = no-repeat 0px 0px; COLOR: #fff } .tab-body-left { FLOAT: left; WIDTH: 416px } .tab-body-right { CLEAR: right; PADDING-LEFT: 15px; FLOAT: right; WIDTH: 235px; = MARGIN-RIGHT: 7px } .tab-body-right TABLE.mini { MARGIN: 0px; WIDTH: 232px } .tab-body-right TABLE.mini TD { WIDTH: auto } .tab-body-right TABLE.mini TH { FONT-WEIGHT: bold; BACKGROUND: #2b2b2b; BORDER-TOP-STYLE: none; = BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: = none } .tab-body-right TABLE.mini { BORDER-TOP-WIDTH: 0px } .tab-body-right TABLE.mini CAPTION { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 11px; BACKGROUND: = url(/assets/images/table-rt-caption.jpg) #3b3a3b no-repeat center top; = PADDING-BOTTOM: 0px; WIDTH: 232px; COLOR: #cccccc; BORDER-TOP-STYLE: = none; PADDING-TOP: 5px; BORDER-BOTTOM: #000000 1px solid; = BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; HEIGHT: 25px; = TEXT-ALIGN: center } TABLE.medium { MARGIN-BOTTOM: 5px; MARGIN-LEFT: 0px; WIDTH: 416px; BORDER-TOP-STYLE: = none } TABLE.medium TD { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 5px; WIDTH: = auto; LINE-HEIGHT: normal; PADDING-TOP: 5px } TABLE.medium TH { FONT-WEIGHT: bold; FONT-SIZE: 12px; BACKGROUND: = url(/assets/images/table-medium-th.jpg) 0px -1px; PADDING-BOTTOM: 5px; = COLOR: #bcbcbc; BORDER-TOP-STYLE: none; TEXT-INDENT: 10px; PADDING-TOP: = 7px; BORDER-BOTTOM: #000000 1px solid; BORDER-RIGHT-STYLE: none; HEIGHT: = 15px } TABLE.medium TD.locked { TEXT-ALIGN: center } TABLE.medium TD.doc-type { TEXT-ALIGN: center } TABLE.medium TD.doc-type { WIDTH: 25px } TABLE.medium TD.locked { WIDTH: 25px } TABLE#medium-table TD.doc-type { WIDTH: 25px } TABLE#medium-table TD.locked { WIDTH: 25px } TABLE.medium.striped TR { BORDER-RIGHT-WIDTH: 0px } TABLE.medium.striped TD { BORDER-RIGHT-WIDTH: 0px } TABLE.medium.striped TH { BORDER-RIGHT-WIDTH: 0px } TABLE.full { CLEAR: both; BORDER-RIGHT: #333333 1px solid; BORDER-TOP: #333333 1px; = BACKGROUND: url(/assets/images/specs-table-top.jpg) #131213 no-repeat = 0px -1px; MARGIN-BOTTOM: 5px; MARGIN-LEFT: 0px; BORDER-LEFT: #333333 1px = solid; WIDTH: 100%; BORDER-BOTTOM: #333333 1px solid } TABLE.full TD { PADDING-RIGHT: 0px; BORDER-TOP: #1d1d1d 1px solid; PADDING-LEFT: 5px; = PADDING-BOTTOM: 0px; LINE-HEIGHT: normal; PADDING-TOP: 0px } .image_sensors#products .full SELECT#visibleColumn4value { WIDTH: 60px } TABLE.full TH { BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 0px; PADDING-LEFT: 5px; = FONT-WEIGHT: normal; BACKGROUND: none transparent scroll repeat 0% 0%; = PADDING-BOTTOM: 2px; VERTICAL-ALIGN: bottom; COLOR: #bcbcbc; = BORDER-TOP-STYLE: none; LINE-HEIGHT: 12px; PADDING-TOP: 2px; = BORDER-BOTTOM: #000 1px solid; HEIGHT: 32px; TEXT-ALIGN: left } TABLE.full TR { BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 18px } TABLE.full TD.locked { TEXT-ALIGN: center } TABLE.full TD.doc-type { TEXT-ALIGN: center } #content A.big { FONT-WEIGHT: bold; TEXT-DECORATION: none } #content #press-contacts { CLEAR: both; PADDING-RIGHT: 0px; MARGIN-TOP: 20px; PADDING-LEFT: 0px; = BACKGROUND: url(/assets/images/press-release-top.jpg) no-repeat 50% top; = PADDING-BOTTOM: 25px; PADDING-TOP: 25px } .press-detail-text { MARGIN-TOP: 25px; MARGIN-RIGHT: 15px } .press-subtitle { FONT-STYLE: italic } #content .pr-location { DISPLAY: inline; FONT-WEIGHT: bold; FLOAT: left; MARGIN: 0px; COLOR: = #f1f1f1 } #content P.contentp { TEXT-INDENT: 4px } H4.pr-about { MARGIN-TOP: 25px } .press-detail-text P > EM { FONT-STYLE: italic } .inline-image { BACKGROUND: url(/assets/images/inner-box-middle.jpg) #2b2b2b repeat-x = 50% bottom; MARGIN: 25px 0px; OVERFLOW: hidden; WIDTH: 245px; = TEXT-ALIGN: center } .left.inline-image { MARGIN-RIGHT: 25px } .right.press-image { MARGIN-LEFT: 25px; MARGIN-RIGHT: 15px } .inline-image IMG { BORDER-RIGHT: #3e3e3f 3px solid; BORDER-TOP: #3e3e3f 3px solid; MARGIN: = 8px 0px 10px; BORDER-LEFT: #3e3e3f 3px solid; WIDTH: auto; = BORDER-BOTTOM: #3e3e3f 3px solid } .inline-image .top { BACKGROUND: url(/assets/images/pressimg-box-top.jpg) no-repeat 50% top; = WIDTH: 245px; HEIGHT: 6px } .inline-image .btm { BACKGROUND: url(/assets/images/pressimg-box-btm.jpg) no-repeat 50% = bottom; WIDTH: 245px; HEIGHT: 11px } TABLE.loose TD { PADDING-LEFT: 15px; PADDING-BOTTOM: 10px; VERTICAL-ALIGN: middle; = PADDING-TOP: 10px; HEIGHT: 10px } TABLE.loose#salesrep-table TD.salesrep-co { PADDING-LEFT: 10px } TABLE.loose TD.dist-logo { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; TEXT-ALIGN: center } TABLE.loose TR TD.region { PADDING-LEFT: 10px; BACKGROUND: url(/assets/images/specs-table-top.jpg) = no-repeat; BORDER-BOTTOM: #000 1px solid; HEIGHT: 30px } #products .one-col#content #main-col .info-box .info-box-inner { PADDING-LEFT: 25px; PADDING-BOTTOM: 0px } #products .one-col#content #main-col .info-box .info-box-inner = .video-desc P { PADDING-LEFT: 0px } #products .one-col#content #main-col .info-box .info-box-cap { TOP: -15px } #products .one-col#content #main-col .info-box .info-box-inner .video { PADDING-BOTTOM: 10px } #products #content P.list-header { FONT-WEIGHT: bold; MARGIN-BOTTOM: 0px } .specs-table-head H3 { FLOAT: left } #content FORM.specs-form { CLEAR: both; WIDTH: 100% } #products #content FORM.specs-form { MARGIN-BOTTOM: 30px } .specs-form .update { FLOAT: right; MARGIN: 0px 0px 5px 8px; WIDTH: 74px; HEIGHT: 17px } .specs-form A.reset { DISPLAY: block; BACKGROUND: url(/assets/images/reset_btn.png) no-repeat = 0px 0px; FLOAT: right; MARGIN: 2px 0px 5px; WIDTH: 74px; CURSOR: = pointer; TEXT-INDENT: -99999px; HEIGHT: 17px; TEXT-ALIGN: center } .rule { CLEAR: both; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; = BACKGROUND: url(/assets/images/rule-2col.jpg) no-repeat center 50%; = PADDING-BOTTOM: 0px; MARGIN: 5px; WIDTH: 701px; PADDING-TOP: 0px; = HEIGHT: 40px } #content .sort A.decending { DISPLAY: block; BACKGROUND: url(/assets/images/btn_sort.gif) #ff0000 = no-repeat 0px 0px; FLOAT: left; WIDTH: 13px; TEXT-INDENT: -9999px; = LINE-HEIGHT: 11px; HEIGHT: 11px } #content .sort A.ascending { DISPLAY: block; BACKGROUND: url(/assets/images/btn_sort.gif) #ff0000 = no-repeat -12px 0px; FLOAT: left; WIDTH: 13px; TEXT-INDENT: -9999px; = LINE-HEIGHT: 11px; HEIGHT: 11px } #content TD.sort { PADDING-TOP: 3px; HEIGHT: 12px } #content .full SELECT { MARGIN-TOP: 2px; FONT-SIZE: 10px; MARGIN-BOTTOM: 2px; BORDER-TOP-STYLE: = none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; = BORDER-BOTTOM-STYLE: none } #content .sort A.decending:hover { BACKGROUND-POSITION: 0px -11px } #content .sort A.ascending:hover { BACKGROUND-POSITION: -12px -11px } SELECT#part-number { WIDTH: 90px } SELECT#res { WIDTH: 33px } SELECT#solution { WIDTH: 80px } SELECT#active-array { WIDTH: 80px } SELECT#optical-format { WIDTH: 56px } SELECT#frame-rate { WIDTH: 56px } SELECT#pixel-size { WIDTH: 35px } SELECT#pkg { WIDTH: 35px } SELECT#data-sheet { WIDTH: 35px } SELECT#chroma { WIDTH: 45px } .two-col-interior { WIDTH: 45% } #content .last .info-box .inner-box { BACKGROUND: #333; MARGIN: 0px auto 20px; WIDTH: 200px } #content .last .info-box .inner-box-cap { BACKGROUND: url(/assets/images/infobox_doclist_bottom.gif) #333 = no-repeat left bottom; WIDTH: 200px; HEIGHT: 4px } #content .last .info-box UL.document-list { PADDING-RIGHT: 15px; PADDING-LEFT: 15px; BACKGROUND: = url(/assets/images/infobox_doclist_top.gif) #333 no-repeat 50% top; = PADDING-BOTTOM: 15px; MARGIN: 0px; PADDING-TOP: 15px } #content .last .info-box UL.document-list LI { MARGIN-BOTTOM: 3px } .sitemap #content { MARGIN-TOP: 20px } .sitemap #content UL UL { MARGIN-BOTTOM: 20px; MARGIN-LEFT: 20px } .sitemap #content UL UL UL { MARGIN-BOTTOM: 0px; MARGIN-LEFT: 20px } .sitemap #content UL LI { FONT-WEIGHT: bold } .sitemap #content UL UL LI { FONT-WEIGHT: normal } .sitemap #content UL UL LI A { COLOR: #666 } .sitemap #content #left-col { FLOAT: left; WIDTH: 33%; MARGIN-RIGHT: 0% } .sitemap #content #middle-col { FLOAT: left; WIDTH: 33%; MARGIN-RIGHT: 0% } .sitemap #content #right-col { FLOAT: left; WIDTH: 33% } BODY #content #embedded-video { MARGIN-TOP: 20px } BODY #content #embedded-video #video-left-col { PADDING-RIGHT: 5px; DISPLAY: block; FLOAT: left; WIDTH: 165px } BODY #content #embedded-video #video-left-col BLOCKQUOTE { PADDING-RIGHT: 7px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; = MARGIN-BOTTOM: 20px; PADDING-BOTTOM: 0px; MARGIN-LEFT: 20px; = LINE-HEIGHT: 13px; PADDING-TOP: 0px } BODY #content #embedded-video #video-left-col H3 { PADDING-RIGHT: 0px; MARGIN-TOP: 0px; PADDING-LEFT: 0px; BACKGROUND: = none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 0px; COLOR: #fff; = PADDING-TOP: 0px } BODY #content #embedded-video #video-left-col P { MARGIN: 0px 0px 20px; LINE-HEIGHT: 13px } BODY #content #embedded-video #video-left-col BLOCKQUOTE CITE { DISPLAY: block; MARGIN: 5px 0px 0px; COLOR: #666; FONT-STYLE: normal } BODY #content #embedded-video P.caption { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 11px; PADDING-BOTTOM: = 0px; MARGIN: 5px 0px 0px; PADDING-TOP: 0px } BODY #content #embedded-video A.linked { DISPLAY: block; TEXT-DECORATION: none } BODY #content #embedded-video #video-right-col { DISPLAY: block; FLOAT: left; WIDTH: 255px } UL#sectioned-faq { MARGIN-BOTTOM: 0px } UL#sectioned-faq LI { BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN-BOTTOM: 15px } UL#sectioned-faq LI UL LI { BACKGROUND: url(/assets/images/grn-square.gif) no-repeat 0px 5px; = MARGIN-BOTTOM: 0px } UL#sectioned-faq H3 { MARGIN: 0px } UL#sectioned-faq LI DL { MARGIN-LEFT: 10px } DL#faq { LINE-HEIGHT: 18px } DL#faq DT { PADDING-RIGHT: 0px; PADDING-LEFT: 15px; FONT-WEIGHT: bold; FONT-SIZE: = 1em; PADDING-BOTTOM: 6px; COLOR: #fefefe; PADDING-TOP: 3px } DL#faq DT.expanded { BACKGROUND-IMAGE: url(/assets/images/btn_faq_contract.gif) } DL#faq DIV { CLEAR: both } DL#faq DD { PADDING-LEFT: 15px; COLOR: #ccc } UL#sectioned-faq DD { PADDING-BOTTOM: 0px } #content TABLE.faq-table TH { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-WEIGHT: bold; = PADDING-BOTTOM: 5px; VERTICAL-ALIGN: bottom; PADDING-TOP: 5px } #content TABLE.faq-table TD { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } .nda OL { LIST-STYLE-POSITION: inside; LIST-STYLE-TYPE: decimal } .nda OL LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 5px; = PADDING-TOP: 5px } #extranet FORM { WIDTH: 80% } #extranet INPUT { FLOAT: left; MARGIN: 5px 15px 5px 0px } .login INPUT { FLOAT: left; MARGIN: 5px 15px 5px 0px } #content FORM .row { CLEAR: both; FLOAT: left; WIDTH: 500px } #content FORM .row INPUT { WIDTH: 145px } #content FORM .select-row { WIDTH: 476px } #extranet LABEL { FLOAT: left; MARGIN: 10px 8px 0px 0px; WIDTH: 20%; TEXT-ALIGN: right } .login LABEL { FLOAT: left; MARGIN: 10px 8px 0px 0px; WIDTH: 20%; TEXT-ALIGN: right } #extranet INPUT#submit { CLEAR: both; MARGIN-TOP: 25px; FLOAT: none } #extranet #company-info LABEL { FLOAT: none; MARGIN: 10px 10px 0pt 0px } #company-info INPUT { FLOAT: none; MARGIN: 10px 10px 0pt 0px } #company-info SELECT { FLOAT: none; MARGIN: 10px 10px 0pt 0px } #extranet #company-info TEXTAREA { MARGIN: 6px 0pt 20px } #extranet #company-info .row { MARGIN: 8px 0px } #extranet #submit-login { FLOAT: right; MARGIN-RIGHT: 47px } #extranet #submit-email { FLOAT: right; MARGIN-RIGHT: 47px } .login #submit-login { FLOAT: right; MARGIN-RIGHT: 47px } .login #submit-email { FLOAT: right; MARGIN-RIGHT: 47px } #extranet #doc-request { DISPLAY: none } .nda#extranet LABEL { FLOAT: none; MARGIN: 0px } .nda#extranet INPUT { FLOAT: none; MARGIN: 0px } .nda#extranet #warning { CLEAR: both; MARGIN-TOP: 5px; DISPLAY: none; COLOR: red } .nda#extranet #agree_nda { MARGIN-TOP: 20px; FLOAT: left } .nda#extranet P#decline_nda { MARGIN-TOP: 22px; FLOAT: left; MARGIN-LEFT: 20px } #extranet #company-info { MARGIN-TOP: 10px; FLOAT: left; WIDTH: 100% } #has_errors { DISPLAY: none; COLOR: red } .duplicate_email { COLOR: red } #decline_nda { CURSOR: pointer } #decline_nda_msg { CLEAR: both; DISPLAY: none; COLOR: red } #content .one-col-inner-box { WIDTH: 867px } #content .one-col-inner-box DIV.no-sifr-title { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: = url(/assets/images/inner-box_one-col_top.jpg) no-repeat 50% top; = PADDING-BOTTOM: 0px; WIDTH: 867px; PADDING-TOP: 0px } #content .one-col-inner-box DIV.inner-box-cap { BACKGROUND: url(/assets/images/inner-box_one-col_btm.jpg) no-repeat 50% = bottom; WIDTH: 867px } BODY.login .one-col#content-wrap #content .inner-box-cap { BACKGROUND: url(/assets/images/inner-box_one-col_btm.jpg) no-repeat 50% = bottom; WIDTH: 867px } #content .two-col-inner-box { WIDTH: 700px } #content .two-col-inner-box DIV.no-sifr-title { BACKGROUND: url(/assets/images/inner-box-large-top.jpg) no-repeat 50% = top; WIDTH: 700px } #content .two-col-inner-box DIV.inner-box-cap { BACKGROUND: url(/assets/images/inner-box-large-btm.jpg) no-repeat 50% = bottom; WIDTH: 700px } #content .two-col-inner-box TABLE#results-table { WIDTH: 663px } #content .dark-inner-col { MIN-HEIGHT: 200px; BACKGROUND: = url(/assets/images/inner-box_dark-inner-col_mid.jpg) #202020 repeat-x = 50% bottom; WIDTH: 344px; _height: 200px } #content .dark-inner-col H3 { PADDING-RIGHT: 0px; MARGIN-TOP: 0px; PADDING-LEFT: 20px; FONT-SIZE: = 15px; BACKGROUND: #202020; PADDING-BOTTOM: 7px; PADDING-TOP: 0px } #content .dark-inner-col DIV.no-sifr-title { BACKGROUND: url(/assets/images/inner-box_dark-inner-col_top.jpg) = no-repeat 50% top; WIDTH: 344px; PADDING-TOP: 0px } #content .dark-inner-col-cap { BACKGROUND: url(/assets/images/inner-box_dark-inner-col_btm.jpg) = no-repeat 50% bottom; WIDTH: 344px; HEIGHT: 4px } BODY:unknown #content .dark-inner-col-cap { DISPLAY: none } .login .one-col#content-wrap #content DIV.one-col-inner-box { MARGIN-TOP: 15px! important; POSITION: relative } .password_migrated .one-col#content-wrap #content DIV.one-col-inner-box = { MARGIN-TOP: 15px! important; POSITION: relative } .login .one-col#content-wrap #content FORM INPUT.submitbtn { BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN-LEFT: 106px; = WIDTH: auto } .login .one-col#content-wrap #content DIV.login-form-right { FLOAT: left; MARGIN: 0px 0px 0px 15px; WIDTH: 480px } .password_migrated .one-col#content-wrap #content DIV.login-form-right { FLOAT: left; MARGIN: 0px 0px 0px 15px; WIDTH: 480px } .login-form-right IMG.btn-register { MARGIN: 0px 0px 15px } .login .one-col#content-wrap #content DIV.dark-inner-col { MIN-HEIGHT: 200px; MARGIN-LEFT: 11px; _height: 200px } .password_migrated .one-col#content-wrap #content DIV.dark-inner-col { MIN-HEIGHT: 200px; MARGIN-LEFT: 11px; _height: 200px } .login .dark-inner-enclosing { FLOAT: left; WIDTH: 344px; MARGIN-RIGHT: 11px } .login .one-col#content-wrap #content DIV.dark-inner-col-cap { FLOAT: left; MARGIN-LEFT: 11px } .login .rtFeature#forgot { OVERFLOW: hidden } .login .one-col#content-wrap #content DIV.dark-inner-col P { MARGIN-LEFT: 20px } #content .dark-inner-col A.linked { CLEAR: both; FLOAT: left; MARGIN: 15px 8px 8px } #content UL#error-msgs LI { BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0pt 22px 0px = 11px; COLOR: red } #content .executive.gallery { PADDING-RIGHT: 15px; FLOAT: left; WIDTH: 350px } #content .executive.gallery IMG { PADDING-RIGHT: 25px; FLOAT: left; PADDING-BOTTOM: 5px } #content .executive.gallery H4 { WIDTH: 225px } #content .locations.gallery H4 { WIDTH: 225px } #content .locations.gallery IMG { PADDING-RIGHT: 25px; FLOAT: left; PADDING-BOTTOM: 5px } IMG.exec-thumb { BORDER-RIGHT: #3e3e3e 3px solid; BORDER-TOP: #3e3e3e 3px solid; FLOAT: = left; MARGIN: 4px 15px 5px 0px; BORDER-LEFT: #3e3e3e 3px solid; = BORDER-BOTTOM: #3e3e3e 3px solid } DIV.exe-desc { DISPLAY: block; FLOAT: left; WIDTH: 600px } #content .col1 { FLOAT: left; WIDTH: 350px; MARGIN-RIGHT: 30px } #content .col2 { FLOAT: left; WIDTH: 350px } UNKNOWN { WIDTH: 100% } BODY.sales_support LEGEND { FONT-WEIGHT: bold; FONT-SIZE: 11pt; PADDING-BOTTOM: 5px; WIDTH: 100%; = PADDING-TOP: 15px } BODY.sales_support FIELDSET P { CLEAR: both; PADDING-TOP: 0px } BODY.sales_support FIELDSET P.pad-top { PADDING-TOP: 15px } BODY.sales_support FIELDSET DIV.row { PADDING-LEFT: 15px; MARGIN-BOTTOM: 5px; WIDTH: 70% } BODY.sales_support FIELDSET DIV.row LABEL { MARGIN-TOP: 8px } BODY.sales_support FIELDSET DIV.row LABEL SPAN.required { PADDING-RIGHT: 4px } BODY.sales_support FIELDSET DIV.row INPUT { =09 } BODY.sales_support FIELDSET DIV.row SELECT { =09 } BODY.sales_support FIELDSET DIV.row TEXTAREA { =09 } BODY.sales_support FIELDSET.background DIV.row SELECT { MARGIN-TOP: 8px; WIDTH: 149px } BODY.sales_support FIELDSET.urgency DIV.row SELECT { MARGIN-TOP: 8px; WIDTH: 149px } BODY.sales_support FIELDSET.current_design DIV.row SELECT { MARGIN-TOP: 8px; WIDTH: 149px } #content .inner-box-plain { BACKGROUND: #151515 } #content .inner-box-plain H4 { BACKGROUND-IMAGE: url(/assets/images/inner-box-plain-top.jpg)! = important } #content .inner-box-plain DIV.no-sifr-title { BACKGROUND-IMAGE: url(/assets/images/inner-box-plain-top.jpg)! = important; PADDING-TOP: 0px } #content .inner-box-plain { BACKGROUND: url(/assets/images/inner-box-btm.jpg) no-repeat 50% bottom } .career-descriptions #content UL LI { MARGIN-BOTTOM: 0px } .career-descriptions #content P.list-header { MARGIN-BOTTOM: 0px } .career-descriptions #content UL.job-specs { MARGIN-TOP: 5px } .career-descriptions #content UL.job-specs LI { PADDING-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; = LIST-STYLE-TYPE: none } .career-descriptions #content .apply { MARGIN-TOP: 25px; DISPLAY: block; BACKGROUND: = url(/assets/images/apply_btn.jpg) no-repeat; WIDTH: 74px; TEXT-INDENT: = -99999px; HEIGHT: 14px } .launch-press-kit#news .col1 H3 { CLEAR: both; DISPLAY: block; MARGIN: 25px 0pt 2px } .launch-press-kit#news .col2 H3 { CLEAR: both; DISPLAY: block; MARGIN: 25px 0pt 2px } .launch-press-kit#news .col1 H4 { CLEAR: both; DISPLAY: block; MARGIN: 25px 0pt 2px } .launch-press-kit#news .col2 H4 { CLEAR: both; DISPLAY: block; MARGIN: 25px 0pt 2px } #content DIV.thumbs { BACKGROUND: url(/assets/images/pr/thumb_bg_top.gif) no-repeat 0px 0px; = PADDING-TOP: 5px } #content .thumbs UL { CLEAR: both; BACKGROUND: #2b2b2b; MARGIN: 0px; WIDTH: 345px; = PADDING-TOP: 15px } #content LI.img { PADDING-RIGHT: 15px; PADDING-LEFT: 15px; BACKGROUND: url(none); FLOAT: = left; MARGIN-BOTTOM: 15px; PADDING-BOTTOM: 0px; WIDTH: 140px; = PADDING-TOP: 0px; TEXT-ALIGN: center } #content DIV.thumbs_cap { CLEAR: both; BACKGROUND: url(/assets/images/pr/thumb_bg_bottom.gif) = no-repeat 0px 0px; PADDING-TOP: 5px } #content LI.video { PADDING-LEFT: 20px; BACKGROUND: url(/assets/images/news/video_icon.gif) = no-repeat 0px 5px } #content LI.pdf { PADDING-LEFT: 20px; BACKGROUND: url(/assets/images/pdf.gif) no-repeat = 0px 3px } #content LI.announcement { PADDING-LEFT: 20px; BACKGROUND: = url(/assets/images/news/announcement_icon.gif) no-repeat 0px 3px } #content LI.clear { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent = scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; = HEIGHT: 5px } BODY.surveillance DL { LINE-HEIGHT: 18px } DIV.wlc-figure { PADDING-RIGHT: 15px; PADDING-LEFT: 15px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px; TEXT-ALIGN: center } .wlc-figure IMG.last-image { PADDING-LEFT: 20px } .wlc-figure P { PADDING-RIGHT: 40px; PADDING-LEFT: 40px; MARGIN-BOTTOM: 5px; = PADDING-BOTTOM: 7px; PADDING-TOP: 7px; TEXT-ALIGN: left } .devcam-img IMG { BORDER-RIGHT: #3e3e3f 3px solid; BORDER-TOP: #3e3e3f 3px solid; MARGIN: = 10px 0px 0px; BORDER-LEFT: #3e3e3f 3px solid; BORDER-BOTTOM: #3e3e3f 3px = solid } .devcam-img .left.caption { PADDING-LEFT: 188px } .devcam-img .right.caption { DISPLAY: block; PADDING-LEFT: 105px; FLOAT: left; TEXT-ALIGN: center } ------=_NextPart_000_0000_01C87E03.216380F0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.aptina.com/assets/css/print.css BODY { BACKGROUND: #fff; FONT: 12px arial, sans-serif } #wrapper { MARGIN: 0px; WIDTH: auto } #header { BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: auto } #header A IMG { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } #header #company-name { DISPLAY: none } #header #mainnav-container { DISPLAY: none } #header #breadcrumbs { DISPLAY: none } #localnav { DISPLAY: none } #footer { DISPLAY: none } #left-wing { DISPLAY: none } #right-wing { DISPLAY: none } #bottom-bg { DISPLAY: none } .two-col#content #main-col .info-box-cap { DISPLAY: none } #content .inner-box-cap { DISPLAY: none } #content .inner-box { PADDING-RIGHT: 10px; BACKGROUND: #ccc } .two-col#content #main-col .info-box { PADDING-RIGHT: 10px; BACKGROUND: #ccc } .two-col#content #main-col .info-box-inner { PADDING-RIGHT: 10px; BACKGROUND: #ccc } #main { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent = scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px } .first { FLOAT: left } .last { FLOAT: left } .clear { CLEAR: both } #content { BACKGROUND: #fff; COLOR: #000 } #content-wrap { BACKGROUND: #fff; COLOR: #000 } .two-col#content-wrap .first { OVERFLOW: hidden; WIDTH: 190px } .two-col#content-wrap .last { WIDTH: 739px } .one-col#content-wrap .last { WIDTH: 739px } .two-col#content-wrap .one-col#content .first { WIDTH: 739px } .two-col#content .first { WIDTH: 430px } .two-col#content .last { WIDTH: 273px } .last.two-col#content { WIDTH: auto } #drop-shadow-r { FLOAT: right; VISIBILITY: hidden; WIDTH: 0px; HEIGHT: 0px } #drop-shadow-l { FLOAT: right; VISIBILITY: hidden; WIDTH: 0px; HEIGHT: 0px } H1 { FONT-WEIGHT: bold; FONT-SIZE: 23px; BACKGROUND: none transparent scroll = repeat 0% 0%; COLOR: #000 } H2 { FONT-SIZE: 20px; BACKGROUND: none transparent scroll repeat 0% 0%; = MARGIN-BOTTOM: 4px; COLOR: #000 } H3 { FONT-SIZE: 16px; BACKGROUND: none transparent scroll repeat 0% 0%; = COLOR: #000 } H6 { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } H5 { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } .info-box H4 { FONT-SIZE: 15px; BACKGROUND: none transparent scroll repeat 0% 0% } P { MARGIN: 0px 0px 15px } .two-col#content #main-col .wrap.video.info-box .video-wrap { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } #content .inner-box H4 { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } .two-col#content #main-col .info-box H3 { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } #content #side-col .info-box H4 { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } .two-col#content #main-col .info-box-inner-cap { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } #content .two-col.press-release { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } .two-col#content #main-col .info-box DL { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } .two-col#content #main-col .wrap.video.info-box H3 { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } .two-col#content #main-col .video.info-box H3 { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } .big-box { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } .big-box-inner { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } .big-box-cap { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } .features-nested { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } .features-nested .inner { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } .features-nested-cap { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } .one-col#content .double.info-box { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } .one-col#content .double.info-box H3 { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } .one-col#content .double.info-box-cap { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } #content #side-col .info-box { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #ccc; = PADDING-BOTTOM: 0px; MARGIN: 0px 15px 15px; PADDING-TOP: 0px } .two-col#content #main-col .wrap.video.info-box { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #ccc; = PADDING-BOTTOM: 0px; MARGIN: 0px 15px 15px; PADDING-TOP: 0px } .two-col#content #main-col .video.info-box { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #ccc; = PADDING-BOTTOM: 0px; MARGIN: 0px 15px 15px; PADDING-TOP: 0px } .big-box-inner { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #ccc; = PADDING-BOTTOM: 0px; MARGIN: 0px 15px 15px; PADDING-TOP: 0px } .one-col#content .double.info-box { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #ccc; = PADDING-BOTTOM: 0px; MARGIN: 0px 15px 15px; PADDING-TOP: 0px } .tab-body { BORDER-TOP: #000 1px solid; BACKGROUND: #fff } #master #page-title-banner { PADDING-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0% } #products #page-title-banner { PADDING-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0% } #careers #page-title-banner { PADDING-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0% } #solutions #page-title-banner { PADDING-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0% } #support #page-title-banner { PADDING-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0% } #news #page-title-banner { PADDING-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0% } #search #page-title-banner { PADDING-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0% } #pr #page-title-banner { PADDING-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0% } #content #side-col .info-box A.linked { COLOR: #7a7979; TEXT-DECORATION: underline } .two-col#content #main-col .wrap.video.info-box A.linked { COLOR: #7a7979; TEXT-DECORATION: underline } #content A.linked { COLOR: #7a7979; TEXT-DECORATION: underline } .two-col#content #main-col .info-box DL A { COLOR: #7a7979; TEXT-DECORATION: underline } #content A { COLOR: #7a7979; TEXT-DECORATION: underline } #content A.big { COLOR: #7a7979; TEXT-DECORATION: underline } #content DL A { COLOR: #7a7979; TEXT-DECORATION: underline } #content DL DT A { COLOR: #7a7979; TEXT-DECORATION: underline } .two-col#content #press-releases .first { WIDTH: 60%; MARGIN-RIGHT: 2% } .two-col#content-wrap .one-col#content .first#main-col #press-releases = .first { WIDTH: 60%; MARGIN-RIGHT: 2% } .two-col#content #press-releases .last { WIDTH: 38% } .one-col#content #press-releases .last { WIDTH: 38% } #press-releases .two-col.press-release { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 15px; MARGIN: = 0px 0px 15px; PADDING-TOP: 5px; BORDER-BOTTOM: #000 1px solid } .inner-box { MARGIN: 20px 0px } TABLE.striped { MARGIN: 0px; WIDTH: 100%; COLOR: #000 } TABLE.striped TR { BACKGROUND: #fff } TABLE.striped TR.alt { BACKGROUND: #ccc } TABLE.striped TH { FONT-WEIGHT: bold } #content #press-releases { FLOAT: none } UL#tabs LI { BORDER-RIGHT: #000 1px solid; BORDER-TOP: #000 1px solid; BACKGROUND: = none transparent scroll repeat 0% 0%; BORDER-LEFT: #000 1px solid; = BORDER-BOTTOM: #000 1px } UL#tabs LI A { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000 } UL#tabs LI.selected { BACKGROUND: #7a7979 } UL#tabs LI.buy { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-RIGHT-WIDTH: 0px } ------=_NextPart_000_0000_01C87E03.216380F0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.aptina.com/assets/css/sIFR-screen.css .sIFR-flash { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; VISIBILITY: visible! important; = PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px } .sIFR-unloading .sIFR-flash { VISIBILITY: hidden! important } .sIFR-replaced { VISIBILITY: visible! important } .sIFR-ignore { VISIBILITY: visible! important } .sIFR-alternate { DISPLAY: block; LEFT: 0px; OVERFLOW: hidden; WIDTH: 0px; POSITION: = absolute; TOP: 0px; HEIGHT: 0px } .sIFR-replaced DIV.sIFR-fixfocus { PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; FLOAT: none; PADDING-BOTTOM: = 0pt; MARGIN: 0pt; OVERFLOW: auto; PADDING-TOP: 0pt; LETTER-SPACING: 0px } .sIFR-dummy { MARGIN-LEFT: 42px; WIDTH: 0px; HEIGHT: 0px } .sIFR-active H2 { FONT-SIZE: 27px; VISIBILITY: hidden; LINE-HEIGHT: 1em; FONT-FAMILY: = Verdana } ------=_NextPart_000_0000_01C87E03.216380F0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.aptina.com/assets/css/sIFR-print.css .sIFR-flash { DISPLAY: none! important; OVERFLOW: hidden; WIDTH: 0px; POSITION: = absolute; HEIGHT: 0px } .sIFR-alternate { DISPLAY: block! important; LEFT: auto! important; VISIBILITY: visible! = important; POSITION: static! important; TOP: auto! important } ------=_NextPart_000_0000_01C87E03.216380F0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.aptina.com/assets/css/ie.css * HTML #home IMG#hero { WIDTH: 946px; HEIGHT: 469px } * HTML IMG { BEHAVIOR: url(/assets/images/iepngfix.htc) } * HTML #header { FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= header-bg-no-search.png', sizingMethod=3D'crop'); BACKGROUND-IMAGE: = none! important } * HTML #home #left-wing { FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= left-wing.png', sizingMethod=3D'crop') } * HTML #home #right-wing { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= right-wing.png', sizingMethod=3D'crop') } * HTML #left-wing { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= left-side-bg.png', sizingMethod=3D'crop') } * HTML #right-wing { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= right-side-bg.png', sizingMethod=3D'crop') } * HTML #drop-shadow-l { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= left-drop-bg.png', sizingMethod=3D'scale') } * HTML #drop-shadow-r { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= right-drop-bg.png', sizingMethod=3D'scale') } * HTML #home #bottom-boxes-inner IMG { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= camera.png', sizingMethod=3D'crop') } * HTML .one-col#content .info-box-cap-double { BACKGROUND: none transparent scroll repeat 0% 0%; FILTER: = progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'/assets/images/= featuresDouble-boxBottom.png', sizingMethod=3D'crop') } BODY { =09 } * HTML BODY #content-wrap { PADDING-BOTTOM: 0px } *:first-child + HTML BODY #content-wrap { PADDING-BOTTOM: 10px } BODY #content #part-search SELECT { HEIGHT: 20px } BODY #content #part-search #search-by { BOTTOM: 22px } BODY #content TABLE { BORDER-COLLAPSE: collapse } #content TABLE.full TH { PADDING-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-BOTTOM: 6px; = VERTICAL-ALIGN: bottom; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12px; = PADDING-TOP: 0px; HEIGHT: 30px; TEXT-ALIGN: left } #solutions #wrapper #main #content-wrap #content #main-col .full-box = SELECT { PADDING-RIGHT: 0px; MARGIN-TOP: 2px; PADDING-LEFT: 5px; FONT-SIZE: = 10px; MARGIN-BOTTOM: 2px; PADDING-BOTTOM: 0px; BORDER-TOP-STYLE: none; = PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; = HEIGHT: 16px; BORDER-BOTTOM-STYLE: none } .specs-table-head { HEIGHT: 25px } #content .first FORM.specs-form { MARGIN-BOTTOM: 10px } * HTML #home #photo-info { WIDTH: 700px } * HTML .two-col#content #main-col .wrap.video.info-box P { PADDING-LEFT: 0px } * HTML .two-col#content #main-col .wrap.video.info-box { BACKGROUND: url(/assets/images/inner-box-topmid.jpg) #151515 no-repeat = 50% top } * HTML .two-col#content #main-col .video.info-box .video-desc { WIDTH: 40%; MARGIN-RIGHT: 1% } * HTML .two-col#content #main-col .video.info-box .video-thumb { MARGIN-LEFT: 15px; WIDTH: auto } * HTML .two-col#content #main-col .video.info-box .video-thumb P { WIDTH: auto } * HTML .two-col#content #main-col .video.info-box P.caption { MARGIN-TOP: 2px } * HTML .one-col#content .info-box-cap-double { CLEAR: both; MARGIN-BOTTOM: -10px; HEIGHT: 5px } * HTML .one-col#content .info-box-double H3 { PADDING-RIGHT: 0px; PADDING-LEFT: 20px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } * HTML #content SPAN.arrow { PADDING-BOTTOM: 5px; WIDTH: 10px; POSITION: static } * HTML UL#tabs LI.buy SPAN.arrow { POSITION: relative } * HTML #content-wrap { HEIGHT: 400px } .specs-table-head { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; WIDTH: 100%; PADDING-TOP: 0px } .specs-table-head H3 { WIDTH: 450px } *:first-child + HTML .tab-body-right TABLE.mini TH { WIDTH: 232px } .tab-body-right TABLE.mini TH { BORDER-TOP: #2b2b2b 1px solid; WIDTH: 232px; BORDER-BOTTOM: #000 1px = solid } .tab-body-right TABLE.mini CAPTION { HEIGHT: 20px } #content .two-col.press-release { MARGIN-BOTTOM: 20px } * HTML #content .two-col.press-release .first { WIDTH: 62% } * HTML #content .two-col.press-release .last { MARGIN-TOP: 0px; PADDING-LEFT: 20px; WIDTH: 28%; PADDING-TOP: 0px } * HTML #content #press-contacts { BACKGROUND: url(/assets/images/press-release-top.jpg) no-repeat 50% top } * HTML .two-col#content #main-col .video.info-box .video-desc { FLOAT: left; MARGIN: 0%; WIDTH: 38% } * HTML .two-col#content #main-col .video.info-box .video-thumb { FLOAT: left; MARGIN-LEFT: 0px; WIDTH: 58% } TABLE.loose TD.dist-logo { PADDING-LEFT: 10px } TABLE.loose#salesrep-table TD.salesrep-co { PADDING-LEFT: 10px } * HTML #content .last .info-box { PADDING-RIGHT: 0px } * HTML #content .last .info-box H4 { WIDTH: 230px } * HTML .two-col#content .last .gallery.info-box { PADDING-RIGHT: 0px } * HTML FORM INPUT.radio { BORDER-TOP-WIDTH: 0px; CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: = 0px; BORDER-LEFT-WIDTH: 0px; BACKGROUND: none transparent scroll repeat = 0% 0%; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 8px = 8px 0px; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px } * HTML FORM LABEL.radio-label { FLOAT: none; MARGIN: 0px } * HTML FORM INPUT.submitbtn { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BACKGROUND: 0px 50%; = BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px } * HTML FORM INPUT.update { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BACKGROUND: 0px 50%; = BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px } #content .last .info-box A.linked { FLOAT: none } #products .one-col#content #main-col .info-box .info-box-cap { TOP: -5px } * HTML #header IMG { POSITION: relative } *:first-child + HTML #content #more .big-box-cap { PADDING-TOP: 4px; POSITION: static; TOP: 0px } * HTML #content #more .big-box-cap { PADDING-TOP: 8px; POSITION: fixed } * HTML #content .features-nested-cap { MARGIN-TOP: -10px; POSITION: fixed } #products #content FORM.specs-form { MARGIN-BOTTOM: 0px } * HTML FORM SELECT#country { MARGIN-LEFT: -3px } * HTML FORM SELECT#salutation { MARGIN-LEFT: -3px } TABLE.loose TR TD.region { BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 10px } BODY.sales_support FIELDSET LEGEND { PADDING-LEFT: 0px; MARGIN-LEFT: -7px } BODY.sales_support FIELDSET DIV.row SELECT { MARGIN-TOP: 7px } BODY.sales_support FIELDSET P.pad-top { PADDING-TOP: 1px } * HTML BODY.login INPUT#loginSubmit { RIGHT: 0px; BOTTOM: 75px } DIV.exe-desc { FLOAT: none } .image_sensors#products .full SELECT#visibleColumn4value { OVERFLOW: visible; WIDTH: 85px } .image_sensors#products #content .full SELECT#visibleColumn4value OPTION = { WIDTH: 150px! important } * HTML .login #content FORM DIV.row { WIDTH: 340px } * HTML .login #content FORM DIV.row LABEL { WIDTH: 30% } * HTML .login .dark-inner-enclosing .dark-inner-col-cap { FLOAT: none; BOTTOM: 12px; POSITION: absolute } ------=_NextPart_000_0000_01C87E03.216380F0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.aptina.com/assets/js/mootools-release-1.11.js /*=0A= Script: Core.js=0A= Mootools - My Object Oriented javascript.=0A= =0A= License:=0A= MIT-style license.=0A= =0A= MooTools Copyright:=0A= copyright (c) 2007 Valerio Proietti, =0A= =0A= MooTools Credits:=0A= - Class is slightly based on Base.js = (c) 2006 Dean Edwards, = License =0A= - Some functions are inspired by those found in prototype.js = (c) 2005 Sam Stephenson sam [at] conio = [dot] net, MIT-style license=0A= - Documentation by Aaron Newton (aaron.newton [at] cnet [dot] com) and = Valerio Proietti.=0A= */=0A= =0A= var MooTools =3D {=0A= version: '1.11'=0A= };=0A= =0A= /* Section: Core Functions */=0A= =0A= /*=0A= Function: $defined=0A= Returns true if the passed in value/object is defined, that means is = not null or undefined.=0A= =0A= Arguments:=0A= obj - object to inspect=0A= */=0A= =0A= function $defined(obj){=0A= return (obj !=3D undefined);=0A= };=0A= =0A= /*=0A= Function: $type=0A= Returns the type of object that matches the element passed in.=0A= =0A= Arguments:=0A= obj - the object to inspect.=0A= =0A= Example:=0A= >var myString =3D 'hello';=0A= >$type(myString); //returns "string"=0A= =0A= Returns:=0A= 'element' - if obj is a DOM element node=0A= 'textnode' - if obj is a DOM text node=0A= 'whitespace' - if obj is a DOM whitespace node=0A= 'arguments' - if obj is an arguments object=0A= 'object' - if obj is an object=0A= 'string' - if obj is a string=0A= 'number' - if obj is a number=0A= 'boolean' - if obj is a boolean=0A= 'function' - if obj is a function=0A= 'regexp' - if obj is a regular expression=0A= 'class' - if obj is a Class. (created with new Class, or the extend of = another class).=0A= 'collection' - if obj is a native htmlelements collection, such as = childNodes, getElementsByTagName .. etc.=0A= false - (boolean) if the object is not defined or none of the above.=0A= */=0A= =0A= function $type(obj){=0A= if (!$defined(obj)) return false;=0A= if (obj.htmlElement) return 'element';=0A= var type =3D typeof obj;=0A= if (type =3D=3D 'object' && obj.nodeName){=0A= switch(obj.nodeType){=0A= case 1: return 'element';=0A= case 3: return (/\S/).test(obj.nodeValue) ? 'textnode' : 'whitespace';=0A= }=0A= }=0A= if (type =3D=3D 'object' || type =3D=3D 'function'){=0A= switch(obj.constructor){=0A= case Array: return 'array';=0A= case RegExp: return 'regexp';=0A= case Class: return 'class';=0A= }=0A= if (typeof obj.length =3D=3D 'number'){=0A= if (obj.item) return 'collection';=0A= if (obj.callee) return 'arguments';=0A= }=0A= }=0A= return type;=0A= };=0A= =0A= /*=0A= Function: $merge=0A= merges a number of objects recursively without referencing them or = their sub-objects.=0A= =0A= Arguments:=0A= any number of objects.=0A= =0A= Example:=0A= >var mergedObj =3D $merge(obj1, obj2, obj3);=0A= >//obj1, obj2, and obj3 are unaltered=0A= */=0A= =0A= function $merge(){=0A= var mix =3D {};=0A= for (var i =3D 0; i < arguments.length; i++){=0A= for (var property in arguments[i]){=0A= var ap =3D arguments[i][property];=0A= var mp =3D mix[property];=0A= if (mp && $type(ap) =3D=3D 'object' && $type(mp) =3D=3D 'object') = mix[property] =3D $merge(mp, ap);=0A= else mix[property] =3D ap;=0A= }=0A= }=0A= return mix;=0A= };=0A= =0A= /*=0A= Function: $extend=0A= Copies all the properties from the second passed object to the first = passed Object.=0A= If you do myWhatever.extend =3D $extend the first parameter will become = myWhatever, and your extend function will only need one parameter.=0A= =0A= Example:=0A= (start code)=0A= var firstOb =3D {=0A= 'name': 'John',=0A= 'lastName': 'Doe'=0A= };=0A= var secondOb =3D {=0A= 'age': '20',=0A= 'sex': 'male',=0A= 'lastName': 'Dorian'=0A= };=0A= $extend(firstOb, secondOb);=0A= //firstOb will become:=0A= {=0A= 'name': 'John',=0A= 'lastName': 'Dorian',=0A= 'age': '20',=0A= 'sex': 'male'=0A= };=0A= (end)=0A= =0A= Returns:=0A= The first object, extended.=0A= */=0A= =0A= var $extend =3D function(){=0A= var args =3D arguments;=0A= if (!args[1]) args =3D [this, args[0]];=0A= for (var property in args[1]) args[0][property] =3D args[1][property];=0A= return args[0];=0A= };=0A= =0A= /*=0A= Function: $native=0A= Will add a .extend method to the objects passed as a parameter, but the = property passed in will be copied to the object's prototype only if non = previously existent.=0A= Its handy if you dont want the .extend method of an object to overwrite = existing methods.=0A= Used automatically in MooTools to implement = Array/String/Function/Number methods to browser that dont support them = whitout manual checking.=0A= =0A= Arguments:=0A= a number of classes/native javascript objects=0A= =0A= */=0A= =0A= var $native =3D function(){=0A= for (var i =3D 0, l =3D arguments.length; i < l; i++){=0A= arguments[i].extend =3D function(props){=0A= for (var prop in props){=0A= if (!this.prototype[prop]) this.prototype[prop] =3D props[prop];=0A= if (!this[prop]) this[prop] =3D $native.generic(prop);=0A= }=0A= };=0A= }=0A= };=0A= =0A= $native.generic =3D function(prop){=0A= return function(bind){=0A= return this.prototype[prop].apply(bind, = Array.prototype.slice.call(arguments, 1));=0A= };=0A= };=0A= =0A= $native(Function, Array, String, Number);=0A= =0A= /*=0A= Function: $chk=0A= Returns true if the passed in value/object exists or is 0, otherwise = returns false.=0A= Useful to accept zeroes.=0A= =0A= Arguments:=0A= obj - object to inspect=0A= */=0A= =0A= function $chk(obj){=0A= return !!(obj || obj =3D=3D=3D 0);=0A= };=0A= =0A= /*=0A= Function: $pick=0A= Returns the first object if defined, otherwise returns the second.=0A= =0A= Arguments:=0A= obj - object to test=0A= picked - the default to return=0A= =0A= Example:=0A= (start code)=0A= function say(msg){=0A= alert($pick(msg, 'no meessage supplied'));=0A= }=0A= (end)=0A= */=0A= =0A= function $pick(obj, picked){=0A= return $defined(obj) ? obj : picked;=0A= };=0A= =0A= /*=0A= Function: $random=0A= Returns a random integer number between the two passed in values.=0A= =0A= Arguments:=0A= min - integer, the minimum value (inclusive).=0A= max - integer, the maximum value (inclusive).=0A= =0A= Returns:=0A= a random integer between min and max.=0A= */=0A= =0A= function $random(min, max){=0A= return Math.floor(Math.random() * (max - min + 1) + min);=0A= };=0A= =0A= /*=0A= Function: $time=0A= Returns the current timestamp=0A= =0A= Returns:=0A= a timestamp integer.=0A= */=0A= =0A= function $time(){=0A= return new Date().getTime();=0A= };=0A= =0A= /*=0A= Function: $clear=0A= clears a timeout or an Interval.=0A= =0A= Returns:=0A= null=0A= =0A= Arguments:=0A= timer - the setInterval or setTimeout to clear.=0A= =0A= Example:=0A= >var myTimer =3D myFunction.delay(5000); //wait 5 seconds and execute = my function.=0A= >myTimer =3D $clear(myTimer); //nevermind=0A= =0A= See also:=0A= , =0A= */=0A= =0A= function $clear(timer){=0A= clearTimeout(timer);=0A= clearInterval(timer);=0A= return null;=0A= };=0A= =0A= /*=0A= Class: Abstract=0A= Abstract class, to be used as singleton. Will add .extend to any object=0A= =0A= Arguments:=0A= an object=0A= =0A= Returns:=0A= the object with an .extend property, equivalent to <$extend>.=0A= */=0A= =0A= var Abstract =3D function(obj){=0A= obj =3D obj || {};=0A= obj.extend =3D $extend;=0A= return obj;=0A= };=0A= =0A= //window, document=0A= =0A= var Window =3D new Abstract(window);=0A= var Document =3D new Abstract(document);=0A= document.head =3D document.getElementsByTagName('head')[0];=0A= =0A= /*=0A= Class: window=0A= Some properties are attached to the window object by the browser = detection.=0A= =0A= Note:=0A= browser detection is entirely object-based. We dont sniff.=0A= =0A= Properties:=0A= window.ie - will be set to true if the current browser is internet = explorer (any).=0A= window.ie6 - will be set to true if the current browser is internet = explorer 6.=0A= window.ie7 - will be set to true if the current browser is internet = explorer 7.=0A= window.gecko - will be set to true if the current browser is = Mozilla/Gecko.=0A= window.webkit - will be set to true if the current browser is = Safari/Konqueror.=0A= window.webkit419 - will be set to true if the current browser is = Safari2 / webkit till version 419.=0A= window.webkit420 - will be set to true if the current browser is = Safari3 (Webkit SVN Build) / webkit over version 419.=0A= window.opera - is set to true by opera itself.=0A= */=0A= =0A= window.xpath =3D !!(document.evaluate);=0A= if (window.ActiveXObject) window.ie =3D window[window.XMLHttpRequest ? = 'ie7' : 'ie6'] =3D true;=0A= else if (document.childNodes && !document.all && = !navigator.taintEnabled) window.webkit =3D window[window.xpath ? = 'webkit420' : 'webkit419'] =3D true;=0A= else if (document.getBoxObjectFor !=3D null) window.gecko =3D true;=0A= =0A= /*compatibility*/=0A= =0A= window.khtml =3D window.webkit;=0A= =0A= Object.extend =3D $extend;=0A= =0A= /*end compatibility*/=0A= =0A= //htmlelement=0A= =0A= if (typeof HTMLElement =3D=3D 'undefined'){=0A= var HTMLElement =3D function(){};=0A= if (window.webkit) document.createElement("iframe"); //fixes safari=0A= HTMLElement.prototype =3D (window.webkit) ? = window["[[DOMElement.prototype]]"] : {};=0A= }=0A= HTMLElement.prototype.htmlElement =3D function(){};=0A= =0A= //enables background image cache for internet explorer 6=0A= =0A= if (window.ie6) try {document.execCommand("BackgroundImageCache", false, = true);} catch(e){};=0A= =0A= /*=0A= Script: Class.js=0A= Contains the Class Function, aims to ease the creation of reusable = Classes.=0A= =0A= License:=0A= MIT-style license.=0A= */=0A= =0A= /*=0A= Class: Class=0A= The base class object of the framework.=0A= Creates a new class, its initialize method will fire upon class = instantiation.=0A= Initialize wont fire on instantiation when you pass *null*.=0A= =0A= Arguments:=0A= properties - the collection of properties that apply to the class.=0A= =0A= Example:=0A= (start code)=0A= var Cat =3D new Class({=0A= initialize: function(name){=0A= this.name =3D name;=0A= }=0A= });=0A= var myCat =3D new Cat('Micia');=0A= alert(myCat.name); //alerts 'Micia'=0A= (end)=0A= */=0A= =0A= var Class =3D function(properties){=0A= var klass =3D function(){=0A= return (arguments[0] !=3D=3D null && this.initialize && = $type(this.initialize) =3D=3D 'function') ? this.initialize.apply(this, = arguments) : this;=0A= };=0A= $extend(klass, this);=0A= klass.prototype =3D properties;=0A= klass.constructor =3D Class;=0A= return klass;=0A= };=0A= =0A= /*=0A= Property: empty=0A= Returns an empty function=0A= */=0A= =0A= Class.empty =3D function(){};=0A= =0A= Class.prototype =3D {=0A= =0A= /*=0A= Property: extend=0A= Returns the copy of the Class extended with the passed in properties.=0A= =0A= Arguments:=0A= properties - the properties to add to the base class in this new Class.=0A= =0A= Example:=0A= (start code)=0A= var Animal =3D new Class({=0A= initialize: function(age){=0A= this.age =3D age;=0A= }=0A= });=0A= var Cat =3D Animal.extend({=0A= initialize: function(name, age){=0A= this.parent(age); //will call the previous initialize;=0A= this.name =3D name;=0A= }=0A= });=0A= var myCat =3D new Cat('Micia', 20);=0A= alert(myCat.name); //alerts 'Micia'=0A= alert(myCat.age); //alerts 20=0A= (end)=0A= */=0A= =0A= extend: function(properties){=0A= var proto =3D new this(null);=0A= for (var property in properties){=0A= var pp =3D proto[property];=0A= proto[property] =3D Class.Merge(pp, properties[property]);=0A= }=0A= return new Class(proto);=0A= },=0A= =0A= /*=0A= Property: implement=0A= Implements the passed in properties to the base Class prototypes, = altering the base class, unlike .=0A= =0A= Arguments:=0A= properties - the properties to add to the base class.=0A= =0A= Example:=0A= (start code)=0A= var Animal =3D new Class({=0A= initialize: function(age){=0A= this.age =3D age;=0A= }=0A= });=0A= Animal.implement({=0A= setName: function(name){=0A= this.name =3D name=0A= }=0A= });=0A= var myAnimal =3D new Animal(20);=0A= myAnimal.setName('Micia');=0A= alert(myAnimal.name); //alerts 'Micia'=0A= (end)=0A= */=0A= =0A= implement: function(){=0A= for (var i =3D 0, l =3D arguments.length; i < l; i++) = $extend(this.prototype, arguments[i]);=0A= }=0A= =0A= };=0A= =0A= //internal=0A= =0A= Class.Merge =3D function(previous, current){=0A= if (previous && previous !=3D current){=0A= var type =3D $type(current);=0A= if (type !=3D $type(previous)) return current;=0A= switch(type){=0A= case 'function':=0A= var merged =3D function(){=0A= this.parent =3D arguments.callee.parent;=0A= return current.apply(this, arguments);=0A= };=0A= merged.parent =3D previous;=0A= return merged;=0A= case 'object': return $merge(previous, current);=0A= }=0A= }=0A= return current;=0A= };=0A= =0A= /*=0A= Script: Class.Extras.js=0A= Contains common implementations for custom classes. In Mootools is = implemented in , and and many more.=0A= =0A= License:=0A= MIT-style license.=0A= */=0A= =0A= /*=0A= Class: Chain=0A= An "Utility" Class. Its methods can be implemented with = into any .=0A= Currently implemented in , and . In for = example, is used to execute a list of function, one after another, once = the effect is completed.=0A= The functions will not be fired all togheter, but one every completion, = to create custom complex animations.=0A= =0A= Example:=0A= (start code)=0A= var myFx =3D new Fx.Style('element', 'opacity');=0A= =0A= myFx.start(1,0).chain(function(){=0A= myFx.start(0,1);=0A= }).chain(function(){=0A= myFx.start(1,0);=0A= }).chain(function(){=0A= myFx.start(0,1);=0A= });=0A= //the element will appear and disappear three times=0A= (end)=0A= */=0A= =0A= var Chain =3D new Class({=0A= =0A= /*=0A= Property: chain=0A= adds a function to the Chain instance stack.=0A= =0A= Arguments:=0A= fn - the function to append.=0A= */=0A= =0A= chain: function(fn){=0A= this.chains =3D this.chains || [];=0A= this.chains.push(fn);=0A= return this;=0A= },=0A= =0A= /*=0A= Property: callChain=0A= Executes the first function of the Chain instance stack, then removes = it. The first function will then become the second.=0A= */=0A= =0A= callChain: function(){=0A= if (this.chains && this.chains.length) this.chains.shift().delay(10, = this);=0A= },=0A= =0A= /*=0A= Property: clearChain=0A= Clears the stack of a Chain instance.=0A= */=0A= =0A= clearChain: function(){=0A= this.chains =3D [];=0A= }=0A= =0A= });=0A= =0A= /*=0A= Class: Events=0A= An "Utility" Class. Its methods can be implemented with = into any .=0A= In Class, for example, is used to give the possibility add = any number of functions to the Effects events, like onComplete, onStart, = onCancel.=0A= Events in a Class that implements can be either added as an = option, or with addEvent. Never with .options.onEventName.=0A= =0A= Example:=0A= (start code)=0A= var myFx =3D new Fx.Style('element', 'opacity').addEvent('onComplete', = function(){=0A= alert('the effect is completed');=0A= }).addEvent('onComplete', function(){=0A= alert('I told you the effect is completed');=0A= });=0A= =0A= myFx.start(0,1);=0A= //upon completion it will display the 2 alerts, in order.=0A= (end)=0A= =0A= Implementing:=0A= This class can be implemented into other classes to add the = functionality to them.=0A= Goes well with the class.=0A= =0A= Example:=0A= (start code)=0A= var Widget =3D new Class({=0A= initialize: function(){},=0A= finish: function(){=0A= this.fireEvent('onComplete');=0A= }=0A= });=0A= Widget.implement(new Events);=0A= //later...=0A= var myWidget =3D new Widget();=0A= myWidget.addEvent('onComplete', myfunction);=0A= (end)=0A= */=0A= =0A= var Events =3D new Class({=0A= =0A= /*=0A= Property: addEvent=0A= adds an event to the stack of events of the Class instance.=0A= =0A= Arguments:=0A= type - string; the event name (e.g. 'onComplete')=0A= fn - function to execute=0A= */=0A= =0A= addEvent: function(type, fn){=0A= if (fn !=3D Class.empty){=0A= this.$events =3D this.$events || {};=0A= this.$events[type] =3D this.$events[type] || [];=0A= this.$events[type].include(fn);=0A= }=0A= return this;=0A= },=0A= =0A= /*=0A= Property: fireEvent=0A= fires all events of the specified type in the Class instance.=0A= =0A= Arguments:=0A= type - string; the event name (e.g. 'onComplete')=0A= args - array or single object; arguments to pass to the function; if = more than one argument, must be an array=0A= delay - (integer) delay (in ms) to wait to execute the event=0A= =0A= Example:=0A= (start code)=0A= var Widget =3D new Class({=0A= initialize: function(arg1, arg2){=0A= ...=0A= this.fireEvent("onInitialize", [arg1, arg2], 50);=0A= }=0A= });=0A= Widget.implement(new Events);=0A= (end)=0A= */=0A= =0A= fireEvent: function(type, args, delay){=0A= if (this.$events && this.$events[type]){=0A= this.$events[type].each(function(fn){=0A= fn.create({'bind': this, 'delay': delay, 'arguments': args})();=0A= }, this);=0A= }=0A= return this;=0A= },=0A= =0A= /*=0A= Property: removeEvent=0A= removes an event from the stack of events of the Class instance.=0A= =0A= Arguments:=0A= type - string; the event name (e.g. 'onComplete')=0A= fn - function that was added=0A= */=0A= =0A= removeEvent: function(type, fn){=0A= if (this.$events && this.$events[type]) this.$events[type].remove(fn);=0A= return this;=0A= }=0A= =0A= });=0A= =0A= /*=0A= Class: Options=0A= An "Utility" Class. Its methods can be implemented with = into any .=0A= Used to automate the options settings, also adding Class when = the option begins with on.=0A= =0A= Example:=0A= (start code)=0A= var Widget =3D new Class({=0A= options: {=0A= color: '#fff',=0A= size: {=0A= width: 100=0A= height: 100=0A= }=0A= },=0A= initialize: function(options){=0A= this.setOptions(options);=0A= }=0A= });=0A= Widget.implement(new Options);=0A= //later...=0A= var myWidget =3D new Widget({=0A= color: '#f00',=0A= size: {=0A= width: 200=0A= }=0A= });=0A= //myWidget.options =3D {color: #f00, size: {width: 200, height: 100}}=0A= (end)=0A= */=0A= =0A= var Options =3D new Class({=0A= =0A= /*=0A= Property: setOptions=0A= sets this.options=0A= =0A= Arguments:=0A= defaults - object; the default set of options=0A= options - object; the user entered options. can be empty too.=0A= =0A= Note:=0A= if your Class has implemented, every option beginning with = on, followed by a capital letter (onComplete) becomes an Class instance = event.=0A= */=0A= =0A= setOptions: function(){=0A= this.options =3D $merge.apply(null, [this.options].extend(arguments));=0A= if (this.addEvent){=0A= for (var option in this.options){=0A= if ($type(this.options[option] =3D=3D 'function') && = (/^on[A-Z]/).test(option)) this.addEvent(option, this.options[option]);=0A= }=0A= }=0A= return this;=0A= }=0A= =0A= });=0A= =0A= /*=0A= Script: Array.js=0A= Contains Array prototypes, <$A>, <$each>=0A= =0A= License:=0A= MIT-style license.=0A= */=0A= =0A= /*=0A= Class: Array=0A= A collection of The Array Object prototype methods.=0A= */=0A= =0A= //custom methods=0A= =0A= Array.extend({=0A= =0A= /*=0A= Property: forEach=0A= Iterates through an array; This method is only available for browsers = without native *forEach* support.=0A= For more info see = =0A= =0A= *forEach* executes the provided function (callback) once for each = element present in the array. callback is invoked only for indexes of = the array which have assigned values; it is not invoked for indexes = which have been deleted or which have never been assigned values.=0A= =0A= Arguments:=0A= fn - function to execute with each item in the array; passed the item = and the index of that item in the array=0A= bind - the object to bind "this" to (see )=0A= =0A= Example:=0A= >['apple','banana','lemon'].each(function(item, index){=0A= > alert(index + " =3D " + item); //alerts "0 =3D apple" etc.=0A= >}, bindObj); //optional second arg for binding, not used here=0A= */=0A= =0A= forEach: function(fn, bind){=0A= for (var i =3D 0, j =3D this.length; i < j; i++) fn.call(bind, = this[i], i, this);=0A= },=0A= =0A= /*=0A= Property: filter=0A= This method is provided only for browsers without native *filter* = support.=0A= For more info see = =0A= =0A= *filter* calls a provided callback function once for each element in = an array, and constructs a new array of all the values for which = callback returns a true value. callback is invoked only for indexes of = the array which have assigned values; it is not invoked for indexes = which have been deleted or which have never been assigned values. Array = elements which do not pass the callback test are simply skipped, and are = not included in the new array.=0A= =0A= Arguments:=0A= fn - function to execute with each item in the array; passed the item = and the index of that item in the array=0A= bind - the object to bind "this" to (see )=0A= =0A= Example:=0A= >var biggerThanTwenty =3D [10,3,25,100].filter(function(item, index){=0A= > return item > 20;=0A= >});=0A= >//biggerThanTwenty =3D [25,100]=0A= */=0A= =0A= filter: function(fn, bind){=0A= var results =3D [];=0A= for (var i =3D 0, j =3D this.length; i < j; i++){=0A= if (fn.call(bind, this[i], i, this)) results.push(this[i]);=0A= }=0A= return results;=0A= },=0A= =0A= /*=0A= Property: map=0A= This method is provided only for browsers without native *map* support.=0A= For more info see = =0A= =0A= *map* calls a provided callback function once for each element in an = array, in order, and constructs a new array from the results. callback = is invoked only for indexes of the array which have assigned values; it = is not invoked for indexes which have been deleted or which have never = been assigned values.=0A= =0A= Arguments:=0A= fn - function to execute with each item in the array; passed the item = and the index of that item in the array=0A= bind - the object to bind "this" to (see )=0A= =0A= Example:=0A= >var timesTwo =3D [1,2,3].map(function(item, index){=0A= > return item*2;=0A= >});=0A= >//timesTwo =3D [2,4,6];=0A= */=0A= =0A= map: function(fn, bind){=0A= var results =3D [];=0A= for (var i =3D 0, j =3D this.length; i < j; i++) results[i] =3D = fn.call(bind, this[i], i, this);=0A= return results;=0A= },=0A= =0A= /*=0A= Property: every=0A= This method is provided only for browsers without native *every* = support.=0A= For more info see = =0A= =0A= *every* executes the provided callback function once for each element = present in the array until it finds one where callback returns a false = value. If such an element is found, the every method immediately returns = false. Otherwise, if callback returned a true value for all elements, = every will return true. callback is invoked only for indexes of the = array which have assigned values; it is not invoked for indexes which = have been deleted or which have never been assigned values.=0A= =0A= Arguments:=0A= fn - function to execute with each item in the array; passed the item = and the index of that item in the array=0A= bind - the object to bind "this" to (see )=0A= =0A= Example:=0A= >var areAllBigEnough =3D [10,4,25,100].every(function(item, index){=0A= > return item > 20;=0A= >});=0A= >//areAllBigEnough =3D false=0A= */=0A= =0A= every: function(fn, bind){=0A= for (var i =3D 0, j =3D this.length; i < j; i++){=0A= if (!fn.call(bind, this[i], i, this)) return false;=0A= }=0A= return true;=0A= },=0A= =0A= /*=0A= Property: some=0A= This method is provided only for browsers without native *some* = support.=0A= For more info see = =0A= =0A= *some* executes the callback function once for each element present in = the array until it finds one where callback returns a true value. If = such an element is found, some immediately returns true. Otherwise, some = returns false. callback is invoked only for indexes of the array which = have assigned values; it is not invoked for indexes which have been = deleted or which have never been assigned values.=0A= =0A= Arguments:=0A= fn - function to execute with each item in the array; passed the item = and the index of that item in the array=0A= bind - the object to bind "this" to (see )=0A= =0A= Example:=0A= >var isAnyBigEnough =3D [10,4,25,100].some(function(item, index){=0A= > return item > 20;=0A= >});=0A= >//isAnyBigEnough =3D true=0A= */=0A= =0A= some: function(fn, bind){=0A= for (var i =3D 0, j =3D this.length; i < j; i++){=0A= if (fn.call(bind, this[i], i, this)) return true;=0A= }=0A= return false;=0A= },=0A= =0A= /*=0A= Property: indexOf=0A= This method is provided only for browsers without native *indexOf* = support.=0A= For more info see = =0A= =0A= *indexOf* compares a search element to elements of the Array using = strict equality (the same method used by the =3D=3D=3D, or = triple-equals, operator).=0A= =0A= Arguments:=0A= item - any type of object; element to locate in the array=0A= from - integer; optional; the index of the array at which to begin the = search (defaults to 0)=0A= =0A= Example:=0A= >['apple','lemon','banana'].indexOf('lemon'); //returns 1=0A= >['apple','lemon'].indexOf('banana'); //returns -1=0A= */=0A= =0A= indexOf: function(item, from){=0A= var len =3D this.length;=0A= for (var i =3D (from < 0) ? Math.max(0, len + from) : from || 0; i < = len; i++){=0A= if (this[i] =3D=3D=3D item) return i;=0A= }=0A= return -1;=0A= },=0A= =0A= /*=0A= Property: each=0A= Same as .=0A= =0A= Arguments:=0A= fn - function to execute with each item in the array; passed the item = and the index of that item in the array=0A= bind - optional, the object that the "this" of the function will refer = to.=0A= =0A= Example:=0A= >var Animals =3D ['Cat', 'Dog', 'Coala'];=0A= >Animals.each(function(animal){=0A= > document.write(animal)=0A= >});=0A= */=0A= =0A= /*=0A= Property: copy=0A= returns a copy of the array.=0A= =0A= Returns:=0A= a new array which is a copy of the current one.=0A= =0A= Arguments:=0A= start - integer; optional; the index where to start the copy, default = is 0. If negative, it is taken as the offset from the end of the array.=0A= length - integer; optional; the number of elements to copy. By = default, copies all elements from start to the end of the array.=0A= =0A= Example:=0A= >var letters =3D ["a","b","c"];=0A= >var copy =3D letters.copy(); // ["a","b","c"] (new instance)=0A= */=0A= =0A= copy: function(start, length){=0A= start =3D start || 0;=0A= if (start < 0) start =3D this.length + start;=0A= length =3D length || (this.length - start);=0A= var newArray =3D [];=0A= for (var i =3D 0; i < length; i++) newArray[i] =3D this[start++];=0A= return newArray;=0A= },=0A= =0A= /*=0A= Property: remove=0A= Removes all occurrences of an item from the array.=0A= =0A= Arguments:=0A= item - the item to remove=0A= =0A= Returns:=0A= the Array with all occurrences of the item removed.=0A= =0A= Example:=0A= >["1","2","3","2"].remove("2") // ["1","3"];=0A= */=0A= =0A= remove: function(item){=0A= var i =3D 0;=0A= var len =3D this.length;=0A= while (i < len){=0A= if (this[i] =3D=3D=3D item){=0A= this.splice(i, 1);=0A= len--;=0A= } else {=0A= i++;=0A= }=0A= }=0A= return this;=0A= },=0A= =0A= /*=0A= Property: contains=0A= Tests an array for the presence of an item.=0A= =0A= Arguments:=0A= item - the item to search for in the array.=0A= from - integer; optional; the index at which to begin the search, = default is 0. If negative, it is taken as the offset from the end of the = array.=0A= =0A= Returns:=0A= true - the item was found=0A= false - it wasn't=0A= =0A= Example:=0A= >["a","b","c"].contains("a"); // true=0A= >["a","b","c"].contains("d"); // false=0A= */=0A= =0A= contains: function(item, from){=0A= return this.indexOf(item, from) !=3D -1;=0A= },=0A= =0A= /*=0A= Property: associate=0A= Creates an object with key-value pairs based on the array of keywords = passed in=0A= and the current content of the array.=0A= =0A= Arguments:=0A= keys - the array of keywords.=0A= =0A= Example:=0A= (start code)=0A= var Animals =3D ['Cat', 'Dog', 'Coala', 'Lizard'];=0A= var Speech =3D ['Miao', 'Bau', 'Fruuu', 'Mute'];=0A= var Speeches =3D Animals.associate(Speech);=0A= //Speeches['Miao'] is now Cat.=0A= //Speeches['Bau'] is now Dog.=0A= //...=0A= (end)=0A= */=0A= =0A= associate: function(keys){=0A= var obj =3D {}, length =3D Math.min(this.length, keys.length);=0A= for (var i =3D 0; i < length; i++) obj[keys[i]] =3D this[i];=0A= return obj;=0A= },=0A= =0A= /*=0A= Property: extend=0A= Extends an array with another one.=0A= =0A= Arguments:=0A= array - the array to extend ours with=0A= =0A= Example:=0A= >var Animals =3D ['Cat', 'Dog', 'Coala'];=0A= >Animals.extend(['Lizard']);=0A= >//Animals is now: ['Cat', 'Dog', 'Coala', 'Lizard'];=0A= */=0A= =0A= extend: function(array){=0A= for (var i =3D 0, j =3D array.length; i < j; i++) this.push(array[i]);=0A= return this;=0A= },=0A= =0A= /*=0A= Property: merge=0A= merges an array in another array, without duplicates. (case- and = type-sensitive)=0A= =0A= Arguments:=0A= array - the array to merge from.=0A= =0A= Example:=0A= >['Cat','Dog'].merge(['Dog','Coala']); //returns ['Cat','Dog','Coala']=0A= */=0A= =0A= merge: function(array){=0A= for (var i =3D 0, l =3D array.length; i < l; i++) = this.include(array[i]);=0A= return this;=0A= },=0A= =0A= /*=0A= Property: include=0A= includes the passed in element in the array, only if its not already = present. (case- and type-sensitive)=0A= =0A= Arguments:=0A= item - item to add to the array (if not present)=0A= =0A= Example:=0A= >['Cat','Dog'].include('Dog'); //returns ['Cat','Dog']=0A= >['Cat','Dog'].include('Coala'); //returns ['Cat','Dog','Coala']=0A= */=0A= =0A= include: function(item){=0A= if (!this.contains(item)) this.push(item);=0A= return this;=0A= },=0A= =0A= /*=0A= Property: getRandom=0A= returns a random item in the Array=0A= */=0A= =0A= getRandom: function(){=0A= return this[$random(0, this.length - 1)] || null;=0A= },=0A= =0A= /*=0A= Property: getLast=0A= returns the last item in the Array=0A= */=0A= =0A= getLast: function(){=0A= return this[this.length - 1] || null;=0A= }=0A= =0A= });=0A= =0A= //copies=0A= =0A= Array.prototype.each =3D Array.prototype.forEach;=0A= Array.each =3D Array.forEach;=0A= =0A= /* Section: Utility Functions */=0A= =0A= /*=0A= Function: $A()=0A= Same as , but as function.=0A= Useful to apply Array prototypes to iterable objects, as a collection = of DOM elements or the arguments object.=0A= =0A= Example:=0A= (start code)=0A= function myFunction(){=0A= $A(arguments).each(argument, function(){=0A= alert(argument);=0A= });=0A= };=0A= //the above will alert all the arguments passed to the function = myFunction.=0A= (end)=0A= */=0A= =0A= function $A(array){=0A= return Array.copy(array);=0A= };=0A= =0A= /*=0A= Function: $each=0A= Use to iterate through iterables that are not regular arrays, such as = builtin getElementsByTagName calls, arguments of a function, or an = object.=0A= =0A= Arguments:=0A= iterable - an iterable element or an objct.=0A= function - function to apply to the iterable.=0A= bind - optional, the 'this' of the function will refer to this object.=0A= =0A= Function argument:=0A= The function argument will be passed the following arguments.=0A= =0A= item - the current item in the iterator being procesed=0A= index - integer; the index of the item, or key in case of an object.=0A= =0A= Examples:=0A= (start code)=0A= $each(['Sun','Mon','Tue'], function(day, index){=0A= alert('name:' + day + ', index: ' + index);=0A= });=0A= //alerts "name: Sun, index: 0", "name: Mon, index: 1", etc.=0A= //over an object=0A= $each({first: "Sunday", second: "Monday", third: "Tuesday"}, = function(value, key){=0A= alert("the " + key + " day of the week is " + value);=0A= });=0A= //alerts "the first day of the week is Sunday",=0A= //"the second day of the week is Monday", etc.=0A= (end)=0A= */=0A= =0A= function $each(iterable, fn, bind){=0A= if (iterable && typeof iterable.length =3D=3D 'number' && = $type(iterable) !=3D 'object'){=0A= Array.forEach(iterable, fn, bind);=0A= } else {=0A= for (var name in iterable) fn.call(bind || iterable, iterable[name], = name);=0A= }=0A= };=0A= =0A= /*compatibility*/=0A= =0A= Array.prototype.test =3D Array.prototype.contains;=0A= =0A= /*end compatibility*/=0A= =0A= /*=0A= Script: String.js=0A= Contains String prototypes.=0A= =0A= License:=0A= MIT-style license.=0A= */=0A= =0A= /*=0A= Class: String=0A= A collection of The String Object prototype methods.=0A= */=0A= =0A= String.extend({=0A= =0A= /*=0A= Property: test=0A= Tests a string with a regular expression.=0A= =0A= Arguments:=0A= regex - a string or regular expression object, the regular expression = you want to match the string with=0A= params - optional, if first parameter is a string, any parameters you = want to pass to the regex ('g' has no effect)=0A= =0A= Returns:=0A= true if a match for the regular expression is found in the string, = false if not.=0A= See = =0A= =0A= Example:=0A= >"I like cookies".test("cookie"); // returns true=0A= >"I like cookies".test("COOKIE", "i") // ignore case, returns true=0A= >"I like cookies".test("cake"); // returns false=0A= */=0A= =0A= test: function(regex, params){=0A= return (($type(regex) =3D=3D 'string') ? new RegExp(regex, params) : = regex).test(this);=0A= },=0A= =0A= /*=0A= Property: toInt=0A= parses a string to an integer.=0A= =0A= Returns:=0A= either an int or "NaN" if the string is not a number.=0A= =0A= Example:=0A= >var value =3D "10px".toInt(); // value is 10=0A= */=0A= =0A= toInt: function(){=0A= return parseInt(this, 10);=0A= },=0A= =0A= /*=0A= Property: toFloat=0A= parses a string to an float.=0A= =0A= Returns:=0A= either a float or "NaN" if the string is not a number.=0A= =0A= Example:=0A= >var value =3D "10.848".toFloat(); // value is 10.848=0A= */=0A= =0A= toFloat: function(){=0A= return parseFloat(this);=0A= },=0A= =0A= /*=0A= Property: camelCase=0A= Converts a hiphenated string to a camelcase string.=0A= =0A= Example:=0A= >"I-like-cookies".camelCase(); //"ILikeCookies"=0A= =0A= Returns:=0A= the camel cased string=0A= */=0A= =0A= camelCase: function(){=0A= return this.replace(/-\D/g, function(match){=0A= return match.charAt(1).toUpperCase();=0A= });=0A= },=0A= =0A= /*=0A= Property: hyphenate=0A= Converts a camelCased string to a hyphen-ated string.=0A= =0A= Example:=0A= >"ILikeCookies".hyphenate(); //"I-like-cookies"=0A= */=0A= =0A= hyphenate: function(){=0A= return this.replace(/\w[A-Z]/g, function(match){=0A= return (match.charAt(0) + '-' + match.charAt(1).toLowerCase());=0A= });=0A= },=0A= =0A= /*=0A= Property: capitalize=0A= Converts the first letter in each word of a string to Uppercase.=0A= =0A= Example:=0A= >"i like cookies".capitalize(); //"I Like Cookies"=0A= =0A= Returns:=0A= the capitalized string=0A= */=0A= =0A= capitalize: function(){=0A= return this.replace(/\b[a-z]/g, function(match){=0A= return match.toUpperCase();=0A= });=0A= },=0A= =0A= /*=0A= Property: trim=0A= Trims the leading and trailing spaces off a string.=0A= =0A= Example:=0A= >" i like cookies ".trim() //"i like cookies"=0A= =0A= Returns:=0A= the trimmed string=0A= */=0A= =0A= trim: function(){=0A= return this.replace(/^\s+|\s+$/g, '');=0A= },=0A= =0A= /*=0A= Property: clean=0A= trims () a string AND removes all the double spaces in a = string.=0A= =0A= Returns:=0A= the cleaned string=0A= =0A= Example:=0A= >" i like cookies \n\n".clean() //"i like cookies"=0A= */=0A= =0A= clean: function(){=0A= return this.replace(/\s{2,}/g, ' ').trim();=0A= },=0A= =0A= /*=0A= Property: rgbToHex=0A= Converts an RGB value to hexidecimal. The string must be in the format = of "rgb(255,255,255)" or "rgba(255,255,255,1)";=0A= =0A= Arguments:=0A= array - boolean value, defaults to false. Use true if you want the = array ['FF','33','00'] as output instead of "#FF3300"=0A= =0A= Returns:=0A= hex string or array. returns "transparent" if the output is set as = string and the fourth value of rgba in input string is 0.=0A= =0A= Example:=0A= >"rgb(17,34,51)".rgbToHex(); //"#112233"=0A= >"rgba(17,34,51,0)".rgbToHex(); //"transparent"=0A= >"rgb(17,34,51)".rgbToHex(true); //['11','22','33']=0A= */=0A= =0A= rgbToHex: function(array){=0A= var rgb =3D this.match(/\d{1,3}/g);=0A= return (rgb) ? rgb.rgbToHex(array) : false;=0A= },=0A= =0A= /*=0A= Property: hexToRgb=0A= Converts a hexidecimal color value to RGB. Input string must be the = hex color value (with or without the hash). Also accepts triplets = ('333');=0A= =0A= Arguments:=0A= array - boolean value, defaults to false. Use true if you want the = array [255,255,255] as output instead of "rgb(255,255,255)";=0A= =0A= Returns:=0A= rgb string or array.=0A= =0A= Example:=0A= >"#112233".hexToRgb(); //"rgb(17,34,51)"=0A= >"#112233".hexToRgb(true); //[17,34,51]=0A= */=0A= =0A= hexToRgb: function(array){=0A= var hex =3D this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);=0A= return (hex) ? hex.slice(1).hexToRgb(array) : false;=0A= },=0A= =0A= /*=0A= Property: contains=0A= checks if the passed in string is contained in the String. also = accepts an optional second parameter, to check if the string is = contained in a list of separated values.=0A= =0A= Example:=0A= >'a b c'.contains('c', ' '); //true=0A= >'a bc'.contains('bc'); //true=0A= >'a bc'.contains('b', ' '); //false=0A= */=0A= =0A= contains: function(string, s){=0A= return (s) ? (s + this + s).indexOf(s + string + s) > -1 : = this.indexOf(string) > -1;=0A= },=0A= =0A= /*=0A= Property: escapeRegExp=0A= Returns string with escaped regular expression characters=0A= =0A= Example:=0A= >var search =3D 'animals.sheeps[1]'.escapeRegExp(); // search is now = 'animals\.sheeps\[1\]'=0A= =0A= Returns:=0A= Escaped string=0A= */=0A= =0A= escapeRegExp: function(){=0A= return this.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');=0A= }=0A= =0A= });=0A= =0A= Array.extend({=0A= =0A= /*=0A= Property: rgbToHex=0A= see , but as an array method.=0A= */=0A= =0A= rgbToHex: function(array){=0A= if (this.length < 3) return false;=0A= if (this.length =3D=3D 4 && this[3] =3D=3D 0 && !array) return = 'transparent';=0A= var hex =3D [];=0A= for (var i =3D 0; i < 3; i++){=0A= var bit =3D (this[i] - 0).toString(16);=0A= hex.push((bit.length =3D=3D 1) ? '0' + bit : bit);=0A= }=0A= return array ? hex : '#' + hex.join('');=0A= },=0A= =0A= /*=0A= Property: hexToRgb=0A= same as , but as an array method.=0A= */=0A= =0A= hexToRgb: function(array){=0A= if (this.length !=3D 3) return false;=0A= var rgb =3D [];=0A= for (var i =3D 0; i < 3; i++){=0A= rgb.push(parseInt((this[i].length =3D=3D 1) ? this[i] + this[i] : = this[i], 16));=0A= }=0A= return array ? rgb : 'rgb(' + rgb.join(',') + ')';=0A= }=0A= =0A= });=0A= =0A= /* =0A= Script: Function.js=0A= Contains Function prototypes and utility functions .=0A= =0A= License:=0A= MIT-style license.=0A= =0A= Credits:=0A= - Some functions are inspired by those found in prototype.js = (c) 2005 Sam Stephenson sam [at] conio = [dot] net, MIT-style license=0A= */=0A= =0A= /*=0A= Class: Function=0A= A collection of The Function Object prototype methods.=0A= */=0A= =0A= Function.extend({=0A= =0A= /*=0A= Property: create=0A= Main function to create closures.=0A= =0A= Returns:=0A= a function.=0A= =0A= Arguments:=0A= options - An Options object.=0A= =0A= Options:=0A= bind - The object that the "this" of the function will refer to. = Default is the current function.=0A= event - If set to true, the function will act as an event listener and = receive an event as first argument.=0A= If set to a class name, the function will receive a new instance of = this class (with the event passed as argument's constructor) as first = argument.=0A= Default is false.=0A= arguments - A single argument or array of arguments that will be = passed to the function when called.=0A= =0A= If both the event and arguments options are set, the event is = passed as first argument and the arguments array will follow.=0A= =0A= Default is no custom arguments, the function will receive the = standard arguments when called.=0A= =0A= delay - Numeric value: if set, the returned function will delay the = actual execution by this amount of milliseconds and return a timer = handle when called.=0A= Default is no delay.=0A= periodical - Numeric value: if set, the returned function will = periodically perform the actual execution with this specified interval = and return a timer handle when called.=0A= Default is no periodical execution.=0A= attempt - If set to true, the returned function will try to execute = and return either the results or false on error. Default is false.=0A= */=0A= =0A= create: function(options){=0A= var fn =3D this;=0A= options =3D $merge({=0A= 'bind': fn,=0A= 'event': false,=0A= 'arguments': null,=0A= 'delay': false,=0A= 'periodical': false,=0A= 'attempt': false=0A= }, options);=0A= if ($chk(options.arguments) && $type(options.arguments) !=3D 'array') = options.arguments =3D [options.arguments];=0A= return function(event){=0A= var args;=0A= if (options.event){=0A= event =3D event || window.event;=0A= args =3D [(options.event =3D=3D=3D true) ? event : new = options.event(event)];=0A= if (options.arguments) args.extend(options.arguments);=0A= }=0A= else args =3D options.arguments || arguments;=0A= var returns =3D function(){=0A= return fn.apply($pick(options.bind, fn), args);=0A= };=0A= if (options.delay) return setTimeout(returns, options.delay);=0A= if (options.periodical) return setInterval(returns, = options.periodical);=0A= if (options.attempt) try {return returns();} catch(err){return = false;};=0A= return returns();=0A= };=0A= },=0A= =0A= /*=0A= Property: pass=0A= Shortcut to create closures with arguments and bind.=0A= =0A= Returns:=0A= a function.=0A= =0A= Arguments:=0A= args - the arguments passed. must be an array if arguments > 1=0A= bind - optional, the object that the "this" of the function will refer = to.=0A= =0A= Example:=0A= >myFunction.pass([arg1, arg2], myElement);=0A= */=0A= =0A= pass: function(args, bind){=0A= return this.create({'arguments': args, 'bind': bind});=0A= },=0A= =0A= /*=0A= Property: attempt=0A= Tries to execute the function, returns either the result of the = function or false on error.=0A= =0A= Arguments:=0A= args - the arguments passed. must be an array if arguments > 1=0A= bind - optional, the object that the "this" of the function will refer = to.=0A= =0A= Example:=0A= >myFunction.attempt([arg1, arg2], myElement);=0A= */=0A= =0A= attempt: function(args, bind){=0A= return this.create({'arguments': args, 'bind': bind, 'attempt': = true})();=0A= },=0A= =0A= /*=0A= Property: bind=0A= method to easily create closures with "this" altered.=0A= =0A= Arguments:=0A= bind - optional, the object that the "this" of the function will refer = to.=0A= args - optional, the arguments passed. must be an array if arguments > = 1=0A= =0A= Returns:=0A= a function.=0A= =0A= Example:=0A= >function myFunction(){=0A= > this.setStyle('color', 'red');=0A= > // note that 'this' here refers to myFunction, not an element=0A= > // we'll need to bind this function to the element we want to alter=0A= >};=0A= >var myBoundFunction =3D myFunction.bind(myElement);=0A= >myBoundFunction(); // this will make the element myElement red.=0A= */=0A= =0A= bind: function(bind, args){=0A= return this.create({'bind': bind, 'arguments': args});=0A= },=0A= =0A= /*=0A= Property: bindAsEventListener=0A= cross browser method to pass event firer=0A= =0A= Arguments:=0A= bind - optional, the object that the "this" of the function will refer = to.=0A= args - optional, the arguments passed. must be an array if arguments > = 1=0A= =0A= Returns:=0A= a function with the parameter bind as its "this" and as a pre-passed = argument event or window.event, depending on the browser.=0A= =0A= Example:=0A= >function myFunction(event){=0A= > alert(event.clientx) //returns the coordinates of the mouse..=0A= >};=0A= >myElement.onclick =3D myFunction.bindAsEventListener(myElement);=0A= */=0A= =0A= bindAsEventListener: function(bind, args){=0A= return this.create({'bind': bind, 'event': true, 'arguments': args});=0A= },=0A= =0A= /*=0A= Property: delay=0A= Delays the execution of a function by a specified duration.=0A= =0A= Arguments:=0A= delay - the duration to wait in milliseconds.=0A= bind - optional, the object that the "this" of the function will refer = to.=0A= args - optional, the arguments passed. must be an array if arguments > = 1=0A= =0A= Example:=0A= >myFunction.delay(50, myElement) //wait 50 milliseconds, then call = myFunction and bind myElement to it=0A= >(function(){alert('one second later...')}).delay(1000); //wait a = second and alert=0A= */=0A= =0A= delay: function(delay, bind, args){=0A= return this.create({'delay': delay, 'bind': bind, 'arguments': = args})();=0A= },=0A= =0A= /*=0A= Property: periodical=0A= Executes a function in the specified intervals of time=0A= =0A= Arguments:=0A= interval - the duration of the intervals between executions.=0A= bind - optional, the object that the "this" of the function will refer = to.=0A= args - optional, the arguments passed. must be an array if arguments > = 1=0A= */=0A= =0A= periodical: function(interval, bind, args){=0A= return this.create({'periodical': interval, 'bind': bind, 'arguments': = args})();=0A= }=0A= =0A= });=0A= =0A= /*=0A= Script: Number.js=0A= Contains the Number prototypes.=0A= =0A= License:=0A= MIT-style license.=0A= */=0A= =0A= /*=0A= Class: Number=0A= A collection of The Number Object prototype methods.=0A= */=0A= =0A= Number.extend({=0A= =0A= /*=0A= Property: toInt=0A= Returns this number; useful because toInt must work on both Strings = and Numbers.=0A= */=0A= =0A= toInt: function(){=0A= return parseInt(this);=0A= },=0A= =0A= /*=0A= Property: toFloat=0A= Returns this number as a float; useful because toFloat must work on = both Strings and Numbers.=0A= */=0A= =0A= toFloat: function(){=0A= return parseFloat(this);=0A= },=0A= =0A= /*=0A= Property: limit=0A= Limits the number.=0A= =0A= Arguments:=0A= min - number, minimum value=0A= max - number, maximum value=0A= =0A= Returns:=0A= the number in the given limits.=0A= =0A= Example:=0A= >(12).limit(2, 6.5) // returns 6.5=0A= >(-4).limit(2, 6.5) // returns 2=0A= >(4.3).limit(2, 6.5) // returns 4.3=0A= */=0A= =0A= limit: function(min, max){=0A= return Math.min(max, Math.max(min, this));=0A= },=0A= =0A= /*=0A= Property: round=0A= Returns the number rounded to specified precision.=0A= =0A= Arguments:=0A= precision - integer, number of digits after the decimal point. Can = also be negative or zero (default).=0A= =0A= Example:=0A= >12.45.round() // returns 12=0A= >12.45.round(1) // returns 12.5=0A= >12.45.round(-1) // returns 10=0A= =0A= Returns:=0A= The rounded number.=0A= */=0A= =0A= round: function(precision){=0A= precision =3D Math.pow(10, precision || 0);=0A= return Math.round(this * precision) / precision;=0A= },=0A= =0A= /*=0A= Property: times=0A= Executes a passed in function the specified number of times=0A= =0A= Arguments:=0A= function - the function to be executed on each iteration of the loop=0A= =0A= Example:=0A= >(4).times(alert);=0A= */=0A= =0A= times: function(fn){=0A= for (var i =3D 0; i < this; i++) fn(i);=0A= }=0A= =0A= });=0A= =0A= /*=0A= Script: Element.js=0A= Contains useful Element prototypes, to be used with the dollar function = <$>.=0A= =0A= License:=0A= MIT-style license.=0A= =0A= Credits:=0A= - Some functions are inspired by those found in prototype.js = (c) 2005 Sam Stephenson sam [at] conio = [dot] net, MIT-style license=0A= */=0A= =0A= /*=0A= Class: Element=0A= Custom class to allow all of its methods to be used with any DOM = element via the dollar function <$>.=0A= */=0A= =0A= var Element =3D new Class({=0A= =0A= /*=0A= Property: initialize=0A= Creates a new element of the type passed in.=0A= =0A= Arguments:=0A= el - string; the tag name for the element you wish to create. you can = also pass in an element reference, in which case it will be extended.=0A= props - object; the properties you want to add to your element.=0A= Accepts the same keys as , but also allows = events and styles=0A= =0A= Props:=0A= the key styles will be used as setStyles, the key events will be used = as addEvents. any other key is used as setProperty.=0A= =0A= Example:=0A= (start code)=0A= new Element('a', {=0A= 'styles': {=0A= 'display': 'block',=0A= 'border': '1px solid black'=0A= },=0A= 'events': {=0A= 'click': function(){=0A= //aaa=0A= },=0A= 'mousedown': function(){=0A= //aaa=0A= }=0A= },=0A= 'class': 'myClassSuperClass',=0A= 'href': 'http://mad4milk.net'=0A= });=0A= =0A= (end)=0A= */=0A= =0A= initialize: function(el, props){=0A= if ($type(el) =3D=3D 'string'){=0A= if (window.ie && props && (props.name || props.type)){=0A= var name =3D (props.name) ? ' name=3D"' + props.name + '"' : '';=0A= var type =3D (props.type) ? ' type=3D"' + props.type + '"' : '';=0A= delete props.name;=0A= delete props.type;=0A= el =3D '<' + el + name + type + '>';=0A= }=0A= el =3D document.createElement(el);=0A= }=0A= el =3D $(el);=0A= return (!props || !el) ? el : el.set(props);=0A= }=0A= =0A= });=0A= =0A= /*=0A= Class: Elements=0A= - Every dom function such as <$$>, or in general every function that = returns a collection of nodes in mootools, returns them as an Elements = class.=0A= - The purpose of the Elements class is to allow methods to = work also on array.=0A= - Elements is also an Array, so it accepts all the methods.=0A= - Every node of the Elements instance is already extended with <$>.=0A= =0A= Example:=0A= >$$('myselector').each(function(el){=0A= > //...=0A= >});=0A= =0A= some iterations here, $$('myselector') is also an array.=0A= =0A= >$$('myselector').setStyle('color', 'red');=0A= every element returned by $$('myselector') also accepts = methods, in this example every element will be made red.=0A= */=0A= =0A= var Elements =3D new Class({=0A= =0A= initialize: function(elements){=0A= return (elements) ? $extend(elements, this) : this;=0A= }=0A= =0A= });=0A= =0A= Elements.extend =3D function(props){=0A= for (var prop in props){=0A= this.prototype[prop] =3D props[prop];=0A= this[prop] =3D $native.generic(prop);=0A= }=0A= };=0A= =0A= /*=0A= Section: Utility Functions=0A= =0A= Function: $=0A= returns the element passed in with all the Element prototypes applied.=0A= =0A= Arguments:=0A= el - a reference to an actual element or a string representing the id = of an element=0A= =0A= Example:=0A= >$('myElement') // gets a DOM element by id with all the Element = prototypes applied.=0A= >var div =3D document.getElementById('myElement');=0A= >$(div) //returns an Element also with all the mootools extentions = applied.=0A= =0A= You'll use this when you aren't sure if a variable is an actual element = or an id, as=0A= well as just shorthand for document.getElementById().=0A= =0A= Returns:=0A= a DOM element or false (if no id was found).=0A= =0A= Note:=0A= you need to call $ on an element only once to get all the prototypes.=0A= But its no harm to call it multiple times, as it will detect if it has = been already extended.=0A= */=0A= =0A= function $(el){=0A= if (!el) return null;=0A= if (el.htmlElement) return Garbage.collect(el);=0A= if ([window, document].contains(el)) return el;=0A= var type =3D $type(el);=0A= if (type =3D=3D 'string'){=0A= el =3D document.getElementById(el);=0A= type =3D (el) ? 'element' : false;=0A= }=0A= if (type !=3D 'element') return null;=0A= if (el.htmlElement) return Garbage.collect(el);=0A= if (['object', 'embed'].contains(el.tagName.toLowerCase())) return el;=0A= $extend(el, Element.prototype);=0A= el.htmlElement =3D function(){};=0A= return Garbage.collect(el);=0A= };=0A= =0A= /*=0A= Function: $$=0A= Selects, and extends DOM elements. Elements arrays returned with $$ = will also accept all the methods.=0A= The return type of element methods run through $$ is always an array. = If the return array is only made by elements,=0A= $$ will be applied automatically.=0A= =0A= Arguments:=0A= HTML Collections, arrays of elements, arrays of strings as element ids, = elements, strings as selectors.=0A= Any number of the above as arguments are accepted.=0A= =0A= Note:=0A= if you load , $$ will also accept CSS Selectors, = otherwise the only selectors supported are tag names.=0A= =0A= Example:=0A= >$$('a') //an array of all anchor tags on the page=0A= >$$('a', 'b') //an array of all anchor and bold tags on the page=0A= >$$('#myElement') //array containing only the element with id =3D = myElement. (only with )=0A= >$$('#myElement a.myClass') //an array of all anchor tags with the = class "myClass"=0A= >//within the DOM element with id "myElement" (only with = )=0A= >$$(myelement, myelement2, 'a', ['myid', myid2, 'myid3'], = document.getElementsByTagName('div')) //an array containing:=0A= >// the element referenced as myelement if existing,=0A= >// the element referenced as myelement2 if existing,=0A= >// all the elements with a as tag in the page,=0A= >// the element with id =3D myid if existing=0A= >// the element with id =3D myid2 if existing=0A= >// the element with id =3D myid3 if existing=0A= >// all the elements with div as tag in the page=0A= =0A= Returns:=0A= array - array of all the dom elements matched, extended with <$>. = Returns as .=0A= */=0A= =0A= document.getElementsBySelector =3D document.getElementsByTagName;=0A= =0A= function $$(){=0A= var elements =3D [];=0A= for (var i =3D 0, j =3D arguments.length; i < j; i++){=0A= var selector =3D arguments[i];=0A= switch($type(selector)){=0A= case 'element': elements.push(selector);=0A= case 'boolean': break;=0A= case false: break;=0A= case 'string': selector =3D document.getElementsBySelector(selector, = true);=0A= default: elements.extend(selector);=0A= }=0A= }=0A= return $$.unique(elements);=0A= };=0A= =0A= $$.unique =3D function(array){=0A= var elements =3D [];=0A= for (var i =3D 0, l =3D array.length; i < l; i++){=0A= if (array[i].$included) continue;=0A= var element =3D $(array[i]);=0A= if (element && !element.$included){=0A= element.$included =3D true;=0A= elements.push(element);=0A= }=0A= }=0A= for (var n =3D 0, d =3D elements.length; n < d; n++) = elements[n].$included =3D null;=0A= return new Elements(elements);=0A= };=0A= =0A= Elements.Multi =3D function(property){=0A= return function(){=0A= var args =3D arguments;=0A= var items =3D [];=0A= var elements =3D true;=0A= for (var i =3D 0, j =3D this.length, returns; i < j; i++){=0A= returns =3D this[i][property].apply(this[i], args);=0A= if ($type(returns) !=3D 'element') elements =3D false;=0A= items.push(returns);=0A= };=0A= return (elements) ? $$.unique(items) : items;=0A= };=0A= };=0A= =0A= Element.extend =3D function(properties){=0A= for (var property in properties){=0A= HTMLElement.prototype[property] =3D properties[property];=0A= Element.prototype[property] =3D properties[property];=0A= Element[property] =3D $native.generic(property);=0A= var elementsProperty =3D (Array.prototype[property]) ? property + = 'Elements' : property;=0A= Elements.prototype[elementsProperty] =3D Elements.Multi(property);=0A= }=0A= };=0A= =0A= /*=0A= Class: Element=0A= Custom class to allow all of its methods to be used with any DOM = element via the dollar function <$>.=0A= */=0A= =0A= Element.extend({=0A= =0A= /*=0A= Property: set=0A= you can set events, styles and properties with this shortcut. same as = calling new Element.=0A= */=0A= =0A= set: function(props){=0A= for (var prop in props){=0A= var val =3D props[prop];=0A= switch(prop){=0A= case 'styles': this.setStyles(val); break;=0A= case 'events': if (this.addEvents) this.addEvents(val); break;=0A= case 'properties': this.setProperties(val); break;=0A= default: this.setProperty(prop, val);=0A= }=0A= }=0A= return this;=0A= },=0A= =0A= inject: function(el, where){=0A= el =3D $(el);=0A= switch(where){=0A= case 'before': el.parentNode.insertBefore(this, el); break;=0A= case 'after':=0A= var next =3D el.getNext();=0A= if (!next) el.parentNode.appendChild(this);=0A= else el.parentNode.insertBefore(this, next);=0A= break;=0A= case 'top':=0A= var first =3D el.firstChild;=0A= if (first){=0A= el.insertBefore(this, first);=0A= break;=0A= }=0A= default: el.appendChild(this);=0A= }=0A= return this;=0A= },=0A= =0A= /*=0A= Property: injectBefore=0A= Inserts the Element before the passed element.=0A= =0A= Arguments:=0A= el - an element reference or the id of the element to be injected in.=0A= =0A= Example:=0A= >html:=0A= >
=0A= >
=0A= >js:=0A= >$('mySecondElement').injectBefore('myElement');=0A= >resulting html:=0A= >
=0A= >
=0A= */=0A= =0A= injectBefore: function(el){=0A= return this.inject(el, 'before');=0A= },=0A= =0A= /*=0A= Property: injectAfter=0A= Same as , but inserts the element after.=0A= */=0A= =0A= injectAfter: function(el){=0A= return this.inject(el, 'after');=0A= },=0A= =0A= /*=0A= Property: injectInside=0A= Same as , but inserts the element inside.=0A= */=0A= =0A= injectInside: function(el){=0A= return this.inject(el, 'bottom');=0A= },=0A= =0A= /*=0A= Property: injectTop=0A= Same as , but inserts the element inside, at the = top.=0A= */=0A= =0A= injectTop: function(el){=0A= return this.inject(el, 'top');=0A= },=0A= =0A= /*=0A= Property: adopt=0A= Inserts the passed elements inside the Element.=0A= =0A= Arguments:=0A= accepts elements references, element ids as string, selectors = ($$('stuff')) / array of elements, array of ids as strings and = collections.=0A= */=0A= =0A= adopt: function(){=0A= var elements =3D [];=0A= $each(arguments, function(argument){=0A= elements =3D elements.concat(argument);=0A= });=0A= $$(elements).inject(this);=0A= return this;=0A= },=0A= =0A= /*=0A= Property: remove=0A= Removes the Element from the DOM.=0A= =0A= Example:=0A= >$('myElement').remove() //bye bye=0A= */=0A= =0A= remove: function(){=0A= return this.parentNode.removeChild(this);=0A= },=0A= =0A= /*=0A= Property: clone=0A= Clones the Element and returns the cloned one.=0A= =0A= Arguments:=0A= contents - boolean, when true the Element is cloned with childNodes, = default true=0A= =0A= Returns:=0A= the cloned element=0A= =0A= Example:=0A= >var clone =3D $('myElement').clone().injectAfter('myElement');=0A= >//clones the Element and append the clone after the Element.=0A= */=0A= =0A= clone: function(contents){=0A= var el =3D $(this.cloneNode(contents !=3D=3D false));=0A= if (!el.$events) return el;=0A= el.$events =3D {};=0A= for (var type in this.$events) el.$events[type] =3D {=0A= 'keys': $A(this.$events[type].keys),=0A= 'values': $A(this.$events[type].values)=0A= };=0A= return el.removeEvents();=0A= },=0A= =0A= /*=0A= Property: replaceWith=0A= Replaces the Element with an element passed.=0A= =0A= Arguments:=0A= el - a string representing the element to be injected in (myElementId, = or div), or an element reference.=0A= If you pass div or another tag, the element will be created.=0A= =0A= Returns:=0A= the passed in element=0A= =0A= Example:=0A= >$('myOldElement').replaceWith($('myNewElement')); //$('myOldElement') = is gone, and $('myNewElement') is in its place.=0A= */=0A= =0A= replaceWith: function(el){=0A= el =3D $(el);=0A= this.parentNode.replaceChild(el, this);=0A= return el;=0A= },=0A= =0A= /*=0A= Property: appendText=0A= Appends text node to a DOM element.=0A= =0A= Arguments:=0A= text - the text to append.=0A= =0A= Example:=0A= >
hey
=0A= >$('myElement').appendText(' howdy'); //myElement innerHTML is now = "hey howdy"=0A= */=0A= =0A= appendText: function(text){=0A= this.appendChild(document.createTextNode(text));=0A= return this;=0A= },=0A= =0A= /*=0A= Property: hasClass=0A= Tests the Element to see if it has the passed in className.=0A= =0A= Returns:=0A= true - the Element has the class=0A= false - it doesn't=0A= =0A= Arguments:=0A= className - string; the class name to test.=0A= =0A= Example:=0A= >
=0A= >$('myElement').hasClass('testClass'); //returns true=0A= */=0A= =0A= hasClass: function(className){=0A= return this.className.contains(className, ' ');=0A= },=0A= =0A= /*=0A= Property: addClass=0A= Adds the passed in class to the Element, if the element doesnt already = have it.=0A= =0A= Arguments:=0A= className - string; the class name to add=0A= =0A= Example:=0A= >
=0A= >$('myElement').addClass('newClass'); //
=0A= */=0A= =0A= addClass: function(className){=0A= if (!this.hasClass(className)) this.className =3D (this.className + ' = ' + className).clean();=0A= return this;=0A= },=0A= =0A= /*=0A= Property: removeClass=0A= Works like , but removes the class from the element.=0A= */=0A= =0A= removeClass: function(className){=0A= this.className =3D this.className.replace(new RegExp('(^|\\s)' + = className + '(?:\\s|$)'), '$1').clean();=0A= return this;=0A= },=0A= =0A= /*=0A= Property: toggleClass=0A= Adds or removes the passed in class name to the element, depending on = if it's present or not.=0A= =0A= Arguments:=0A= className - the class to add or remove=0A= =0A= Example:=0A= >
=0A= >$('myElement').toggleClass('myClass');=0A= >
=0A= >$('myElement').toggleClass('myClass');=0A= >
=0A= */=0A= =0A= toggleClass: function(className){=0A= return this.hasClass(className) ? this.removeClass(className) : = this.addClass(className);=0A= },=0A= =0A= /*=0A= Property: setStyle=0A= Sets a css property to the Element.=0A= =0A= Arguments:=0A= property - the property to set=0A= value - the value to which to set it; for numeric values that require = "px" you can pass an integer=0A= =0A= Example:=0A= >$('myElement').setStyle('width', '300px'); //the width is now 300px=0A= >$('myElement').setStyle('width', 300); //the width is now 300px=0A= */=0A= =0A= setStyle: function(property, value){=0A= switch(property){=0A= case 'opacity': return this.setOpacity(parseFloat(value));=0A= case 'float': property =3D (window.ie) ? 'styleFloat' : 'cssFloat';=0A= }=0A= property =3D property.camelCase();=0A= switch($type(value)){=0A= case 'number': if (!['zIndex', 'zoom'].contains(property)) value +=3D = 'px'; break;=0A= case 'array': value =3D 'rgb(' + value.join(',') + ')';=0A= }=0A= this.style[property] =3D value;=0A= return this;=0A= },=0A= =0A= /*=0A= Property: setStyles=0A= Applies a collection of styles to the Element.=0A= =0A= Arguments:=0A= source - an object or string containing all the styles to apply. When = its a string it overrides old style.=0A= =0A= Examples:=0A= >$('myElement').setStyles({=0A= > border: '1px solid #000',=0A= > width: 300,=0A= > height: 400=0A= >});=0A= =0A= OR=0A= =0A= >$('myElement').setStyles('border: 1px solid #000; width: 300px; = height: 400px;');=0A= */=0A= =0A= setStyles: function(source){=0A= switch($type(source)){=0A= case 'object': Element.setMany(this, 'setStyle', source); break;=0A= case 'string': this.style.cssText =3D source;=0A= }=0A= return this;=0A= },=0A= =0A= /*=0A= Property: setOpacity=0A= Sets the opacity of the Element, and sets also visibility =3D=3D = "hidden" if opacity =3D=3D 0, and visibility =3D "visible" if opacity > = 0.=0A= =0A= Arguments:=0A= opacity - float; Accepts values from 0 to 1.=0A= =0A= Example:=0A= >$('myElement').setOpacity(0.5) //make it 50% transparent=0A= */=0A= =0A= setOpacity: function(opacity){=0A= if (opacity =3D=3D 0){=0A= if (this.style.visibility !=3D "hidden") this.style.visibility =3D = "hidden";=0A= } else {=0A= if (this.style.visibility !=3D "visible") this.style.visibility =3D = "visible";=0A= }=0A= if (!this.currentStyle || !this.currentStyle.hasLayout) = this.style.zoom =3D 1;=0A= if (window.ie) this.style.filter =3D (opacity =3D=3D 1) ? '' : = "alpha(opacity=3D" + opacity * 100 + ")";=0A= this.style.opacity =3D this.$tmp.opacity =3D opacity;=0A= return this;=0A= },=0A= =0A= /*=0A= Property: getStyle=0A= Returns the style of the Element given the property passed in.=0A= =0A= Arguments:=0A= property - the css style property you want to retrieve=0A= =0A= Example:=0A= >$('myElement').getStyle('width'); //returns "400px"=0A= >//but you can also use=0A= >$('myElement').getStyle('width').toInt(); //returns 400=0A= =0A= Returns:=0A= the style as a string=0A= */=0A= =0A= getStyle: function(property){=0A= property =3D property.camelCase();=0A= var result =3D this.style[property];=0A= if (!$chk(result)){=0A= if (property =3D=3D 'opacity') return this.$tmp.opacity;=0A= result =3D [];=0A= for (var style in Element.Styles){=0A= if (property =3D=3D style){=0A= Element.Styles[style].each(function(s){=0A= var style =3D this.getStyle(s);=0A= result.push(parseInt(style) ? style : '0px');=0A= }, this);=0A= if (property =3D=3D 'border'){=0A= var every =3D result.every(function(bit){=0A= return (bit =3D=3D result[0]);=0A= });=0A= return (every) ? result[0] : false;=0A= }=0A= return result.join(' ');=0A= }=0A= }=0A= if (property.contains('border')){=0A= if (Element.Styles.border.contains(property)){=0A= return ['Width', 'Style', 'Color'].map(function(p){=0A= return this.getStyle(property + p);=0A= }, this).join(' ');=0A= } else if (Element.borderShort.contains(property)){=0A= return ['Top', 'Right', 'Bottom', 'Left'].map(function(p){=0A= return this.getStyle('border' + p + property.replace('border', = ''));=0A= }, this).join(' ');=0A= }=0A= }=0A= if (document.defaultView) result =3D = document.defaultView.getComputedStyle(this, = null).getPropertyValue(property.hyphenate());=0A= else if (this.currentStyle) result =3D this.currentStyle[property];=0A= }=0A= if (window.ie) result =3D Element.fixStyle(property, result, this);=0A= if (result && property.test(/color/i) && result.contains('rgb')){=0A= return result.split('rgb').splice(1,4).map(function(color){=0A= return color.rgbToHex();=0A= }).join(' ');=0A= }=0A= return result;=0A= },=0A= =0A= /*=0A= Property: getStyles=0A= Returns an object of styles of the Element for each argument passed in.=0A= Arguments:=0A= properties - strings; any number of style properties=0A= Example:=0A= >$('myElement').getStyles('width','height','padding');=0A= >//returns an object like:=0A= >{width: "10px", height: "10px", padding: "10px 0px 10px 0px"}=0A= */=0A= =0A= getStyles: function(){=0A= return Element.getMany(this, 'getStyle', arguments);=0A= },=0A= =0A= walk: function(brother, start){=0A= brother +=3D 'Sibling';=0A= var el =3D (start) ? this[start] : this[brother];=0A= while (el && $type(el) !=3D 'element') el =3D el[brother];=0A= return $(el);=0A= },=0A= =0A= /*=0A= Property: getPrevious=0A= Returns the previousSibling of the Element, excluding text nodes.=0A= =0A= Example:=0A= >$('myElement').getPrevious(); //get the previous DOM element from = myElement=0A= =0A= Returns:=0A= the sibling element or undefined if none found.=0A= */=0A= =0A= getPrevious: function(){=0A= return this.walk('previous');=0A= },=0A= =0A= /*=0A= Property: getNext=0A= Works as Element.getPrevious, but tries to find the nextSibling.=0A= */=0A= =0A= getNext: function(){=0A= return this.walk('next');=0A= },=0A= =0A= /*=0A= Property: getFirst=0A= Works as , but tries to find the firstChild.=0A= */=0A= =0A= getFirst: function(){=0A= return this.walk('next', 'firstChild');=0A= },=0A= =0A= /*=0A= Property: getLast=0A= Works as , but tries to find the lastChild.=0A= */=0A= =0A= getLast: function(){=0A= return this.walk('previous', 'lastChild');=0A= },=0A= =0A= /*=0A= Property: getParent=0A= returns the $(element.parentNode)=0A= */=0A= =0A= getParent: function(){=0A= return $(this.parentNode);=0A= },=0A= =0A= /*=0A= Property: getChildren=0A= returns all the $(element.childNodes), excluding text nodes. Returns = as .=0A= */=0A= =0A= getChildren: function(){=0A= return $$(this.childNodes);=0A= },=0A= =0A= /*=0A= Property: hasChild=0A= returns true if the passed in element is a child of the $(element).=0A= */=0A= =0A= hasChild: function(el){=0A= return !!$A(this.getElementsByTagName('*')).contains(el);=0A= },=0A= =0A= /*=0A= Property: getProperty=0A= Gets the an attribute of the Element.=0A= =0A= Arguments:=0A= property - string; the attribute to retrieve=0A= =0A= Example:=0A= >$('myImage').getProperty('src') // returns whatever.gif=0A= =0A= Returns:=0A= the value, or an empty string=0A= */=0A= =0A= getProperty: function(property){=0A= var index =3D Element.Properties[property];=0A= if (index) return this[index];=0A= var flag =3D Element.PropertiesIFlag[property] || 0;=0A= if (!window.ie || flag) return this.getAttribute(property, flag);=0A= var node =3D this.attributes[property];=0A= return (node) ? node.nodeValue : null;=0A= },=0A= =0A= /*=0A= Property: removeProperty=0A= Removes an attribute from the Element=0A= =0A= Arguments:=0A= property - string; the attribute to remove=0A= */=0A= =0A= removeProperty: function(property){=0A= var index =3D Element.Properties[property];=0A= if (index) this[index] =3D '';=0A= else this.removeAttribute(property);=0A= return this;=0A= },=0A= =0A= /*=0A= Property: getProperties=0A= same as , but for properties=0A= */=0A= =0A= getProperties: function(){=0A= return Element.getMany(this, 'getProperty', arguments);=0A= },=0A= =0A= /*=0A= Property: setProperty=0A= Sets an attribute for the Element.=0A= =0A= Arguments:=0A= property - string; the property to assign the value passed in=0A= value - the value to assign to the property passed in=0A= =0A= Example:=0A= >$('myImage').setProperty('src', 'whatever.gif'); //myImage now points = to whatever.gif for its source=0A= */=0A= =0A= setProperty: function(property, value){=0A= var index =3D Element.Properties[property];=0A= if (index) this[index] =3D value;=0A= else this.setAttribute(property, value);=0A= return this;=0A= },=0A= =0A= /*=0A= Property: setProperties=0A= Sets numerous attributes for the Element.=0A= =0A= Arguments:=0A= source - an object with key/value pairs.=0A= =0A= Example:=0A= (start code)=0A= $('myElement').setProperties({=0A= src: 'whatever.gif',=0A= alt: 'whatever dude'=0A= });=0A= 3D"whatever=0A= (end)=0A= */=0A= =0A= setProperties: function(source){=0A= return Element.setMany(this, 'setProperty', source);=0A= },=0A= =0A= /*=0A= Property: setHTML=0A= Sets the innerHTML of the Element.=0A= =0A= Arguments:=0A= html - string; the new innerHTML for the element.=0A= =0A= Example:=0A= >$('myElement').setHTML(newHTML) //the innerHTML of myElement is now = =3D newHTML=0A= */=0A= =0A= setHTML: function(){=0A= this.innerHTML =3D $A(arguments).join('');=0A= return this;=0A= },=0A= =0A= /*=0A= Property: setText=0A= Sets the inner text of the Element.=0A= =0A= Arguments:=0A= text - string; the new text content for the element.=0A= =0A= Example:=0A= >$('myElement').setText('some text') //the text of myElement is now = =3D 'some text'=0A= */=0A= =0A= setText: function(text){=0A= var tag =3D this.getTag();=0A= if (['style', 'script'].contains(tag)){=0A= if (window.ie){=0A= if (tag =3D=3D 'style') this.styleSheet.cssText =3D text;=0A= else if (tag =3D=3D 'script') this.setProperty('text', text);=0A= return this;=0A= } else {=0A= this.removeChild(this.firstChild);=0A= return this.appendText(text);=0A= }=0A= }=0A= this[$defined(this.innerText) ? 'innerText' : 'textContent'] =3D text;=0A= return this;=0A= },=0A= =0A= /*=0A= Property: getText=0A= Gets the inner text of the Element.=0A= */=0A= =0A= getText: function(){=0A= var tag =3D this.getTag();=0A= if (['style', 'script'].contains(tag)){=0A= if (window.ie){=0A= if (tag =3D=3D 'style') return this.styleSheet.cssText;=0A= else if (tag =3D=3D 'script') return this.getProperty('text');=0A= } else {=0A= return this.innerHTML;=0A= }=0A= }=0A= return ($pick(this.innerText, this.textContent));=0A= },=0A= =0A= /*=0A= Property: getTag=0A= Returns the tagName of the element in lower case.=0A= =0A= Example:=0A= >$('myImage').getTag() // returns 'img'=0A= =0A= Returns:=0A= The tag name in lower case=0A= */=0A= =0A= getTag: function(){=0A= return this.tagName.toLowerCase();=0A= },=0A= =0A= /*=0A= Property: empty=0A= Empties an element of all its children.=0A= =0A= Example:=0A= >$('myDiv').empty() // empties the Div and returns it=0A= =0A= Returns:=0A= The element.=0A= */=0A= =0A= empty: function(){=0A= Garbage.trash(this.getElementsByTagName('*'));=0A= return this.setHTML('');=0A= }=0A= =0A= });=0A= =0A= Element.fixStyle =3D function(property, result, element){=0A= if ($chk(parseInt(result))) return result;=0A= if (['height', 'width'].contains(property)){=0A= var values =3D (property =3D=3D 'width') ? ['left', 'right'] : ['top', = 'bottom'];=0A= var size =3D 0;=0A= values.each(function(value){=0A= size +=3D element.getStyle('border-' + value + '-width').toInt() + = element.getStyle('padding-' + value).toInt();=0A= });=0A= return element['offset' + property.capitalize()] - size + 'px';=0A= } else if (property.test(/border(.+)Width|margin|padding/)){=0A= return '0px';=0A= }=0A= return result;=0A= };=0A= =0A= Element.Styles =3D {'border': [], 'padding': [], 'margin': []};=0A= ['Top', 'Right', 'Bottom', 'Left'].each(function(direction){=0A= for (var style in Element.Styles) Element.Styles[style].push(style + = direction);=0A= });=0A= =0A= Element.borderShort =3D ['borderWidth', 'borderStyle', 'borderColor'];=0A= =0A= Element.getMany =3D function(el, method, keys){=0A= var result =3D {};=0A= $each(keys, function(key){=0A= result[key] =3D el[method](key);=0A= });=0A= return result;=0A= };=0A= =0A= Element.setMany =3D function(el, method, pairs){=0A= for (var key in pairs) el[method](key, pairs[key]);=0A= return el;=0A= };=0A= =0A= Element.Properties =3D new Abstract({=0A= 'class': 'className', 'for': 'htmlFor', 'colspan': 'colSpan', = 'rowspan': 'rowSpan',=0A= 'accesskey': 'accessKey', 'tabindex': 'tabIndex', 'maxlength': = 'maxLength',=0A= 'readonly': 'readOnly', 'frameborder': 'frameBorder', 'value': 'value',=0A= 'disabled': 'disabled', 'checked': 'checked', 'multiple': 'multiple', = 'selected': 'selected'=0A= });=0A= Element.PropertiesIFlag =3D {=0A= 'href': 2, 'src': 2=0A= };=0A= =0A= Element.Methods =3D {=0A= Listeners: {=0A= addListener: function(type, fn){=0A= if (this.addEventListener) this.addEventListener(type, fn, false);=0A= else this.attachEvent('on' + type, fn);=0A= return this;=0A= },=0A= =0A= removeListener: function(type, fn){=0A= if (this.removeEventListener) this.removeEventListener(type, fn, = false);=0A= else this.detachEvent('on' + type, fn);=0A= return this;=0A= }=0A= }=0A= };=0A= =0A= window.extend(Element.Methods.Listeners);=0A= document.extend(Element.Methods.Listeners);=0A= Element.extend(Element.Methods.Listeners);=0A= =0A= var Garbage =3D {=0A= =0A= elements: [],=0A= =0A= collect: function(el){=0A= if (!el.$tmp){=0A= Garbage.elements.push(el);=0A= el.$tmp =3D {'opacity': 1};=0A= }=0A= return el;=0A= },=0A= =0A= trash: function(elements){=0A= for (var i =3D 0, j =3D elements.length, el; i < j; i++){=0A= if (!(el =3D elements[i]) || !el.$tmp) continue;=0A= if (el.$events) el.fireEvent('trash').removeEvents();=0A= for (var p in el.$tmp) el.$tmp[p] =3D null;=0A= for (var d in Element.prototype) el[d] =3D null;=0A= Garbage.elements[Garbage.elements.indexOf(el)] =3D null;=0A= el.htmlElement =3D el.$tmp =3D el =3D null;=0A= }=0A= Garbage.elements.remove(null);=0A= },=0A= =0A= empty: function(){=0A= Garbage.collect(window);=0A= Garbage.collect(document);=0A= Garbage.trash(Garbage.elements);=0A= }=0A= =0A= };=0A= =0A= window.addListener('beforeunload', function(){=0A= window.addListener('unload', Garbage.empty);=0A= if (window.ie) window.addListener('unload', CollectGarbage);=0A= });=0A= =0A= /*=0A= Script: Element.Event.js=0A= Contains the Event Class, Element methods to deal with Element events, = custom Events, and the Function prototype bindWithEvent.=0A= =0A= License:=0A= MIT-style license.=0A= */=0A= =0A= /*=0A= Class: Event=0A= Cross browser methods to manage events.=0A= =0A= Arguments:=0A= event - the event=0A= =0A= Properties:=0A= shift - true if the user pressed the shift=0A= control - true if the user pressed the control=0A= alt - true if the user pressed the alt=0A= meta - true if the user pressed the meta key=0A= wheel - the amount of third button scrolling=0A= code - the keycode of the key pressed=0A= page.x - the x position of the mouse, relative to the full window=0A= page.y - the y position of the mouse, relative to the full window=0A= client.x - the x position of the mouse, relative to the viewport=0A= client.y - the y position of the mouse, relative to the viewport=0A= key - the key pressed as a lowercase string. key also returns 'enter', = 'up', 'down', 'left', 'right', 'space', 'backspace', 'delete', 'esc'. = Handy for these special keys.=0A= target - the event target=0A= relatedTarget - the event related target=0A= =0A= Example:=0A= (start code)=0A= $('myLink').onkeydown =3D function(event){=0A= var event =3D new Event(event);=0A= //event is now the Event class.=0A= alert(event.key); //returns the lowercase letter pressed=0A= alert(event.shift); //returns true if the key pressed is shift=0A= if (event.key =3D=3D 's' && event.control) alert('document saved');=0A= };=0A= (end)=0A= */=0A= =0A= var Event =3D new Class({=0A= =0A= initialize: function(event){=0A= if (event && event.$extended) return event;=0A= this.$extended =3D true;=0A= event =3D event || window.event;=0A= this.event =3D event;=0A= this.type =3D event.type;=0A= this.target =3D event.target || event.srcElement;=0A= if (this.target.nodeType =3D=3D 3) this.target =3D = this.target.parentNode;=0A= this.shift =3D event.shiftKey;=0A= this.control =3D event.ctrlKey;=0A= this.alt =3D event.altKey;=0A= this.meta =3D event.metaKey;=0A= if (['DOMMouseScroll', 'mousewheel'].contains(this.type)){=0A= this.wheel =3D (event.wheelDelta) ? event.wheelDelta / 120 : = -(event.detail || 0) / 3;=0A= } else if (this.type.contains('key')){=0A= this.code =3D event.which || event.keyCode;=0A= for (var name in Event.keys){=0A= if (Event.keys[name] =3D=3D this.code){=0A= this.key =3D name;=0A= break;=0A= }=0A= }=0A= if (this.type =3D=3D 'keydown'){=0A= var fKey =3D this.code - 111;=0A= if (fKey > 0 && fKey < 13) this.key =3D 'f' + fKey;=0A= }=0A= this.key =3D this.key || String.fromCharCode(this.code).toLowerCase();=0A= } else if (this.type.test(/(click|mouse|menu)/)){=0A= this.page =3D {=0A= 'x': event.pageX || event.clientX + = document.documentElement.scrollLeft,=0A= 'y': event.pageY || event.clientY + = document.documentElement.scrollTop=0A= };=0A= this.client =3D {=0A= 'x': event.pageX ? event.pageX - window.pageXOffset : event.clientX,=0A= 'y': event.pageY ? event.pageY - window.pageYOffset : event.clientY=0A= };=0A= this.rightClick =3D (event.which =3D=3D 3) || (event.button =3D=3D 2);=0A= switch(this.type){=0A= case 'mouseover': this.relatedTarget =3D event.relatedTarget || = event.fromElement; break;=0A= case 'mouseout': this.relatedTarget =3D event.relatedTarget || = event.toElement;=0A= }=0A= this.fixRelatedTarget();=0A= }=0A= return this;=0A= },=0A= =0A= /*=0A= Property: stop=0A= cross browser method to stop an event=0A= */=0A= =0A= stop: function(){=0A= return this.stopPropagation().preventDefault();=0A= },=0A= =0A= /*=0A= Property: stopPropagation=0A= cross browser method to stop the propagation of an event=0A= */=0A= =0A= stopPropagation: function(){=0A= if (this.event.stopPropagation) this.event.stopPropagation();=0A= else this.event.cancelBubble =3D true;=0A= return this;=0A= },=0A= =0A= /*=0A= Property: preventDefault=0A= cross browser method to prevent the default action of the event=0A= */=0A= =0A= preventDefault: function(){=0A= if (this.event.preventDefault) this.event.preventDefault();=0A= else this.event.returnValue =3D false;=0A= return this;=0A= }=0A= =0A= });=0A= =0A= Event.fix =3D {=0A= =0A= relatedTarget: function(){=0A= if (this.relatedTarget && this.relatedTarget.nodeType =3D=3D 3) = this.relatedTarget =3D this.relatedTarget.parentNode;=0A= },=0A= =0A= relatedTargetGecko: function(){=0A= try {Event.fix.relatedTarget.call(this);} catch(e){this.relatedTarget = =3D this.target;}=0A= }=0A= =0A= };=0A= =0A= Event.prototype.fixRelatedTarget =3D (window.gecko) ? = Event.fix.relatedTargetGecko : Event.fix.relatedTarget;=0A= =0A= /*=0A= Property: keys=0A= you can add additional Event keys codes this way:=0A= =0A= Example:=0A= (start code)=0A= Event.keys.whatever =3D 80;=0A= $(myelement).addEvent(keydown, function(event){=0A= event =3D new Event(event);=0A= if (event.key =3D=3D 'whatever') console.log(whatever key clicked).=0A= });=0A= (end)=0A= */=0A= =0A= Event.keys =3D new Abstract({=0A= 'enter': 13,=0A= 'up': 38,=0A= 'down': 40,=0A= 'left': 37,=0A= 'right': 39,=0A= 'esc': 27,=0A= 'space': 32,=0A= 'backspace': 8,=0A= 'tab': 9,=0A= 'delete': 46=0A= });=0A= =0A= /*=0A= Class: Element=0A= Custom class to allow all of its methods to be used with any DOM = element via the dollar function <$>.=0A= */=0A= =0A= Element.Methods.Events =3D {=0A= =0A= /*=0A= Property: addEvent=0A= Attaches an event listener to a DOM element.=0A= =0A= Arguments:=0A= type - the event to monitor ('click', 'load', etc) without the prefix = 'on'.=0A= fn - the function to execute=0A= =0A= Example:=0A= >$('myElement').addEvent('click', function(){alert('clicked!')});=0A= */=0A= =0A= addEvent: function(type, fn){=0A= this.$events =3D this.$events || {};=0A= this.$events[type] =3D this.$events[type] || {'keys': [], 'values': = []};=0A= if (this.$events[type].keys.contains(fn)) return this;=0A= this.$events[type].keys.push(fn);=0A= var realType =3D type;=0A= var custom =3D Element.Events[type];=0A= if (custom){=0A= if (custom.add) custom.add.call(this, fn);=0A= if (custom.map) fn =3D custom.map;=0A= if (custom.type) realType =3D custom.type;=0A= }=0A= if (!this.addEventListener) fn =3D fn.create({'bind': this, 'event': = true});=0A= this.$events[type].values.push(fn);=0A= return (Element.NativeEvents.contains(realType)) ? = this.addListener(realType, fn) : this;=0A= },=0A= =0A= /*=0A= Property: removeEvent=0A= Works as Element.addEvent, but instead removes the previously added = event listener.=0A= */=0A= =0A= removeEvent: function(type, fn){=0A= if (!this.$events || !this.$events[type]) return this;=0A= var pos =3D this.$events[type].keys.indexOf(fn);=0A= if (pos =3D=3D -1) return this;=0A= var key =3D this.$events[type].keys.splice(pos,1)[0];=0A= var value =3D this.$events[type].values.splice(pos,1)[0];=0A= var custom =3D Element.Events[type];=0A= if (custom){=0A= if (custom.remove) custom.remove.call(this, fn);=0A= if (custom.type) type =3D custom.type;=0A= }=0A= return (Element.NativeEvents.contains(type)) ? = this.removeListener(type, value) : this;=0A= },=0A= =0A= /*=0A= Property: addEvents=0A= As , but accepts an object and add multiple events at once.=0A= */=0A= =0A= addEvents: function(source){=0A= return Element.setMany(this, 'addEvent', source);=0A= },=0A= =0A= /*=0A= Property: removeEvents=0A= removes all events of a certain type from an element. if no argument = is passed in, removes all events.=0A= =0A= Arguments:=0A= type - string; the event name (e.g. 'click')=0A= */=0A= =0A= removeEvents: function(type){=0A= if (!this.$events) return this;=0A= if (!type){=0A= for (var evType in this.$events) this.removeEvents(evType);=0A= this.$events =3D null;=0A= } else if (this.$events[type]){=0A= this.$events[type].keys.each(function(fn){=0A= this.removeEvent(type, fn);=0A= }, this);=0A= this.$events[type] =3D null;=0A= }=0A= return this;=0A= },=0A= =0A= /*=0A= Property: fireEvent=0A= executes all events of the specified type present in the element.=0A= =0A= Arguments:=0A= type - string; the event name (e.g. 'click')=0A= args - array or single object; arguments to pass to the function; if = more than one argument, must be an array=0A= delay - (integer) delay (in ms) to wait to execute the event=0A= */=0A= =0A= fireEvent: function(type, args, delay){=0A= if (this.$events && this.$events[type]){=0A= this.$events[type].keys.each(function(fn){=0A= fn.create({'bind': this, 'delay': delay, 'arguments': args})();=0A= }, this);=0A= }=0A= return this;=0A= },=0A= =0A= /*=0A= Property: cloneEvents=0A= Clones all events from an element to this element.=0A= =0A= Arguments:=0A= from - element, copy all events from this element=0A= type - optional, copies only events of this type=0A= */=0A= =0A= cloneEvents: function(from, type){=0A= if (!from.$events) return this;=0A= if (!type){=0A= for (var evType in from.$events) this.cloneEvents(from, evType);=0A= } else if (from.$events[type]){=0A= from.$events[type].keys.each(function(fn){=0A= this.addEvent(type, fn);=0A= }, this);=0A= }=0A= return this;=0A= }=0A= =0A= };=0A= =0A= window.extend(Element.Methods.Events);=0A= document.extend(Element.Methods.Events);=0A= Element.extend(Element.Methods.Events);=0A= =0A= /* Section: Custom Events */=0A= =0A= Element.Events =3D new Abstract({=0A= =0A= /*=0A= Event: mouseenter=0A= In addition to the standard javascript events (load, mouseover, = mouseout, click, etc.) contains two custom events=0A= this event fires when the mouse enters the area of the dom element; = will not be fired again if the mouse crosses over children of the = element (unlike mouseover)=0A= =0A= =0A= Example:=0A= >$(myElement).addEvent('mouseenter', myFunction);=0A= */=0A= =0A= 'mouseenter': {=0A= type: 'mouseover',=0A= map: function(event){=0A= event =3D new Event(event);=0A= if (event.relatedTarget !=3D this && = !this.hasChild(event.relatedTarget)) this.fireEvent('mouseenter', event);=0A= }=0A= },=0A= =0A= /*=0A= Event: mouseleave=0A= this event fires when the mouse exits the area of the dom element; = will not be fired again if the mouse crosses over children of the = element (unlike mouseout)=0A= =0A= =0A= Example:=0A= >$(myElement).addEvent('mouseleave', myFunction);=0A= */=0A= =0A= 'mouseleave': {=0A= type: 'mouseout',=0A= map: function(event){=0A= event =3D new Event(event);=0A= if (event.relatedTarget !=3D this && = !this.hasChild(event.relatedTarget)) this.fireEvent('mouseleave', event);=0A= }=0A= },=0A= =0A= 'mousewheel': {=0A= type: (window.gecko) ? 'DOMMouseScroll' : 'mousewheel'=0A= }=0A= =0A= });=0A= =0A= Element.NativeEvents =3D [=0A= 'click', 'dblclick', 'mouseup', 'mousedown', //mouse buttons=0A= 'mousewheel', 'DOMMouseScroll', //mouse wheel=0A= 'mouseover', 'mouseout', 'mousemove', //mouse movement=0A= 'keydown', 'keypress', 'keyup', //keys=0A= 'load', 'unload', 'beforeunload', 'resize', 'move', //window=0A= 'focus', 'blur', 'change', 'submit', 'reset', 'select', //forms elements=0A= 'error', 'abort', 'contextmenu', 'scroll' //misc=0A= ];=0A= =0A= /*=0A= Class: Function=0A= A collection of The Function Object prototype methods.=0A= */=0A= =0A= Function.extend({=0A= =0A= /*=0A= Property: bindWithEvent=0A= automatically passes MooTools Event Class.=0A= =0A= Arguments:=0A= bind - optional, the object that the "this" of the function will refer = to.=0A= args - optional, an argument to pass to the function; if more than one = argument, it must be an array of arguments.=0A= =0A= Returns:=0A= a function with the parameter bind as its "this" and as a pre-passed = argument event or window.event, depending on the browser.=0A= =0A= Example:=0A= >function myFunction(event){=0A= > alert(event.client.x) //returns the coordinates of the mouse..=0A= >};=0A= >myElement.addEvent('click', myFunction.bindWithEvent(myElement));=0A= */=0A= =0A= bindWithEvent: function(bind, args){=0A= return this.create({'bind': bind, 'arguments': args, 'event': Event});=0A= }=0A= =0A= });=0A= =0A= =0A= /*=0A= Script: Element.Filters.js=0A= add Filters capability to .=0A= =0A= License:=0A= MIT-style license.=0A= */=0A= =0A= /*=0A= Class: Elements=0A= A collection of methods to be used with <$$> elements collections.=0A= */=0A= =0A= Elements.extend({=0A= =0A= /*=0A= Property: filterByTag=0A= Filters the collection by a specified tag name.=0A= Returns a new Elements collection, while the original remains = untouched.=0A= */=0A= =0A= filterByTag: function(tag){=0A= return new Elements(this.filter(function(el){=0A= return (Element.getTag(el) =3D=3D tag);=0A= }));=0A= },=0A= =0A= /*=0A= Property: filterByClass=0A= Filters the collection by a specified class name.=0A= Returns a new Elements collection, while the original remains = untouched.=0A= */=0A= =0A= filterByClass: function(className, nocash){=0A= var elements =3D this.filter(function(el){=0A= return (el.className && el.className.contains(className, ' '));=0A= });=0A= return (nocash) ? elements : new Elements(elements);=0A= },=0A= =0A= /*=0A= Property: filterById=0A= Filters the collection by a specified ID.=0A= Returns a new Elements collection, while the original remains = untouched.=0A= */=0A= =0A= filterById: function(id, nocash){=0A= var elements =3D this.filter(function(el){=0A= return (el.id =3D=3D id);=0A= });=0A= return (nocash) ? elements : new Elements(elements);=0A= },=0A= =0A= /*=0A= Property: filterByAttribute=0A= Filters the collection by a specified attribute.=0A= Returns a new Elements collection, while the original remains = untouched.=0A= =0A= Arguments:=0A= name - the attribute name.=0A= operator - optional, the attribute operator.=0A= value - optional, the attribute value, only valid if the operator is = specified.=0A= */=0A= =0A= filterByAttribute: function(name, operator, value, nocash){=0A= var elements =3D this.filter(function(el){=0A= var current =3D Element.getProperty(el, name);=0A= if (!current) return false;=0A= if (!operator) return true;=0A= switch(operator){=0A= case '=3D': return (current =3D=3D value);=0A= case '*=3D': return (current.contains(value));=0A= case '^=3D': return (current.substr(0, value.length) =3D=3D value);=0A= case '$=3D': return (current.substr(current.length - value.length) = =3D=3D value);=0A= case '!=3D': return (current !=3D value);=0A= case '~=3D': return current.contains(value, ' ');=0A= }=0A= return false;=0A= });=0A= return (nocash) ? elements : new Elements(elements);=0A= }=0A= =0A= });=0A= =0A= /*=0A= Script: Element.Selectors.js=0A= Css Query related functions and extensions=0A= =0A= License:=0A= MIT-style license.=0A= */=0A= =0A= /* Section: Utility Functions */=0A= =0A= /*=0A= Function: $E=0A= Selects a single (i.e. the first found) Element based on the selector = passed in and an optional filter element.=0A= Returns as .=0A= =0A= Arguments:=0A= selector - string; the css selector to match=0A= filter - optional; a DOM element to limit the scope of the selector = match; defaults to document.=0A= =0A= Example:=0A= >$E('a', 'myElement') //find the first anchor tag inside the DOM = element with id 'myElement'=0A= =0A= Returns:=0A= a DOM element - the first element that matches the selector=0A= */=0A= =0A= function $E(selector, filter){=0A= return ($(filter) || document).getElement(selector);=0A= };=0A= =0A= /*=0A= Function: $ES=0A= Returns a collection of Elements that match the selector passed in = limited to the scope of the optional filter.=0A= See Also: for an alternate syntax.=0A= Returns as .=0A= =0A= Returns:=0A= an array of dom elements that match the selector within the filter=0A= =0A= Arguments:=0A= selector - string; css selector to match=0A= filter - optional; a DOM element to limit the scope of the selector = match; defaults to document.=0A= =0A= Examples:=0A= >$ES("a") //gets all the anchor tags; synonymous with $$("a")=0A= >$ES('a','myElement') //get all the anchor tags within $('myElement')=0A= */=0A= =0A= function $ES(selector, filter){=0A= return ($(filter) || document).getElementsBySelector(selector);=0A= };=0A= =0A= $$.shared =3D {=0A= =0A= 'regexp': = /^(\w*|\*)(?:#([\w-]+)|\.([\w-]+))?(?:\[(\w+)(?:([!*^$]?=3D)["']?([^"'\]]= *)["']?)?])?$/,=0A= =0A= 'xpath': {=0A= =0A= getParam: function(items, context, param, i){=0A= var temp =3D [context.namespaceURI ? 'xhtml:' : '', param[1]];=0A= if (param[2]) temp.push('[@id=3D"', param[2], '"]');=0A= if (param[3]) temp.push('[contains(concat(" ", @class, " "), " ', = param[3], ' ")]');=0A= if (param[4]){=0A= if (param[5] && param[6]){=0A= switch(param[5]){=0A= case '*=3D': temp.push('[contains(@', param[4], ', "', param[6], = '")]'); break;=0A= case '^=3D': temp.push('[starts-with(@', param[4], ', "', = param[6], '")]'); break;=0A= case '$=3D': temp.push('[substring(@', param[4], ', = string-length(@', param[4], ') - ', param[6].length, ' + 1) =3D "', = param[6], '"]'); break;=0A= case '=3D': temp.push('[@', param[4], '=3D"', param[6], '"]'); = break;=0A= case '!=3D': temp.push('[@', param[4], '!=3D"', param[6], '"]');=0A= }=0A= } else {=0A= temp.push('[@', param[4], ']');=0A= }=0A= }=0A= items.push(temp.join(''));=0A= return items;=0A= },=0A= =0A= getItems: function(items, context, nocash){=0A= var elements =3D [];=0A= var xpath =3D document.evaluate('.//' + items.join('//'), context, = $$.shared.resolver, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);=0A= for (var i =3D 0, j =3D xpath.snapshotLength; i < j; i++) = elements.push(xpath.snapshotItem(i));=0A= return (nocash) ? elements : new Elements(elements.map($));=0A= }=0A= =0A= },=0A= =0A= 'normal': {=0A= =0A= getParam: function(items, context, param, i){=0A= if (i =3D=3D 0){=0A= if (param[2]){=0A= var el =3D context.getElementById(param[2]);=0A= if (!el || ((param[1] !=3D '*') && (Element.getTag(el) !=3D = param[1]))) return false;=0A= items =3D [el];=0A= } else {=0A= items =3D $A(context.getElementsByTagName(param[1]));=0A= }=0A= } else {=0A= items =3D $$.shared.getElementsByTagName(items, param[1]);=0A= if (param[2]) items =3D Elements.filterById(items, param[2], true);=0A= }=0A= if (param[3]) items =3D Elements.filterByClass(items, param[3], true);=0A= if (param[4]) items =3D Elements.filterByAttribute(items, param[4], = param[5], param[6], true);=0A= return items;=0A= },=0A= =0A= getItems: function(items, context, nocash){=0A= return (nocash) ? items : $$.unique(items);=0A= }=0A= =0A= },=0A= =0A= resolver: function(prefix){=0A= return (prefix =3D=3D 'xhtml') ? 'http://www.w3.org/1999/xhtml' : = false;=0A= },=0A= =0A= getElementsByTagName: function(context, tagName){=0A= var found =3D [];=0A= for (var i =3D 0, j =3D context.length; i < j; i++) = found.extend(context[i].getElementsByTagName(tagName));=0A= return found;=0A= }=0A= =0A= };=0A= =0A= $$.shared.method =3D (window.xpath) ? 'xpath' : 'normal';=0A= =0A= /*=0A= Class: Element=0A= Custom class to allow all of its methods to be used with any DOM = element via the dollar function <$>.=0A= */=0A= =0A= Element.Methods.Dom =3D {=0A= =0A= /*=0A= Property: getElements=0A= Gets all the elements within an element that match the given (single) = selector.=0A= Returns as .=0A= =0A= Arguments:=0A= selector - string; the css selector to match=0A= =0A= Examples:=0A= >$('myElement').getElements('a'); // get all anchors within myElement=0A= >$('myElement').getElements('input[name=3Ddialog]') //get all input = tags with name 'dialog'=0A= >$('myElement').getElements('input[name$=3Dlog]') //get all input tags = with names ending with 'log'=0A= =0A= Notes:=0A= Supports these operators in attribute selectors:=0A= =0A= - =3D : is equal to=0A= - ^=3D : starts-with=0A= - $=3D : ends-with=0A= - !=3D : is not equal to=0A= =0A= Xpath is used automatically for compliant browsers.=0A= */=0A= =0A= getElements: function(selector, nocash){=0A= var items =3D [];=0A= selector =3D selector.trim().split(' ');=0A= for (var i =3D 0, j =3D selector.length; i < j; i++){=0A= var sel =3D selector[i];=0A= var param =3D sel.match($$.shared.regexp);=0A= if (!param) break;=0A= param[1] =3D param[1] || '*';=0A= var temp =3D $$.shared[$$.shared.method].getParam(items, this, param, = i);=0A= if (!temp) break;=0A= items =3D temp;=0A= }=0A= return $$.shared[$$.shared.method].getItems(items, this, nocash);=0A= },=0A= =0A= /*=0A= Property: getElement=0A= Same as , but returns only the first. Alternate = syntax for <$E>, where filter is the Element.=0A= Returns as .=0A= =0A= Arguments:=0A= selector - string; css selector=0A= */=0A= =0A= getElement: function(selector){=0A= return $(this.getElements(selector, true)[0] || false);=0A= },=0A= =0A= /*=0A= Property: getElementsBySelector=0A= Same as , but allows for comma separated = selectors, as in css. Alternate syntax for <$$>, where filter is the = Element.=0A= Returns as .=0A= =0A= Arguments:=0A= selector - string; css selector=0A= */=0A= =0A= getElementsBySelector: function(selector, nocash){=0A= var elements =3D [];=0A= selector =3D selector.split(',');=0A= for (var i =3D 0, j =3D selector.length; i < j; i++) elements =3D = elements.concat(this.getElements(selector[i], true));=0A= return (nocash) ? elements : $$.unique(elements);=0A= }=0A= =0A= };=0A= =0A= Element.extend({=0A= =0A= /*=0A= Property: getElementById=0A= Targets an element with the specified id found inside the Element. = Does not overwrite document.getElementById.=0A= =0A= Arguments:=0A= id - string; the id of the element to find.=0A= */=0A= =0A= getElementById: function(id){=0A= var el =3D document.getElementById(id);=0A= if (!el) return false;=0A= for (var parent =3D el.parentNode; parent !=3D this; parent =3D = parent.parentNode){=0A= if (!parent) return false;=0A= }=0A= return el;=0A= }/*compatibility*/,=0A= =0A= getElementsByClassName: function(className){ =0A= return this.getElements('.' + className); =0A= }=0A= =0A= /*end compatibility*/=0A= =0A= });=0A= =0A= document.extend(Element.Methods.Dom);=0A= Element.extend(Element.Methods.Dom);=0A= =0A= /*=0A= Script: Element.Form.js=0A= Contains Element prototypes to deal with Forms and their elements.=0A= =0A= License:=0A= MIT-style license.=0A= */=0A= =0A= /*=0A= Class: Element=0A= Custom class to allow all of its methods to be used with any DOM = element via the dollar function <$>.=0A= */=0A= =0A= Element.extend({=0A= =0A= /*=0A= Property: getValue=0A= Returns the value of the Element, if its tag is textarea, select or = input. getValue called on a multiple select will return an array.=0A= */=0A= =0A= getValue: function(){=0A= switch(this.getTag()){=0A= case 'select':=0A= var values =3D [];=0A= $each(this.options, function(option){=0A= if (option.selected) values.push($pick(option.value, option.text));=0A= });=0A= return (this.multiple) ? values : values[0];=0A= case 'input': if (!(this.checked && ['checkbox', = 'radio'].contains(this.type)) && !['hidden', 'text', = 'password'].contains(this.type)) break;=0A= case 'textarea': return this.value;=0A= }=0A= return false;=0A= },=0A= =0A= getFormElements: function(){=0A= return $$(this.getElementsByTagName('input'), = this.getElementsByTagName('select'), = this.getElementsByTagName('textarea'));=0A= },=0A= =0A= /*=0A= Property: toQueryString=0A= Reads the children inputs of the Element and generates a query string, = based on their values. Used internally in =0A= =0A= Example:=0A= (start code)=0A=
=0A= =0A= =0A=
=0A= =0A= =0A= (end)=0A= =0A= Returns:=0A= email=3Dbob@bob.com&zipCode=3D90210=0A= */=0A= =0A= toQueryString: function(){=0A= var queryString =3D [];=0A= this.getFormElements().each(function(el){=0A= var name =3D el.name;=0A= var value =3D el.getValue();=0A= if (value =3D=3D=3D false || !name || el.disabled) return;=0A= var qs =3D function(val){=0A= queryString.push(name + '=3D' + encodeURIComponent(val));=0A= };=0A= if ($type(value) =3D=3D 'array') value.each(qs);=0A= else qs(value);=0A= });=0A= return queryString.join('&');=0A= }=0A= =0A= });=0A= =0A= /*=0A= Script: Element.Dimensions.js=0A= Contains Element prototypes to deal with Element size and position in = space.=0A= =0A= Note:=0A= The functions in this script require n XHTML doctype.=0A= =0A= License:=0A= MIT-style license.=0A= */=0A= =0A= /*=0A= Class: Element=0A= Custom class to allow all of its methods to be used with any DOM = element via the dollar function <$>.=0A= */=0A= =0A= Element.extend({=0A= =0A= /*=0A= Property: scrollTo=0A= Scrolls the element to the specified coordinated (if the element has = an overflow)=0A= =0A= Arguments:=0A= x - the x coordinate=0A= y - the y coordinate=0A= =0A= Example:=0A= >$('myElement').scrollTo(0, 100)=0A= */=0A= =0A= scrollTo: function(x, y){=0A= this.scrollLeft =3D x;=0A= this.scrollTop =3D y;=0A= },=0A= =0A= /*=0A= Property: getSize=0A= Return an Object representing the size/scroll values of the element.=0A= =0A= Example:=0A= (start code)=0A= $('myElement').getSize();=0A= (end)=0A= =0A= Returns:=0A= (start code)=0A= {=0A= 'scroll': {'x': 100, 'y': 100},=0A= 'size': {'x': 200, 'y': 400},=0A= 'scrollSize': {'x': 300, 'y': 500}=0A= }=0A= (end)=0A= */=0A= =0A= getSize: function(){=0A= return {=0A= 'scroll': {'x': this.scrollLeft, 'y': this.scrollTop},=0A= 'size': {'x': this.offsetWidth, 'y': this.offsetHeight},=0A= 'scrollSize': {'x': this.scrollWidth, 'y': this.scrollHeight}=0A= };=0A= },=0A= =0A= /*=0A= Property: getPosition=0A= Returns the real offsets of the element.=0A= =0A= Arguments:=0A= overflown - optional, an array of nested scrolling containers for = scroll offset calculation, use this if your element is inside any = element containing scrollbars=0A= =0A= Example:=0A= >$('element').getPosition();=0A= =0A= Returns:=0A= >{x: 100, y:500};=0A= */=0A= =0A= getPosition: function(overflown){=0A= overflown =3D overflown || [];=0A= var el =3D this, left =3D 0, top =3D 0;=0A= do {=0A= left +=3D el.offsetLeft || 0;=0A= top +=3D el.offsetTop || 0;=0A= el =3D el.offsetParent;=0A= } while (el);=0A= overflown.each(function(element){=0A= left -=3D element.scrollLeft || 0;=0A= top -=3D element.scrollTop || 0;=0A= });=0A= return {'x': left, 'y': top};=0A= },=0A= =0A= /*=0A= Property: getTop=0A= Returns the distance from the top of the window to the Element.=0A= =0A= Arguments:=0A= overflown - optional, an array of nested scrolling containers, see = Element::getPosition=0A= */=0A= =0A= getTop: function(overflown){=0A= return this.getPosition(overflown).y;=0A= },=0A= =0A= /*=0A= Property: getLeft=0A= Returns the distance from the left of the window to the Element.=0A= =0A= Arguments:=0A= overflown - optional, an array of nested scrolling containers, see = Element::getPosition=0A= */=0A= =0A= getLeft: function(overflown){=0A= return this.getPosition(overflown).x;=0A= },=0A= =0A= /*=0A= Property: getCoordinates=0A= Returns an object with width, height, left, right, top, and bottom, = representing the values of the Element=0A= =0A= Arguments:=0A= overflown - optional, an array of nested scrolling containers, see = Element::getPosition=0A= =0A= Example:=0A= (start code)=0A= var myValues =3D $('myElement').getCoordinates();=0A= (end)=0A= =0A= Returns:=0A= (start code)=0A= {=0A= width: 200,=0A= height: 300,=0A= left: 100,=0A= top: 50,=0A= right: 300,=0A= bottom: 350=0A= }=0A= (end)=0A= */=0A= =0A= getCoordinates: function(overflown){=0A= var position =3D this.getPosition(overflown);=0A= var obj =3D {=0A= 'width': this.offsetWidth,=0A= 'height': this.offsetHeight,=0A= 'left': position.x,=0A= 'top': position.y=0A= };=0A= obj.right =3D obj.left + obj.width;=0A= obj.bottom =3D obj.top + obj.height;=0A= return obj;=0A= }=0A= =0A= });=0A= =0A= /*=0A= Script: Window.DomReady.js=0A= Contains the custom event domready, for window.=0A= =0A= License:=0A= MIT-style license.=0A= */=0A= =0A= /* Section: Custom Events */=0A= =0A= /*=0A= Event: domready=0A= executes a function when the dom tree is loaded, without waiting for = images. Only works when called from window.=0A= =0A= Credits:=0A= (c) Dean Edwards/Matthias Miller/John Resig, remastered for MooTools.=0A= =0A= Arguments:=0A= fn - the function to execute when the DOM is ready=0A= =0A= Example:=0A= > window.addEvent('domready', function(){=0A= > alert('the dom is ready');=0A= > });=0A= */=0A= =0A= Element.Events.domready =3D {=0A= =0A= add: function(fn){=0A= if (window.loaded){=0A= fn.call(this);=0A= return;=0A= }=0A= var domReady =3D function(){=0A= if (window.loaded) return;=0A= window.loaded =3D true;=0A= window.timer =3D $clear(window.timer);=0A= this.fireEvent('domready');=0A= }.bind(this);=0A= if (document.readyState && window.webkit){=0A= window.timer =3D function(){=0A= if (['loaded','complete'].contains(document.readyState)) domReady();=0A= }.periodical(50);=0A= } else if (document.readyState && window.ie){=0A= if (!$('ie_ready')){=0A= var src =3D (window.location.protocol =3D=3D 'https:') ? '://0' : = 'javascript:void(0)';=0A= document.write('")}}function = prefetchLight(_e9){for(var i=3D0;i<_e9.length;i++){new = Image().src=3DgetSource(_e9[i])}}function = clearPrefetch(){if(!ua.ieWin||!_4e){return}try{var = _eb=3Ddocument.getElementsByTagName("script");for(var = i=3D_eb.length-1;i>=3D0;i--){var = _ed=3D_eb[i];if(_ed.type=3D=3D"sifr/prefetch"){_ed.parentNode.removeChild= (_ed)}}}catch(e){}}function getRatio(_ee,_ef){for(var = i=3D0;i<_ef.length;i+=3D2){if(_ee<=3D_ef[i]){return _ef[i+1]}}return = _ef[_ef.length-1]||1}function getFilters(obj){var _f2=3D[];for(var _f3 = in obj){if(obj[_f3]=3D=3DObject.prototype[_f3]){continue}var = _f4=3Dobj[_f3];_f3=3D[_f3.replace(/filter/i,"")+"Filter"];for(var _f5 in = _f4){if(_f4[_f5]=3D=3DObject.prototype[_f5]){continue}_f3.push(_f5+":"+_a= 2.escape(_a2.toJson(_a2.toHexString(_f4[_f5]))))}_f2.push(_f3.join(","))}= return _a2.escape(_f2.join(";"))}function calculate(_f6){var = _f7,_f8;if(!ua.ie){_f7=3Ddom.getStyleAsInt(_f6,"lineHeight");_f8=3DMath.f= loor(dom.getStyleAsInt(_f6,"height")/_f7)}else{if(ua.ie){var = _f9=3Ddom.getComputedStyle(_f6,"fontSize");if(_f9.indexOf("px")>0){_f7=3D= parseInt(_f9)}else{var = _fa=3D_f6.innerHTML;_f6.style.visibility=3D"visible";_f6.style.overflow=3D= "visible";_f6.style.position=3D"static";_f6.style.zoom=3D"normal";_f6.sty= le.writingMode=3D"lr-tb";_f6.style.width=3D_f6.style.height=3D"auto";_f6.= style.maxWidth=3D_f6.style.maxHeight=3D_f6.style.styleFloat=3D"none";var = _fb=3D_f6;var = _fc=3D_f6.currentStyle.hasLayout;if(_fc){_f6.innerHTML=3D"
X
X
X
";_fb=3D_f6.firstChild}else{_f6.innerHTML=3D"X
X
X"}var = _fd=3D_fb.getClientRects();_f7=3D_fd[1].bottom-_fd[1].top;_f7=3DMath.ceil= (_f7*0.8);if(_fc){_f6.innerHTML=3D"
"+_fa+"
";_fb=3D_f6.firstChild}else{_f6.innerHTM= L=3D_fa}_fd=3D_fb.getClientRects();_f8=3D_fd.length;if(_fc){_f6.innerHTML= =3D_fa}_f6.style.visibility=3D_f6.style.width=3D_f6.style.height=3D_f6.st= yle.maxWidth=3D_f6.style.maxHeight=3D_f6.style.overflow=3D_f6.style.style= Float=3D_f6.style.position=3D_f6.style.zoom=3D_f6.style.writingMode=3D""}= }}return = {lineHeight:_f7,lines:_f8}}this.replace=3Dfunction(_fe,_ff){if(!ua.suppor= ted){return}if(_ff){_fe=3D_a2.copyProperties(_fe,_ff)}if(!_4f){return = _d9.kwargs.push(_fe)}if(_cf.synchronizer.isBlocked){return = _d1.kwargs.push(_fe)}if(_3b.onReplacementStart){_3b.onReplacementStart(_f= e)}var = _100=3D_fe.elements;if(!_100&&parseSelector){_100=3DparseSelector(_fe.sel= ector)}if(_100.length=3D=3D0){return}this.setFlashClass();var = src=3DgetSource(_fe.src);var css=3D_a2.convertCssArg(_fe.css);var = _103=3DgetFilters(_fe.filters);var = _104=3D(_fe.forceClear=3D=3Dnull)?_3b.forceClear:_fe.forceClear;var = _105=3D(_fe.fitExactly=3D=3Dnull)?_3b.fitExactly:_fe.fitExactly;var = _106=3D_105||(_fe.forceWidth=3D=3Dnull?_3b.forceWidth:_fe.forceWidth);var= _107=3D!!(_fe.preventWrap&&!_fe.forceSingleLine);var = _108=3DparseInt(_a2.extractFromCss(css,".sIFR-root","leading"))||0;var = _109=3D_a2.extractFromCss(css,".sIFR-root","font-size",true)||0;var = _10a=3D_a2.extractFromCss(css,".sIFR-root","background-color",true)||"#FF= FFFF";var = _10b=3D_a2.extractFromCss(css,".sIFR-root","kerning",true)||"";var = _10c=3D_fe.gridFitType||_a2.extractFromCss(css,".sIFR-root","text-align")= =3D=3D"right"?"subpixel":"pixel";var = _10d=3D_3b.forceTextTransform?_a2.extractFromCss(css,".sIFR-root","text-t= ransform",true)||"none":"none";var = _10e=3D_a2.extractFromCss(css,".sIFR-root","opacity",true)||"100";var = _10f=3D_a2.extractFromCss(css,".sIFR-root","cursor",true)||"default";var = _110=3D_fe.pixelFont||false;var _111=3D_fe.ratios||_4a;var = _112=3DparseInt(_fe.tuneHeight)||0;var = _113=3D!!_fe.onRelease||!!_fe.onRollOver||!!_fe.onRollOut;if(parseInt(_10= 9).toString()!=3D_109&&_109.indexOf("px")=3D=3D-1){_109=3D0}else{_109=3Dp= arseInt(_109)}if(parseFloat(_10e)<1){_10e=3D100*parseFloat(_10e)}var = _114=3D"";if(_105){_a2.extractFromCss(css,".sIFR-root","text-align",true)= }if(!_fe.modifyCss){_114=3D_a2.cssToString(css)}var = _115=3D_fe.wmode||"";if(!_115){if(_fe.transparent){_115=3D"transparent"}e= lse{if(_fe.opaque){_115=3D"opaque"}}}if(_115=3D=3D"transparent"){if(!ua.t= ransparencySupport){_115=3D"opaque"}else{_10a=3D"transparent"}}for(var = i=3D0;i<_100.length;i++){var = node=3D_100[i];if(dom.hasOneOfClassses([_3e,_40,_41],node)){continue}var = _118=3Ddom.getDimensions(node);var _119=3D_118.height;var = _11a=3D_118.width;var = _11b=3Ddom.getComputedStyle(node,"display");if(!_119||!_11a||_11b=3D=3Dnu= ll||_11b=3D=3D"none"){continue}if(_104&&ua.gecko){node.style.clear=3D"bot= h"}var = html=3Dnull;if(_3b.fixWrap&&ua.ie&&_11b=3D=3D"block"){html=3Dnode.innerHT= ML;node.innerHTML=3D"X"}_11a=3Ddom.getWidthFromStyle(node);if(html&&_3b.f= ixWrap&&ua.ie){node.innerHTML=3Dhtml}var _11d,_11e;if(!_109){var = _11f=3Dcalculate(node);_11d=3DMath.min(_47,Math.max(_46,_11f.lineHeight))= ;if(_110){_11d=3DMath.max(8,8*Math.round(_11d/8))}_11e=3D_11f.lines;if(is= NaN(_11e)||!isFinite(_11e)||_11e=3D=3D0){_11e=3D1}if(_11e>1&&_108){_119+=3D= Math.round((_11e-1)*_108)}}else{_11d=3D_109;_11e=3D1}_119=3DMath.round(_1= 1e*_11d);if(_104&&ua.gecko){node.style.clear=3D""}var = _120=3Ddom.create("span");_120.className=3D_41;var = _121=3Dnode.cloneNode(true);node.parentNode.appendChild(_121);for(var = j=3D0,l=3D_121.childNodes.length;j-1){_= 140=3D_140.match("(\\s|^)"+_42+"-([^\\s$]*)(\\s|$)")[2]}else{_140=3D_140.= match(/^([^\s]+)/)[1]}}if(_140!=3D""){_13e.push("class=3D\""+_140+"\"")}i= f(_13f=3D=3D"a"){var href=3D_136(node.getAttribute("href")||"");var = _142=3Dnode.getAttribute("target")||"";_13e.push("href=3D\""+href+"\"","t= arget=3D\""+_142+"\"");if(_139.length=3D=3D0){_139=3D[href,_142]}}_138.pu= sh("<"+_13f+(_13e.length>0?" ":"")+_13e.join(" = ")+">");if(node.hasChildNodes()){_137.push(i);i=3D0;_13a=3Dnode.childNode= s;continue}else{if(!/^(br|img)$/i.test(node.nodeName)){_138.push("")}}}if(_137.length>0&&!node.nextSibling){do{i= =3D_137.pop();_13a=3Dnode.parentNode.parentNode.childNodes;node=3D_13a[i]= ;if(node){_138.push("")}}while(i=3D=3D_= 13a.length-1&&_137.length>0)}i++}return = {text:_138.join("").replace(/\n|\r/g,""),primaryLink:_139}}function = CallbackInfo(id,vars,_145,_146){this.id=3Did;this.vars=3Dvars;this._event= s=3D_146;this._forceWidth=3D_145;this._firedReplacementEvent=3D!(_146.onR= eplacement!=3Dnull);this.html=3Dnull}CallbackInfo.prototype.getFlashEleme= nt=3Dfunction(){return = document.getElementById(this.id)};CallbackInfo.prototype.available=3Dfunc= tion(){var _147=3Dthis.getFlashElement();return = _147&&_147.parentNode};CallbackInfo.prototype.handle=3Dfunction(info,arg)= {if(!this.available()){return}if(/(FSCommand\:)?resize/.test(info)){var = _14a=3Dthis.getFlashElement();var = $=3Darg.split(/\:|,/);_14a.setAttribute($[0],$[1]);if($.length>2){_14a.st= yle[$[2]]=3D$[3]+"px"}if(ua.khtml){var = _14c=3D_14a.offsetHeight}if(!this._firedReplacementEvent){this._events.on= Replacement(this);this._firedReplacementEvent=3Dtrue}}else{if(/(FSCommand= \:)?resetmovie/.test(info)){this.resetMovie()}else{if(/(FSCommand\:)?blur= /.test(info)){dom.blurElement(this.getFlashElement())}else{if(/(FSCommand= \:)?event/.test(info)){if(this._events[arg]){this._events[arg](this)}}els= e{if(this.debugHandler&&/(FSCommand\:)?debug/.test(info)){this.debugHandl= er(info,arg)}}}}}};CallbackInfo.prototype.call=3Dfunction(type,_14e){if(!= this.available()){return false}var = _14f=3Dthis.getFlashElement();try{_14f.SetVariable("callbackType",type);_= 14f.SetVariable("callbackValue",_14e);_14f.SetVariable("callbackTrigger",= true)}catch(e){return false}return = true};CallbackInfo.prototype.replaceText=3Dfunction(_150,_151){var = _152=3D_a2.escape(_150);this.updateVars("content",_152);if(this.call("rep= lacetext",_152)){var = node=3Dthis.getAlternate();if(_151){while(node.firstChild){node.removeChi= ld(node.firstChild)}for(var = i=3D0;i<_151.length;i++){node.appendChild(_151[i])}}else{try{node.innerHT= ML=3D_150}catch(e){}}return true}return = false};CallbackInfo.prototype.updateVars=3Dfunction(name,_156){for(var = i=3D0;i7){deconcept.SWFObject.doPrepUnload=3Dtrue;}if(c= ){this.addParam("bgcolor",c);}var = q=3D_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpress= Install",false);this.setAttribute("doExpressInstall",false);var = _c=3D(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.s= etAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);= }};deconcept.SWFObject.prototype=3D{useExpressInstall:function(_d){this.x= iSWFPath=3D!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInsta= ll",true);},setAttribute:function(_e,_f){this.attributes[_e]=3D_f;},getAt= tribute:function(_10){return = this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=3D_12;= },getParams:function(){return = this.params;},addVariable:function(_13,_14){this.variables[_13]=3D_14;},g= etVariable:function(_15){return = this.variables[_15];},getVariables:function(){return = this.variables;},getVariablePairs:function(){var _16=3Dnew Array();var = key;var _18=3Dthis.getVariables();for(key in = _18){_16[_16.length]=3Dkey+"=3D"+_18[key];}return = _16;},getSWFHTML:function(){var = _19=3D"";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.l= ength){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplay= erType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19=3D"0){_19+=3D"flashvar= s=3D\""+_1c+"\"";}_19+=3D"/>";}else{if(this.getAttribute("doExpressInstal= l")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",t= his.xiSWFPath);}_19=3D"";_19+=3D"";var = _1d=3Dthis.getParams();for(var key in _1d){_19+=3D"";}var = _1f=3Dthis.getVariablePairs().join("&");if(_1f.length>0){_19+=3D"";}_19+=3D"";}return = _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var = _21=3Dnew = deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21= )&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.= setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",es= cape(this.getAttribute("xiRedirectUrl")));document.title=3Ddocument.title= .slice(0,47)+" - Flash Player = Installation";this.addVariable("MMdoctitle",document.title);}}if(this.ski= pDetect||this.getAttribute("doExpressInstall")||this.installedVer.version= IsValid(this.getAttribute("version"))){var n=3D(typeof = _20=3D=3D"string")?document.getElementById(_20):_20;n.innerHTML=3Dthis.ge= tSWFHTML();return = true;}else{if(this.getAttribute("redirectUrl")!=3D""){document.location.r= eplace(this.getAttribute("redirectUrl"));}}return = false;}};deconcept.SWFObjectUtil.getPlayerVersion=3Dfunction(){var = _23=3Dnew = deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeType= s.length){var x=3Dnavigator.plugins["Shockwave = Flash"];if(x&&x.description){_23=3Dnew = deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replac= e(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&nav= igator.userAgent.indexOf("Windows CE")>=3D0){var axo=3D1;var = _26=3D3;while(axo){try{_26++;axo=3Dnew = ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=3Dnew = deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=3Dnull;}}}else{try{var = axo=3Dnew = ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var = axo=3Dnew ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=3Dnew = deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess=3D"always";}catch= (e){if(_23.major=3D=3D6){return _23;}}try{axo=3Dnew = ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=3Dnull= ){_23=3Dnew deconcept.PlayerVersion(axo.GetVariable("$version").split(" = ")[1].split(","));}}}return = _23;};deconcept.PlayerVersion=3Dfunction(_29){this.major=3D_29[0]!=3Dnull= ?parseInt(_29[0]):0;this.minor=3D_29[1]!=3Dnull?parseInt(_29[1]):0;this.r= ev=3D_29[2]!=3Dnull?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototyp= e.versionIsValid=3Dfunction(fv){if(this.majorfv.major){return = true;}if(this.minorfv.minor){return true;}if(this.rev=3D0;i--){_2f[i].style.display=3D"none";for(var x in = _2f[i]){if(typeof = _2f[i][x]=3D=3D"function"){_2f[i][x]=3Dfunction(){};}}}};if(deconcept.SWF= Object.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.pre= pUnload=3Dfunction(){__flash_unloadHandler=3Dfunction(){};__flash_savedUn= loadHandler=3Dfunction(){};window.attachEvent("onunload",deconcept.SWFObj= ectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFO= bjectUtil.prepUnload);deconcept.unloadSet=3Dtrue;}}if(!document.getElemen= tById&&document.all){document.getElementById=3Dfunction(id){return = document.all[id];};}var = getQueryParamValue=3Ddeconcept.util.getRequestParameter;var = FlashObject=3Ddeconcept.SWFObject;var SWFObject=3Ddeconcept.SWFObject; ------=_NextPart_000_0000_01C87E03.216380F0--