From: Subject: =?windows-1250?Q?Ch=E2teau_Ste.-Barbe_Merlot_Bordeaux_2006_|_Wine_Rating_?= =?windows-1250?Q?|_Wine_Spectator?= Date: Tue, 20 Oct 2009 13:48:40 +0200 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01CA518C.07F46950" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01CA518C.07F46950 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.winespectator.com/wine/detail/source/search/note_id/257452 =EF=BB=BF Ch=C3=A2teau = Ste.-Barbe Merlot Bordeaux 2006 | Wine Rating | Wine = Spectator

Welcome, Nataliya Donets [logout] =

Online=20 Membership
Online=20 Gift Membership

Magazine=20 Subscription
Magazine=20 Gift Subscription

=20

tasting note

CH=C3=82TEAU=20 STE.-BARBE

Merlot Bordeaux 2006

Score: = 88

Release Price:=20 $15

Country: France

Region: Bordeaux

Issue: = Mar 31, 2009

 

This is very well-done for the vintage, with toasty oak, berry = and=20 cherry character. Medium- to full-bodied, with chewy tannins and a = medium=20 finish. Drink now. 6,665 cases made.=20 =E2=80=93JS

Quick=20 Search | Related=20 Links | 0=20 Additional Tastings | Auction=20 data | User=20 Notes

Related Wine Search for CHATEAU STE.-BARBE Merlot = Bordeaux=20 2006

Find=20 all wines by Ch=C3=A2teau Ste.-Barbe

Member Quick Links
Personal Wine=20 List
Wine=20 Ratings Search
Recall = Last=20 Search
Vintage=20 Charts
My = Library
Value = Wines
Top 100 = of=20 2008
Customer Care
Logout

Free Email=20 Newsletters

Sips & Tips | Wine & Healthy Living | Video = Theater
Collecting=20 & Auctions | New at Wine Spectator

=C2=BB View = samples
=C2=BB Or=20 sign up now!

Forums: Wi= ne=20 Conversations | Sh= are=20 Tasting Notes | Sh= are=20 Dining Tips | Tra= vel=20 Tips | Bu= ying=20 & Selling | Of= f-Line=20 Events | Win= e=20 Education

Help: Customer Care/Manage My Account | FAQ | Contact Us

WineSpectator.com: Become a Member | Give a WineSpectator.com Gift Membership

Wine Spectator Magazine: Subscribe | Give a Gift Subscription | Buy Back Issues | Issue Archives | Wine Spectator=20 Retailers | Sell Wine=20 Spectator

Advertise With Us: Wine=20 Spectator Magazine | WineSpectator.com | Wine=20 Spectator Mobile | Online Classifieds | M. Shanken Media Kit

About Us: Site = Tour |=20 Edit= ors'=20 Bios | How = We=20 Taste | Job=20 Opportunities | Te= rms of=20 Service | Priv= acy=20 Policy

Services: Mobile = | E-mail Newsletters = | RSS | Video=20 Podcast | Gift = Center |=20 Online Wine=20 Courses | Retailer=20 Club

Other M. Shanken Sites: Wine = Spectator=20 School | Trade=20 News=E2=80=94Impact and Market Watch | Cigar Aficionado | Food Arts

Categories: Wine Ratings | News & = Features | Collecting | Learn Wine | Dining & = Travel | Blogs | Video | For the Trade | Shop

Copyright =C2=A9 2009 Wine Spectator = Online

 

------=_NextPart_000_0000_01CA518C.07F46950 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.winespectator.com/images/wso/ws-logo.png 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 MgfGQwAAAABJRU5ErkJggg== ------=_NextPart_000_0000_01CA518C.07F46950 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://ad.doubleclick.net/ad/msha.ws.wineratings/winedetail;pos=rh;tile=2;sz=234x60,240x60,120x62;rb=y;ord=265080? R0lGODlhAQABAIABAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAICTAEAOw== ------=_NextPart_000_0000_01CA518C.07F46950 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://ad.doubleclick.net/ad/msha.ws.wineratings/winedetail;pos=lb;tile=3;sz=728x90;rb=y;ord=265080? R0lGODlhAQABAIABAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAICTAEAOw== ------=_NextPart_000_0000_01CA518C.07F46950 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://ad.doubleclick.net/ad/msha.ws.wineratings/winedetail;pos=toptile;tile=7;sz=300x250,10x10,1x1;rb=y;ord=265080? R0lGODlhAQABAIABAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAICTAEAOw== ------=_NextPart_000_0000_01CA518C.07F46950 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://ad.doubleclick.net/ad/msha.ws.wineratings/winedetail;pos=bottile;tile=8;sz=300x250,20x20,1x1;ord=265080? R0lGODlhLAH6AOZ/ANEDA/DVrqGjo3EEBP///8p7d9aKi9WwjrCNZtGqduKvsdHS0erq67FDQl9g Yvzvw/7ms969vqnU4sabdKZBNP755trMsPrv7u7DxfPz84MEBOK4d//62MDy+uK7i+jGiefGnWpJ Mf799fjZnpVrRxAICH+Om6Z4Uf/2ydFMTLAoKOH7/Mx0ksVjYdfAmubc26y1vOzCe8WRYejl4fPf 39bd4frs1J0yLem+v6cQEPPLh+7v8PzWjOXZwmtzec0uLvz39PT+/uaQlf7ln+zSnfEtTYh1apYi ID9NWN7g3fDPz+mgpZ4AAPPv8NSjY+7x6/jb5/TLoPHkyfb399menufP0ehKb4BaPPffuOoCCb/A vicpL/jN2vX795IUEqcnV1ExI+gOLcyTQ7tUE7ZWUPRqgscYGMdZdq2ISvv3/OCwauuKSOqcbbeD V8ICJ6I7AvDQjvdEXeccP42IfNThuYlTaUxFPZELMY4WDWooCOL82cfjmqkCAv79/YkGBv///yH/ C05FVFNDQVBFMi4wAwECAAAh+QQFLAF/ACwAAAAALAH6AAAH/4B+goOEhYaHiImKi4yNjo+QkZKT lJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvM zYd90NHS09TV1tfY2drb3N3e3+Dh4uPk5dKU5unq6+zt7u/w7Ojx9PX29/j56/P6/f7/AAOW4yew oMGDCO8RTMiwocOH2RZCnEixYkCJFjNq3ChvEsePIEOCwyiypEmQJE+qXAkxJcuXMAW6jEmzpr2Z NnPqVIdzp8+f3noCHUqUmtCiSIceVYkDhxJqSnDQgOq0D5UGDdjRaJoOK5WkIz0CVcFEBTWyWafl YNKiTwEmTP/GFWhQQNrbuN6UYH0aDW5dsEHF/jQAly80JXCZXJCmoLBbuOMaMEkL7e43HHBxSPML OLCkoRc4R7vL5Gu0FmUrQxYnmXIfHJIvZ97M5G/nbUtVkkkdjSxcMtLW/r17AXVZBdEuUCHjuwFy aA3W5vAKPUc0KmRzkDE9DTtcFVih+VWQvcXi5AV8k5maNPdJKnDZI64N93xjJnzv+k78PHTixAaI 919tNJBlGmmJcTfagHh9N6BZ0BQ4YA6GEeWeSf4F+JgK/h3I22PH4XAXZQUY0JR3OSyGA1kqNDWV Auz1sVaAyrkWDQ2EMWGiZn0kVgAO5M3Wh2QqRNCHhBAWdaH/SbtBSFaAqAHXB1m23cVjH8ZZU4WQ rV0Dl4bYYMbElT1OdiNn811JA1zPWSgYUPAxQcOacvZx3wXzxWjZgngdOVcDLeRoWpfWSFaWATFS IyaZoglY11s5NCUplUgtWdIFMxKW5FpUvJUkiHatFmdZ//1FaDUX7ObjedMsSpttZT7KYGJSuvlZ UaipcIOOpzHBHK98horXWuZFKNqp1uDoG6zRuNpXba8+FqmkklYIlKUl3RdfNNrWGWywzvbhn6lm WsPqYzZCE26s0aYpTaK2RpLUWh9CQ++noAZLZ1tHqvrXbjkowJU0mLbwVKq+VjNfCziY1ii7QzIR MDRU5MCv/5JvDmUcmNBsPM2equFlHKnLUlzqNArQ+x+Z0uzXILTP/nWBy3AVi/GtRcHWALw6w3uV az+PxmIBF1BXmQrTseynZNopHY0STfJrNHQNcHdBer8pGC8kt3V9s7xeh+0TtmKXXZGlQhhgQAEp tJ0CvDkVl0KbXSuRgsETLdkEAHzzzQcAPwz1Q990A0aDGXybATdCZBcAQA6PM5uTEo8/noLXQlSe gxAtZQyOAZUDUPg9CvAN+ejw0AA54hd3tkToS3SOsziDr/5PC5WboQ/ufJhhLVgX1P7DuQxhq3ri l/tjBuQAtE66EIsDv8QSxBfvuTevQ85H7P2UXjnqZquDgf/a0VOELe4AIF69PbjbHr47F6TQtxnr m389NxcA0Dsfwy/hNvfVoIEQWtC2FlCPGjQYnwGWgAGCYeCB+uPbDx7YQGtQcAlqM0CFlEDBBsqN c9DoIAbSBsI+cFCEhhGgASpoDSUYwG0FAF9yHqiADGpoCYP7AQCf9sK2xVBhPWybEH5gBgP0DgA4 EKHaUHeBJbBNiPAS4QNj5EIh/M4zYAtHypCHOMRB7gfwKg7zUjA4wKUwBV8kY/q497oIerFygasG DkzXNwDEaG+Vu5z8/hY7yjGPeRcLHfPqQoM98i1507Ab8sqYgvq5hXl9u1z7KmcYRaZPjQBo5NNS 8DfApaD/i438AR9SIIQ/9m2H4ioA4jJZOwCUcI6mFF0fMFBGyJUwLLP7Bvq0l4IXai6OIVyl76CB RsBFqIuGIaIsa2iAwf0tBxlk4TQSmDnI5QCYdoJdH5RpsSNhQAHLM11/HviDPypACW80Q+8Kl7m/ NWAxwfub86TBQdBZ0wAtMIPjKqehdgLgneISZfOOaTp+xRNwQGggB0tJxybQs4xmqAI02ri5CH0z nI9rouZM58iI3G8bbxwoMdPHN+5R7nvRAN3fGtgCyIGJcn9DJKZIishs0CB0HCuANQGwGCMeUhry qxw1DLBTDJjhbUroJAA4Vs30xUh+kLPpTuX3lDfGrqmK/4sGVAEw0i+yyp5LnQYda4pO7UmznHxL 1B7NoEMAEK2pAJAmFrkWDj9KkFUYiGA3L/DGmsoPcRJdJSKzl8lotJGP3CAshaRRS2BWs6aaq+lI c8evm6oTAADMK/PAxNfH6Q4b3lsdCB13zVniNDle1F3+rAkr0D0Om5rl2y1rKdmgVjQaoUOcaRRb Po/mshsF+Js6dxjbwra0cpnVXhzT9zcddiyTT91pb4HKPGwmtXK3xB2YSsc8VK42j4Z9JgCSKd2U AjIbkyzs0yqIVsjFiKh8awss+Ua39NpldXx4rzaBCl5ocJefp8ndOJZUxt6dS7Fvo+Nn7bTKHLC3 k180QP/1SFrabeSvcq1z3ColmlIkBrhyDpXG6zqZVWJ6EZgUFWkfXJsD+mXjjZGqRoovxmIXx9bB 0ngjNgu8YwFPo68f/mKOMTzgj2Ljpkd0Hmn5VgCGXtJOxbymYcAZuuZWqHSd5Bg2lrBTugm0d9P4 5JCFPI18AjhCEXSrVncqhCa2UpPYsKt6qRFlV7o5j6zCKAAZerqn6Q9xtsGAeJ2H5CdDo71xNWzo ZKiNCxGWD4WrJWYnyT84tmB0S4Dxn2OEOy9esRpb5aqiiXwjFf/XldRAnHBZ1VQcHzp0rfxBAT49 DRZ7uBqtBBwcZz0NioKxD0JocBnsQlI+GCZzq0TlozX/dFLI+VXVCw7HhY6rvnftlH5BZR0D13eB BtIgn6tjcjRUbUxxZWOmhiYmm6UBOk7v9GDRwEC4W9fKzy7GlAZQgFy1QcTmXgPf+jaXAcJpyhyk QK7OTB80eipea1F7vNCAL+QAeAHxJq+j17hQUPlXazoG6JN/48O+n4a4X19g4H9Onl3NwK8f3JIa seVDCfMaOhbytXUNjiPbKuO3RKP5vNuksjXDUegiXgPGcQb0wjGQxCuuvOVCaCofpnFh/SGyli6e qDYPN91qaLy/447g8ICdOJ8zZjG8C+tExxhx7clSlb11LeIqGDwV0JGFn4zRfNWcVxDWWxqZQync 7UsN/1QWnrkQtwbhe31oW3IDvn9DDuiUUIWy9/rdEZqqNHbJ021isxuOBvuKc8eXw2lPyWHdamaR O1nE9eF1Lx9q5fhAyMHZ1eAXiB9mAa+5cx71MJprXZ1fv/vQ7j458nOaVi/7eZTRcYe6T6KC3ZaC Ev0u2wBowus0xEn9xaizE48GXHcI5HzSGhsEpiTwv1ghwtr5zhraokwZueY/D26e1Kh86FhfTEGi Eq5ENHZk113UlTj3F2CrgxwCZAZmwGh9QEf4t3m5o4DB1oBHslOdpFRzpm72p2LoZGjBszo7xHmJ QnC6ZnjcsCS612IF0D5FVD2ZtlGAQybV9ANtUzmwYv98fKBl19BpcFRBH8g8FjhNbzRKrKJMGcUY dLSDH0NHeTRdp+aAbuGEzhYjcBVuO8Uxp5YDzKIEAmWDgpUo+XNEn7dPCVhkv+UNAkRAvcRoTfRE GhRAQuA2LdBm1KAABFQAXSdiBYRKNPBEB6QwBGRA08B0SbRveFh9i7OGULQNCcR0GIBxETJAjciH GyVe7sMtPjRyr8eGpAQ33QaJvzOHpCSJ6Gdk7zM5ztQCHYRBtiVqIkE2qRgSosRW1oBWzccRsjiL H9E3ubhN9GUSu8iLGzFJL1dILnUSw0iMGVEcueM2tZMCyqeLqMiMMSFAT9Q2C7SHGbGM1viN9OCN 5XD/clNTEwXwI9dwjloDjr6VRQaxH+nyDuc4jcCFjtzwMNMAF/HIjtYgjuNwH2SgAOv4DvgYDgXp JTBTDVghOfzYj9WIDyBzDwf5DRNZDRXZkHP1CAdxFX5RANzxh1jBMO9yjjRwNfuIAy0AKFSwGH+o jyRpFR5pJ9vBLSnZAGDSkpPxkhHyJ5cWM9/WADN5HfbYKSv5JxLWHSk5k0QJFTq5k3p4IzxJJiKi ICLyF1VpQi3AkBfxkPZgKImRFghSM+chJkHSJ8KSGDmwFQyiGa0RJ3VRHA+iImtJMSqjj4vxG3V5 MZJBLirgMhzSK/+RkuVCMA8DKXwSmOfxFq6xJ3eh/wRrsY8A4Y/hwJG1EZMjYgCUyS9i0hwI9CUN Ex44SRdPSSTf8RWQ8iMVYyah+ZKbiZm5MhWJoQLnSC98sZfQARdciDXAMiICQxrxmCstAzOXmZmq sZiroR8So5WRyZX2ADKqwxbC8hRiwhbrIyaswioPYygxdiRf0iyOATHQwCKsQgV88R3eCSy2GTHe gikJIyPtqS76qDBschiO8ZwZ5hiKKSwhAyzWk4b/ADJxQjzC8RrxmSzf8ZTREg2GciWEYR3B+ReN Qifg8zDHAjPI0iXrMiWDOQ1kwS+eYjKKoRbQkp/fchfKKRPMWQ8g86HTgKFwMZDXoTINYBjZWS9h Gf+YjnKe0UOhFtqjruGiY9KiGyoNAeqeHoIvEZMVJBoyIcON/SCZ4bCiqxGc8iUk16AsicEeNWqc uXmOXuowCZmhMZOg6Xmhqvkw/gGZnNIYKcKkHAqdS5ovEdmf7igQICMmCjIfXyGmyUIp4JmkjLEt 1tAo40J1OTqmEUMuP1ouhqIhEjKkoaICqHExeEpPL5ovt4kXc5oQUAoOEZkdPKIE4kmgQZosDXAl fvob4rIYyKKhf3kkKsAdqpp7IOKoZMAvPEouiioNhOKYE4IWV4qbpRqeEhOqo5ojxZIjmjqlDdGp 3xCRviqsEsNhfNox39EAvsEeqjIbrRqtWPEd57H/rUE6M7GJm0+Rq7e5qwo6mFBDKzSQntagKvgS rRKDmxzGnv/hG27qEM7qDXMKl+56nvRoAPuhAm1SBb6xWK1qQl5pMayCsOa6cDr1leWZkBBTphu6 sOyRIaDVnVQ3Mr6SKBArMZ1ynMxKp3RFERfQFKZoLlKhMNy4ssqnBIvDsvFQHIYBsNHTU4JKDTJb P1GBEimKkc15rV6plSljKCdaE/1KtGrYUvkKoyAyGS37Ek3rtN+wFS9rU1VRKUOLtWDLE18btmSL hnVatmjrDlebtmC7tnIRHvCgFzMaDwupD0HDDXNhGlextOQwlecHD27LGifLDtWaDgUKkYN7DekZ /6frMLEUqw+BO5nnGA+Faw7qqA+bqrjCCanmMDJIY575ELkOUbkgkbmFsrmQOQ7wQTQhI4X7MLbk ILeGYQCAwqvOYRV0QTFYAbAG2yqGogI82CqZUZZkYBh7S6ThoTMV0jNuUTVUQwVB4rD0RAZrIZtD 4rzW4B2+ogQRiQOqYjGJsrjlohy/MhltEjTYkRbeq49HaUL5aLH1ILoDSqwhakLbQqLI+R9toqyJ EYHwyRYTwiNxuifEsnm8kZ4Okq9PU5cADL+AiZaq8sBoeSXimxb+MSAachdxkhXT2b8BdKn4ILrA ab8gzKL4+x29WaBiwrqCcg3TWbzKIR2LMcAm2/+m9oKeMOMjQOIbPJIdX3Fy9MKQm4kcZYkXcUIG OBDDEsMeFTwaO4IiMyysM7kbUqIAOzNNUBy6sEsO9zEVkNKefnrCw5olfbAbrgGcVemlmiEmtWIn l0rDeEEnptHF6SoglEEndXEfZOKW1dAk10kvN9zGz6mrxakls3EXi3WbbSykuOm6r+uf9cApGpoj F0An+VEuEbknfkEtlhGWdZGhlALH0WDG1lorCGyxnLGpB4mPWeIuBgwhTbyTIdnCGiwsXPg7ntK+ WgzJ9BAla2IdBqIpCwKWzKrJs1IYP4MVzpuhXSLK/1uS81nHf5rKJ1uo1ICPliEm8LInsTwqLiP/ K/V7mJORKG8hteG4xVwsMYTRFoRBBrtRJZhczKuxydRis3IUzb0xojbKrFQCH59yyrDCGffBMTnC kPMLmCRcOCMcy8RyHniMqQSzHId7JEn8D6IrLvrLnYlhGGKsn2U8pL0lJq5xH6ZZH/lslpryzrya w6gMM8vSFKTBkADDKs85LBs6yNKcn+FSqP8aqGaJorxMD9970p/S0d8iJi0wFTRAvbT2wk1BVLwR Jwa7vsyKr94izehqQgxsovccIkUccb/hFNF7Hk28LxHiLxB9vc9hmM+SuvFw0VZRMylVmPFslgDK INvZ1SArMYbhMtpxssZhIwCdoEujAgHpH8oX/5YWM6U3msiJWshYUq4lE5GPejJtbdHoTA5Fc6o3 shfI+xd3q7uu4b3Vi6AttBfRm9QEA7XFG9r/qzV5+7y2K7VxUj7r67CuTdWyGWKVgb3HezRlQTTU 4drichWPqTV16w9wDRMrG9k2LA5XsZLF/Zhku9wvMSr8KQ40E7Fha90sQbDJaQ7keC+sW92Zzbbo bRTnnd7s3Qfe3d6p+N7wHT7yPd9lU9/2HTb4nd9ds9/2YANOIAZOgAZikAAucAAuULX8DbjrrRFE IAYk0AYbIAZqMAIB4AFtcAJOAAJSQAALrtwNbhFwIAZtQAYyEANqsAE68AAQAAEbEOFigAYJAP8C PQAEH64QIU4RNqAGTtAGbaAGMRDkMdDiH8ADMiADcOAETpAASi4DCRAANiACN/4O/g0PToDiSx7k HxADG8ADD7ABMqAGHrABE5AACTDmR94GTuABHxAAWCAFFSDlUz4QOQ4RUkDhKb4BMaADH7ABQI4C EHDkCXACEd4GBwDmCLABG+ABHgACI0AERGDhWGADce7hc56RjuATPK4Gea7nW67nEPAAMSADGY4A E1DmLpAAP+4BB7DkRIAFIzACHwAHEDACWPAAD2ADNnDpuFHnDlEBTpDiasDkKb7lQD4CEJDkV3AF bHDqCMDmTqDnMXDmoR7qF04ED4ACuv4At87/6+2YsjbxAdG+AUzOBp6uA8cOAR6gBm1wBQkQAxPw 404Q5jEAB0QQAKH+ABzAAR+gBnDwABUQ8BzQ4t6ecb7eEDyu6Jw+AU6gAw4P5Dzg4mZ+5ouuBmxA 6gng6SMQBQnwAa8e68iOAhxQAQMPAXJe8NNQ5ewgAnou7RtwBSTAA0EO5DoAB2a+5v1O5m2Q8Snu ATEwAjxA4faOBdUOATYg8trOASiv3kF9EhcQA32u4mqwBXYg81z+AQ6fADJwAhOw6E5wAm3A5WLu 5x8AAUOA7LYeALF+67p+9A9g40sfDSq/DjYQ5IoO73ZwBTrA5Yr+AX3+9TvP40se7Xm+5xHP/+If gOy1bvS5jgL6nuwBEPfuffAJUfc6oOiLPgGJTu7CjvnDzuTRfgJXEOzBvueKDgFEsAGv3uLZnusc gPRE4AJYEPdzrw5AYPd7fvky4OfB7vCYr+hLruia7wRscOVi7wRwIOsfcOuszwE2sO8jHwAW0ANS sPS1rw52rwM8AAc8ju4pTgTo7vkyYO4Mf/PB7uegjgIjEAO3fusA//oiXwFYMP09gAUKnt7Xnw5b 7vcODwgxGzoJTmpwHwlqGwkxE21OkZEyJDKLOjoPHBAfAQ82FRwcKBCaIj0uPVKroH2ur7CxsrO0 tba3uLm6u7yxfr/AwcLCvcUEx8jHxcuvRP8bMR8xMWpOG5EfPBvaMZAJVycbExMybW2W0hsfDw9E H0Sfo+uaFSAHFj09Ae0xIwEBFyKYCRxIsKDBYQgRGoSVrKHDhblsxNAxLZKaGNWGWEvwTIaMA+bU eCwnw2I6NTr6gfhQCgIWTShiujjgwoMHQWrUfICzAQ4RLK9m5HPh4t4FiEiTKq2VsCkwiA6jNlw6 S0S1aTmrqfHwwaMMjjFOXPlKrs2Jkk4UPTP0oe3PBxACvOQQagKCCdQufvBAFISFei6ItMkjg8iB BAf49qDKuDFBp04XSj3GwcYnGzZEJFtGoFfODzo2UOvJg9wEi2pIjFUjTsZZQ4vQafMAx+f/AxTr UNCVggABxwM0D0+gCcJDAo5tSqBJdPr4gX+Oo0vHBblpwckEOGCRi4UIHGlYNt/C3hlXhYuCJg7R GIKEE3Ij004yN87QM9CCPKQjAqFUvLhFYWHBgAQSRQQRRB3wAQIhVJNWKlLMsMp0FFb4SnUJETSZ CFhgsUoAIHDE1QcbBCBeH+RJQVQPQDxUSzQ68LCeE9+QYc4VV5gjAwIyTEDCCZA4AeRp2mjDGgkb jDBCWyS6oI9f+viznT8D+qOKFNthEcU9NkhhgRSjZGbhmI5hqBAz2EkBIgiGTcCVcVxZAwd5ydgA wgZouDcBGjJAeCIsFnwwAg86nABGe+a0//HNSOWcgKhHJFSS1o8I5JhAbW35SIIHURCVgAcg+DNC AickAAKbbHL3QA9cdmnBdmxaEMAqR5Fp60JmDoOmVDYQgaoLifiGIGL6qSEGCOTZAOJeH9hVyAmq hZDHAciIUIGXCQLX7BVg/HgFCeXomGgbP4ar6DckhADGjTIYNw65IZzQzql9HeiBaoL6yqYzfM00 AYSoFBWABalgZsOtCA+UKzG9bCjFgdsduBIjGxz2WwJiiHFBVCJIUdxxNhnnWqRnfWoBZvnUA1y/ iU3QXgLkIABtpDSrhuPNV4TwbQglfCMWCTJHq+4JHyh4aqpR3IvACFPa22NRBK/I6per4P9DVwUz JKx1LwsH0zCvEQfma1srJXDXcaeNQ8IEyNjgwmlcnZrABNrYhcZdJ1cQipqnJpLAB8W1tcHbJ0wA h3DQ4pxzCHYcqnjOOW9RwhZ2hKDuFlscigAINR23wYHtKDgC6GVPcA+BBNMk5SpYqEJXDwdvLfst XT+1i1QVTCkX6W3V5oE4TqBxgm+nnqysBzLw+bd+E5xw978BVECAtZUNddiOaNj0adHGJTDE73OH L87cZrVB914ToJ3ACHCIJXkJ8IMhg5JSdDlwTXvtF0VxIburBdSnIwrB/HKl+nEASwGZnQJlUbtf 8MIhFQgAD6ARALco6UCMcAee2vA3D4H/wgbdsdcGaOMCxDiqDerAzZSgdBiZnUAsCGhWAhBkk/R9 4EcieoYOosEIuvlkBHDiyhAeAMQhyGALSLCDDCAgigdgyVcd2g7MnDCitoTMLgjQAj6kwIAufYgo TmJFl7AQuwWasQ8N9MPtqrUJCKwHE0q6076IkAA0/C0BIWgDCkKBAn0cYAP78kBiDmMoMDhhiCiI YodC5BqxWA5HHhhV39JhtkohoCftGB0cdti70Y0AOMUhAhDtOAQdWEAE63CJP/TxEyz0Rx/hGOGI wnEXLQbAA0QImQWIMCuUhbF1+XjAGc+YxjVCICYQ4IEmHhCaSPZRG0yqJBpQKA83ss9i/+k7znEc lQA+4kYeoiDCGK4gvMKNgyecWslO5naXD0QBdP3Q1068o4PDjBAxiThBWtqFJQ9FcU39cYmSRmcT EumnDUYgin6cMA1rqEGdsFMTl1TRA6AMc4HFzMUx4CAGOIQCLrrRiBNSGABKpm9PMoDDA4bgxoDC 5Xe+cRcCSBADEaCSiSiQQm5CIRe62BSVXckXEYYwgkZO4IL74hyoCuqrEbZFByHzigfyUVEsUZRN /SgFFpQEASLkKVpXWF9acDKRnNzkoVhKJAjW0SUiXBSjDdTF9OBgiAfYlBQwYZ8OEDFCNdzFNywN aH+4CpcPpIUReboCBETQRhtw4BMQGP+BXZNhLb3ZAFTsOw4CwMBZNEjsVL4SpTPSwZWJxMAmjEAM COqXj4HJSlYg4k5XBfUSCCAAfpNDgDSq4YHRjGAacVISFvTml0/0AARvVWBGx0MA3IwgJ3Z9LEt1 AxeOVmMvM/VAXNYDB06xT0lw2UBJWuMEyVZGNxWw06xuQ13HVgYLj8VupHozwxEkFQ6eHMEQCNXQ nBxHDWjIXg9oIAV8rPJoAegBL+VigyUFwI2lAcPkaLqIRejnGfwFzSCeQYTKuABMHktgcrW2XFtk Z5kQ8IATMiEKN+pGFNnoyQcUBRqdZCMt+IWDK3PKS8J+QhOi4AAIlhNkvT32E2rShEv/tnpMUrAv fzGozQ71gxUjqaEQXyFQDw4TqtY+WJH1AyFhedAGnh0qBBvgrzR69x0NJmI2wMQMFkQ8YoSVmBaU efEodLAI+I4iyI91cvuuoBNTRVEKocCMkUnBA/jqTQQ2+OZtRBEKI8+Wr6ESrBu9gwjj7EQQReJI kbRRx48MkEQcUQRX9NUhuTygaSPQDQTUIOHGbaENg5DGJnfygc/0ticj+JwNXtWlOm/tzrM4RgVi AmhO/A3IosCNKIJtqARAoH6PrsA8mtif9ezRyOctciiCHFn86pdEzPJOW5RUG54wSZbR8Jx4nUCu omzhBHuFBpMABwc0XOEnHvjykwIg/+sYSA5HJCtJOqaBCWpAgytwgAAiOMCqYhs7YciORbXY++KY YKEQOmDiKHSDArpCKyYP0Icro1EKuOh3HXSh9KSvhhv3ply/7NbvEHiyPfwSdZNQHeEIawPEcVij DTKb4QbAgBIdHAi/3ZknLl+95CXfZh1DkPC3yBUpcxQpJaE57afbsQHj1u/iGI8rc7WN3pE79yb8 gPYDDHuCA4jAO8nLN0VCPoIV08UGUVBpZSAwbkk71js8YNp3dziEXOKyNhhhaFc4+BvhmOXKQ7qC jEgQI6dzNbIHImoAmNadDsElABwYAm60ji4g0Sc2kN8G0UGghhFQHNFot7PaTUwAtv/HHDeliAkp 5BRzCNDIAw/wLIligAYxxB0u/tG2o7UDZJJbBjNKGkKH3KiGNoiBpd+jzXfGupErz014MSPHFdIH BhmBAQ1DgEZtRIkIwRUpVK58CRwePAqeiQVHOuIVRDJqEEd2cIACrEJnuWchGadx06Nn7AVzlMYB PJEkokAjfFJ2c7cIPKBMR0YXD7Bs3xYmMYEZleFYEoQFqhdso5F4A+V4oyZ0mFcSHjE8YvEVE1AC McADmDNBhfA3FKMfqAVIL0F1WKAGYIICJFAC0OJ6PPIIJVEOknAJ9ZcSKGABB1ArCzgmDcgQvYde uMFsI/dnovAd+qUGYrEBHncnRIf/U9D2ezF3GaKABSCQXjoWWTogBgy1HuvRgTFhDaZFIuEAJGdx F40UKcijA1vABkPAM6Hxg4LoVCRSDfxBRuxQUvCFAmhQAuBiPmWxIz1SDsdhCFE2Apx0gFIwAV2w hWTShV44D8IXbZMWi6NgigCGANH2WFjAE5IFF1czbiAkiybIAb5SARJ3GzRySIOFcx3oBJWQACiU WtDYI65hFpGyfl2RdYeEhvEnGhPBSTvBV+4gcg+wEh2iG8kBLuBCDkBiGtoUDl/BD/pWe1vGiq24 e7wXaW4XbSQ3aZO2bB9wAh6QHQHFPlFwTLfxUUFmGViAApGGGetABPWDBWmmEd/n/2QToUxqoDNw AAJmAR8lATNIZ403gw0TwANggAAoEAMk0IHRUIrroV9bJSg9pR2u1pAVcAU9IwOLMg7UyBHv8QjD QzeWQCIQkAr2yIX4WAvKlhttx2wwF4YkF5ATYC2biCS1B1IcgEpr9XsPZjBLFjH38n07N1Cb1IE8 YDk8gAKC8S4jsSMkmTNgcALr4RGWgwJZhwAxuW5wcCl8JR8j5RMNuQm6oXUjQxbiQg7rKICFADgj YAFN8ArKkJRlspR4pmzBF2T92ET/uJLfwljSAkQkcABEhQLBlgAvJgUO+ZBywR1r8h0xMFi10W2l UQk7CBcI0A3vEi7pojNgsAUpJf9e5LAFRJU5UxYJonECF6FN4bMTHqQdowA/IeARY8GOjcKY4bM+ e/ETDJAGr2BTlFmZtSNXlMFegMZssVgBIoACMlACYJB6alAKFrBwmYAFdqQ3iaQJDMkdTQMCsRZZ 7BNx67EBOmMJMcJSM2Wd4fJ/OMJZbiIalqCDjVgChhAJosZBU7ZvRMADEIAZWMIBIwA/dsAGMfAN jTI8Xkcx8zZDvcYDNrAD3vmdChieSOGKXjg9oxB9IhgPdNF7Bgc/IfcAUxdsGaOB1CVpD1BCHVJ/ BxIYwsUDcPBG0JKiaCmkvVkOlGIzi3NrO9R3iqgGD5CDhDJqZEaXARqg3WF7IIT/AiKQgyUQAiIB BjkyDi/UG4yQFnPzFYaFBh6VAUAgYuBJo0tho5JZLcvWH4DGj3uGWyUgA8QoA/qnH6ERpM8FSKAT Wu2gH23xN5/HPo3UBhfBPqI0RETALeqIOd+CI43DWTKwV0WFkmqAAl86BG0RZUNAI9zleRikAzY5 CpJDOSRgB1swndD4I5Hikyd1F+LVBj0wBX76nX0wo4J6EJZ5mYbqZEOwlUH2ADTym3ZgBEYAX0D0 DlgVWDkRYyDwEqXXHfpgikLyAUSlekbkemrwRkQQBYKiEXaALldQOThiOYdyKAkgIzwQVjiyHim5 c+gGRPi2D21xZc/wCbrRnphT/7GdxXUvtDba5ARQeADZQwBpMAWxEKjTWqPVimeacQyV9QDUoFLh Ba4wwCLKRgpbwZbWoEwQYA2YAF+WcUtf5koJwIkzxIcTNG+YACP4xUMT8C0zo6X96pvtgRIxkEcy EAL7tQWctxfk16rzB2o6EQOItp4hQDlX4AAh4AB2UDnDoxq9cRfNAY1o4IxSQAB/OrLSWrIKc7LJ xjFYIEgRtQAzkLIqewFEtQEv4QxOEHEl5Yz84EqsRASX1CxoAAYeEHXkBAkyAK/ipRMBihE6oTM0 gzOWYzmZUyqYECk6cAVXGwJ8xgilJQNJAkuyAbaaEbQOYAQOkLu5m7btMTM1+P+McJsALuAKM/pT d4u3xUCohUonlAUEFXABGdAEXLUBKNQOQHsWV3Afr1YkYSUW3pOkvzOsyqlfDtUWbyReGzAEjRO6 qgoGlcNZc4lvPEBvWRcDjbgFMcYRoMEnTKNuiCANW1kBEqa7ZVu2uZs5O7KOL4SDX7ExfRCjdjs9 yEut47lGlNUQxuu8F/C8QJAGWwUHJJAA2tFKiPBbtBYCAfcpfelVB0tH/hIJhTsR9cdSIuEEhHIo 1zi67guwv+ka39gGMVACMoIAW0ARORGq9Napu7NYIqAD8OMABqy7jCOsIdAb5cAjPPIRT0AAXXC8 fxIdXdAFMTqZcFXB5Fktxpv/xj/1vBUABEFAuCIRkbgkJaSARwgwL91RQm9zBTKjIHxhHytWSnuF CGJwEa1qcJUDsKNrOWn7mzmClpVQAmoIB+2nEdEQcRtwAoMFegFwgKFgByXAu2bLyI3DqGdGTnfh AjvgChAsC1PhGFOwA02wAxlQyzuQBAuQBLTsrLKcASJLxgyot3uLxmpsU+ppU0AABBnQBQRABB31 agFQDREjF1zRVYzwFXPzOXQUQyCARa0ak+4qA2LAEhOEAh7wSKObyI3MWQdHVDywKcO6XyUwAQrr DuxTXnz4HdSgei7gAHMgAAIwAQAN0BMwBwY9B+D6z/YwA08ABMR7vK7wykuR/wEzUNEMcNEv8AJV oAUIIABVUNELoAVJMNJJoAULsMUPXB7SobzLS8zFrJ7JzMFB0AOxuQ4BALv6cjjDg0Ecmw65aRw8 ozMFuoNENSjdJwY6AH6q5yg3oy6JDL+Yg1v8hSQ5E39YC6XToGpcRTQSB13D9gIbLAJ/+lMoIrhR Ea0Q3dIqjRQiEMs7QMtvPQMaXQVVEAEKQAUKEAF4HQEvsAMz4ABbIAAMUANJwABcwAV/CsxJwdJq XczGLNbO+wQX8ARdQLjB9wFX4AQVxCZwYoqFYBfccihULAAusAA1AAIxol8xYKCJl3iqV7AIt8i/ +auMyoSCUAkkAAalJKfZQP8NqKVfyWFtvfYBNlDRGfBojv3Qf5rMyfxAEl0QUxDSSfAETRC9cU3S M8AAcl3YL2DXClAFT1AFLNACS4ADL9DQS0ABk2M5zDoFDm2yZnzGmpHGbaw3zP28T0DdU5AGUjAC pSBeLNEho7PaiXUztysAFjADMH0Bxb0AG0oRiRtZMelGQ1Bm19jI71PbuIVmv8MGJECcQ/DhOkBv DGUTkpUcEddnTdAET9BFkn0B0OvLaTDjaVC3A+EiBMEAWjAHDpBEPiAACzAFKz7L2q3dERABVUAF CC0AEdDiM+DdVKAEaaAFgA0GCyAAV6AFNaAFVNDkTQAQBcHYEU1ZaxzT9t3/xswNBKuYATZQSosw iYmlM3wMAwkOEMZ8AQWGDxawAFUQKBxIRB2ICUNEoKkqrBqOW4diBP98EzN1W/abg6GBa3uVr0Gs ejEAAk/g1zRgAzAO4x0crcl8ATZ+4zi+DE2QBDVgAj/e4z8OuISd3TC6A1rwAjQgACygBVWgAApg AEKAA3ldBRfAAAKABHkwAHmgBQRQAzAgAbk8A9hd1y/QBB3cyrkg5mWtstPzU8z92OpZ33rTBAzQ A5r1QnPQ0RbAACiCDOllAy8wNagzIFWwAAsAGj+3a1FqWziS4YyaOVcwBxOgBQPiAgKgBfN7BU4M pt6wHuBgmgSFAmGFAhsA/5mdvuKiDgSWMWsj8BBp7cqTsQxTcNEM4NciDQRbfssCYAIwcPJaoN0m 4M8AXQPRGgQ74AMDUAcYIOoMAAM+8AZ+EAKqjjlGMN0tjsvyvgB5feRIjgEMIAI1Th3CbK0OMd/Z XubPW9wj/QIWne7VAgRPUNwSgg/t3u5VgA8L0ANlvwARgGGYICOldAL6Pjl2cLsIYA8EogUHAAMH ANAWoANkgJIHmC4x8SOk0B/qIAN5oAYu8OVfDuMVYIo7NFzG+GqfgB24cNbIsAtTMNLZHfI7wAAh HeR9UAMnLwAwYAL/jAQV6wMVbQICcAypfrt14AA+AAMnoAEUIAEd4AOTI/8AM4ADBWAAuEwFBtDl NfAEcl0FBVAAuR4BM7DLtGDtWs+8U7/GNoXByWwDXSQFNCAhFd393u/9UpDRCwAD/5UVbSBhItrv ANTnWmD3eC8Adw8DLtD+FqCc7xfiQnyrJLBz3gEIMRtOMj19QE02FyIVPCNENhVSWAE2lpNSUjYc QASen6CffaOjnqWhBKSqq09JSQw7sQwzMzULt64LDC8LtLYwJkhbAgRaPgLBwDAOJSUOPXghCysr DFq0CiwFVAxJVVQGBlRVGBERVFQLES+zsE2xT1OkfvT19vf3q/r7p6j+/55EABlYocKFJwcRHjSo 8MJBh08URZw1I8kCCy7/JhgxMkeAFho2pFTpocUFDAECDqCEcQCGlpIuX2qxcKUNjxhgYgyJkWAE nBhqnCQIsCPNhSYOUfAQM2ECBw4ghGKp0COAVQsHDiRI4IKSCxEA/ekTtU/EE1oMeiR5kiHWjiZN puyoQZfuSRgLtLx4pQUJEh/DGAhgVmKADxN1bkiRsGDHEisYgjShyIDBE4ozXrz4xqIFi3Sa376d cYudCAc08KlWza/1qrBhRciePRCIwNoVauPOXbDgBYMXFF0AMipIH1OyZ/S4CFOlSpYwWGo58NKF TC0sN6i5omOnEwg81MiYoHeHw9xDxJxo5sJFnhAnpBAI4EFKVQsBemSy//HgwwGrWHBQEFiwpfKa gaOkoQVKWixwVg89PAFEBjU0KGEaGVzGgC10YWeCS9EZIwAMSDTDxx0wSBACHgJIgAQYR5BhAwEZ tJPEDLHQ4kpblU1RgwILKKDAK90swM4ONJbgw2pM1uPak/0UGApYIvQx22wEVHnllrLZdltvYA5X W0KZ7aXWmUlAeJEF6sxkQXUnoTTHHEYgkIATIaCRgEcMpJHlbDE4cUUeW1TSTAAioIAGGj2EBCF/ cMjggn6S2OcCfiAEoAmBALWWGWnKLLBWRC44YMRJHy5QwwwZpCFXExlM8c4O3SQx1w4SmNCAHHMg IUASIbQhwhbNlGCHHf8OaAHELES64iytsPC41w4V3VIDA3ARQGINTTYJ5bdShmsll6Jc+edtuP1m UG9PtNvEE3DBu0MG9MZabxf0HvTuQTa0m0EXsdA7RZaf0LbBGCSc8AFYFZxgASN5lGBDDy5oqtQG l+JngQWa9LBxJiA/EFIkFXAKiipP5NWRfAQ0kZcuOyzAjAV9VLTgYS9lYMoUT+wQhCdBMMAYDGdY ccEKV1jAwBZ2mFDCFsIQq2SNmOlYg62iBUwvtRziGCsBSDgwQ7dMfgtuuGhPWa5s53J529vopkFu 2rGhC4QUeZBQwhUi5KcJClJwLMmlUmwVAgn67WdJyRO4cDcIBxCRwAP/UCUgg1AyyEBEfqZkpkVH ewjggxaebIhkBjMIgMQMIrwgBS0LnOSDEQJYkERdMBhRgAFzKEAFC2X4+cYAEwTxtAkOHGNCMCaQ ZksTYAFB7Y2y6FiZjqJiG0sqW/ggAtmrmW023eSLNS6V5k6Zvtrq03blQF3Gr1sFYoSAwhz5uXCA C4DHFzgIROAAFkgQghBc6gAT4NiMCMAVETxAB1fQkwcQEII8fAACMtiABxKghhHo4ANYIMBZ0pSB PqxAAofxBEIUtLwtzIAAFGELEGxABxck4Bp0mEAL7jCAL7BgCVXgghIyEIQDaKANMNyCA6aQBgls wQQVIkANgLGSECUh/wOzooizrmYLVrWFiD4oAQwIAD7WiG985UujuAyEvj+1jUu68dKWvAS/LSXg DSB4ABYyZoGqlAABFZgAAg7wgAmUAAwQwAJG9ucCEiRgAgbkgBFCIINBesADFbxCIhWABSxIYQIe sEoU1CAFns2rDxmInQlq5wMLzAAJdujDAqaQIXhc5oUndEULzHAGA1ShBnSYgWWe0IUgUOANBFjA MTrQgTSkwSM18NVlXmGCw6wSOwt4RzdoURG6CHNelRFBDZ52nDLi44ziU6M6/wGW46QiS6SQjSrg eT7b2NOeAnEfly7QhTEg4AEeS8DGsEAEMJSAYhMYSgKakQAp6G9/FP9DQAAOyYErHNIIGdEbGJwS hU4GoJNYAAElNgCCEWBBLgMDwgzooAUHzEELOxBBMD4xEFoyAAdUiIAW6nCHM7BAAQxYQRC60Ioe 0KGPXUiCHzwguiT04QIbqsFbtOWDJLSMAb1ox0tmMAW5xEIuFfFaW2gRCxIhYQ7mzAc607nOthbI ZFZio9vgGD8uTSAPAegjRtpTyBJMIqEukIJBwRAA/aVEACSYgBT2x4HCeqA9bSBgHhKAAggAKAoe KGlmORCFA0ThAwEghScuIAAE6OEyUwDCgqApAaz+jgUs8KkCqnCBIAy1LbSiFQ1eEIQxeCEEBxVh z+iSrVVOqB1wmUX/UbraVSzCql71esdzS4eEtNpjrWd0q3bVFxYrjWKu+pyNd4HQhTegISMUOyBN QvAA5wSABFtQZFYmsD870USx7bGAICEAhsMhoJNRCHAAQPDZBERhKyJLgAc2YANSpAEIMLADB4TJ gCBkwATDcBrtYssCDOiMAF3QxRM8AdYXKOEFfYiAH8agxAv0IQlSUJVlkHQYEcilMjvoKqxoGSse Q/fHApMHDKtrXXpgF53bTaPJYhOKeIL3yRZ4w2I3doC9HuAKWRkkRv5Y2AnMoXEIKMEBSuAUBLoA AVdIAAgOmalQBiAKb44CgT3QWQ8oNqQJ7YOPXrEAAWALOwJgQR2M/5ABAXzBCj+sQjFTIYBm/GUO ozvLOgjQWyYkAAljbAIvLkKHHrBuActbwCdcxSNYzCvHzGWuOwngquMoyAEwKLKRj5zdJJNvybCB K5fOd74t9QGSjf0kCapsAa48FAH6u0ICEWgEB0zgCvCR2Jm1oJETcKC/B+CsBzwrZwJbhQoGxsK2 OwoCMQhkjKxqGYWq8IUfXCCZooudFlZApBo4wAHVlJoAqkCDgRGgDX5YwxxM0IUumHgzGOjBC2YA PRvMwQ6/cioomCswPyGnBshQlie0gDxiyNoPtF6rrUfeqSp998lsI8Ac8gBQYRNhY/nNCH0x0pQz IwABX3YoRsCgP/8jJOAKJwDDASqrgK1kFs6YBcElvX2ADUjhowjogxZaMYtVISl2MDgLdqbokeg4 QAA18EQGotOFC1hBCJ6gggbwcIAPieCXlXkBBpSghCoogQa/sYBL5hACjghAF03oxHGAkJc4IWOV omMaDHSWgY+HXOQkj3yT2Tiuk6dv5SjIzwQQZ8MEticlnUdA41QC2Ide4eY1iUEzJoAFG3hABgfY YLchNwE4EzjpBxiBFEoQAwnA4GdYrdC1uuCDWeYYX5X5xRRXKWpTQIELSRDAG95wBV9BAQcKwEEV XkBMBuwW4XgHwhP0sCA0XOEKHFllnD7UoFs8IQ07SAIK720COzz/wfGPh7zkAYLrtM1TFfJ0Lp5A QSjgMVqRCcWWAPOFQFkmAIKUFRZgBCSAEVjGdwhgAHnwX1BXAm0QAAqQFW8GOQC2dFFgA1HQFB6A AwDQAl3gTi/RDTDAKrREcbbhCX1mArpwCxJwb08AA3iQB8liW7uAAUKCATQQD/jyBAhHhFBgA+T1 BHTwOh6zHLYiK9GSasehZ+PELbKWf0e2f2BYMAEREGzTByRAAiIAcx8FITTXFGZ2AHNwc/TVHhtl AWDgAKIXApuXAFOBBRNQAAUABiegP1yhBJmFBQIGAgqIBVfgAVhwAErwA1SATXMhKlfUVRZnY6nV BDjSaFsAA1HV/wYDkAdB4gZ84AZlEBm3RStVgANEGAFVYGrehwEYgANsITAFFzg9AASuEjA+1mOp 8BeN14VeiF1hqF1s004EgxwC6Akn4ASKpDFXUFgHUENYoRUHgHOCFId2MkhjZgdbgABGMAIIAAIi BQIyYGAnEAIHAAJU8B9yJkpY8AAggALr+GahRGkUslrtdwu3gDP+KGPLtxFGcANvwAYVAApQYABy UATFBA9YlQRKoABLgAEvAE5nsQNdwESuwkQZspEUl2ocyWphM2L4V4zGeIzIyIwFgyUD6AQvVzF6 41ATuBWXcmZNUVp2IkiD9GxXYAdXMGxD4QEQYABuGABNQQUnQP9fUaAEHvUAdNZf+HgAH7AE7yYK zJUGxwEMC6BnrsJMuXIAazAGJ6AFvhciFIkBxJEBcpAFtgUtSdABK/AWL3ABO1AFeHli2CJkXTAD NiAPrSErSeA0DkAgJ4mS+qeSbZWFCGJyoHBfCogV5bgFiJONVWZDpZUAN+eNOEdA6FcCJ7CIBDZZ VAA5kJMAVDCHHxUFFWADfQcGnUVgQckFLjYKzEViWKUFOkNLBNABEjAHVzB9a8AAoGANAlAHX2AC VTBiQpAFOBAEM0ADDFAlldEBDJBarZIBF/B8V4kRLANDFtGPLzEiMHAYy+AATXCYiJmYiul/3+Ua oDBRIeCN7bH/Af+FEfipP3MoSG5omTx5AtsWe5QQlAb2WDIHObGXABAgAsBVAliAAm0gUicgBgmZ Cl3VB/BnC6oCBBfQb1miBSHwBmMQBQQwBTMBBEGgAGFQBEFDBSbgd2eQBWFgWz8zBdVkAvJXA9D1 Ap+DEsywBacSHStRRQwyYkBDIktCjOv5he2JNpC3AGNgZlyBQKKnFe2RNAh0WP3JgE1hBCcwBJnF egrQAhPwgVGwSPSVFVkhIM3QBrU3bm+WkF5JADHTINdCA9LpCT1ABmMgBjaQBt7QaDfwblxQBkvQ MheQBlBgCyZwB1kQByDGAD5wGL6CKtU0qfTnA2ggAGhAOy6h/6PO1Fx+gkqxABeusgDquaTsqZju 5F2rUCUI8iSe0AUkMCmNNAEgMEnPlhFopj9zkI1TOh2No1/ieAIjYGCeJQNYRl9dtj8IRAX644d7 YwBuBjlRcAJAoKG20iCoxgBQ4CcB8ANv4DCesANzQAIKcAInADRAkwYbSQoOIQRxgCJdYAK2VSHH AGst9SEa2S4rwAhTMDH68QRTBANXBBdM5FUllAapqqqrKnkEUnle6AkTgAYYEZkHoFGLNGwasSfO mhUlgRXPVo5v6gGJpZntqABziEAT8FHrcQWdNWAihQLAhQKrpQxTYGM/IwJrMH1NAxYAkyMzMBxZ 0g2r8mHFhP8BcsACMDAHw1ADbiAHZTAj1CABHAekencAL1ABBBsrk5EJM/AEG/N+G2IrcaFnctGw Dotkx7ie8UMAM4BlpLc/ishIB+BzLqCTCHBUjDQTgnSGBmaOVPBmoLQ/7xgAatqOKEAs2WaCiPgA GFACJKADKNELMBB2U2BbIMBiDuCbEkAj11kwoLY8I2K1yDAiq/UEfWALnRAEUPAYDSkEARIE1VQq dkAnVwBFQUZLO0AHRLA5nfYyqkIrw1hkazuxkfee8pSFtCYQqdUJBEBBWkFfN7c/gGUB4sgBhhQC EEAxMGdzJKBsb9aOUYADjYMDLIsDLvCOLuABD7B6HoWIItD/DGwQA09gYTvgTl3gAmPwBhPATNQQ tF2QJdG3StciVKRWDRZHAE70NIrGAHK5AnKpBW4AADLKBhwgG0/wcHYAAxfAIdcSf3VRA2xoA7mp BbaitsfLtsjYTt6lJV4IBLQUFwwnAkGZkxNwAgnTFH00Zh7TDCGgiPypXyQAlBMgA5TQjjIArXR7 AFQgZ1qRrm56YHQWBX11AhDgAemAcVRAeP0rA/52CEcBPdawPDAgVDMcXdAyL8XkAEhgwMdRAx0Q BCQyRhgQBlmQBVMbBAtCnCacGRKQBDtGNXQBeDV0KfenpCv8eNqllb0mXiFnY8klTCUBtxHEslTq ZQnQaUZg/wF7ZAerJ0hc8WzY5qb/MWCddbgM6IGMyF428IZyVgJ5EGAgwLRBwAJ+oAAg+gIE8LrP +Q5gUQPLIwG29WAy7E4RGwRzsSEVBqgv8QISgEKfKEJ0oAcrwAJuEAZCIFS++QJclE1x0ZFZ2BaX gUprocKLzMLr9D75lH9WyE1oQZwROJ97cob0lScG6AIP4AKgLAAZYZkuMAew6QLpeAAfGAAKiKAI RFlUQGYD9o6p6Yc3gAAc4AEWQAA01wY9IAECEAQLQAVLAAVBABYMUJ6fewgEUiO3IBOiIm/RcRce UnwkYgJS5AJ0EFTUYAUAIAdCIAEdkKMScDVE0lUwZC3Xwv8p6JzO6pw2WtIltrGRcvN475wLy7EA VeBULTWfOsyNJFAnm2kEaTZs2LuAkDQC9OUBRYeg79iy+tNZzYAA2wYC9EVgJCBRAaAG/NsGQ1EB Tqs8YUOnBZwip4BVMfHS2BETDbIh8rYqtkADtQCdAXDTlVFhK4ABVpAFALAEtiUcFEEXBECYk4qp vmICSa3US81kbWPMMtwFJkdrPJMZ/sgmso0LC/CT56fDogcGV7BRj4QADigAHuusCSB0CHRJpekC IKA/RtmOICCISdyO4IYFVEACqykDIGABTeAJYVQCwQAYT1MBU/DGn6BKqUI9seJMxKuJWIUS5OkS fdIEaYL/Y25xvytQBWUgB3KwBFJQMgRynUGwBVugCxwCDH5R2qZda+IiG12gGxtpGyEnK7C9Jhfh jx7xIb7XbBK4lI0D1nuymQ5oQ78K3MpmjrE3AW2gP8kNblTwAHUQAnBmAxMArRUTACeOAZjlAWnA BThQWy0VNqrTDHYQOwAuAC9wDKpisAExK27hFrJYETfyBNjRms3VY12VW8VkYWXABxYwB8WyOn0Q RmNkIKZAKwZ+4AjOf07tKvaUs62NXRgyCwtQ1RP+JifRZw0SzU7LNOgnemeIcwdwAqIH3IOUEUAX e1GgABGqAC6gvgJKQR4QAfSFA4uoAMPmhwcgA1KwBNlH/wMDnAowUCxaEAQALBhIoAUtSCLWoAsZ MBBwsTVL7ha1QBcUIwU9hqFUAy2wMGImoAV94CKX++mBUaIC41yxUuZmzlbs8101BT9M1OZuDlYW cQsWEAEI0CCzHSd0ItphEwIOgAaCtOdpOrdXdgKeBQLsqARZsUcEJtc2oNDm2O5gwIex1wYeYKpD NTBNMKmhbls3Rl5BMKrRRzrH0CDfpOSTfWpXOAMugCO0AC8iueTTmSsN4AMSsAKe0D0kFmRYBAtT YOzHjuwn811M1OAiENUh5yrTtGlsQgZk8CaFFxNGgCzC8BehDUt73tW0M0hcoYCC+KYk0FEFICn/ YQN1IP8D7bU/46YAeXAFNuCHMtAGXEBEIPlio2NCVY4rrRUEGAAAZTAZWtlVHjIiqcJwr641GQIL mHGdqVYjssAAfdCcQtABfxcMAiBDFKdNOebxH89WLrwlqQXJD14juVB4AsDyu8M7vIMSzeYXsJQ8 mOrGdtB3aADoN9ce+xO+uCpnCU0FbZBtwPUf6As5LnCtVzCCJxAFajkXqwVFykwrPi1VAVMFBjBE 2EIvA+wjoNYR16QqlxEwTZAJsuiLV99cVlhhZZAFMNABy+cDb+wSQJAEWsK7O6D3e89WlnclxYgh 05MEMuESAmAEdQCIgNgAN0ACs9Nsbgw19xY13XMsp6f/k01R17vNgHIdAE+MAkZAZpYu10MBCAcn HlgKEwkWSAILMAJaSStBfTUdOzVNF0BTTU07GUFBLwoKOFUMnn1dQTtara0LmlM7PURSNlO4uRm7 O707uV1TTytxRRIdIgQLPosmCwJINQJPNTtATX7Z2tvc3H3f4OHi4+Tl5ufo6AQEIu0iQO3p8t9T GU9JMDBa+gKLWgIm8iG4QcGHDyNGDCJB4gDJli0ODDqI6MDOlRNGJkwggWBCCAQHQESZEJJDiRIh sERxcWACFRAHQnoImQDLAhMmXiRbtYNThxoM6u3K0IvBjF8zMODAoADDCxo0emWYksZSBgK9nlg4 0MNX/88mu4SCzdDF6K4moKyU6dDhgjIfBKZoWqDFBENHAl5027t3nt+/gAG7ExE43SYGPQTMgbGA 7hxH/+acuEHCxJyEBhNStBMRsw8HEJHYCXFlwokrCIyQiBmgJYQoJ8EEiLLygAcXVBIEUJJAxoYZ afqsy8CgxtmhYMcS3cGAAVjmpxi8eIGjlKkgXTKkwZWhSQ8QzY3OSDLD6CmvO6rgeKpgyRMocYSs qBbELoGpGYQLIGAiiQkHSfAloDaFFWjggQiOU09RM/TgwmMC6NOKCwbNgYBic0gExhZ5gAGGHXZ4 KOKHDzEEogMIIHDFFUackIBGWARwRQEkgBETTAe4EP8AAha0JsMEIlRVVA2UBDXVWGMV1VwT9TCg XhUzPNEdFEpUh8FRPeGC2FHikXcKUeE1J8oSpWBQRRAKyIFBEAx0IMEWLvTR05w7CEeADzAQMOCA Cfbp55/lLDdnczPQcUA/c5CQoQkRIvqZAwNEekcIdUz0mQ+V1iFRQxOdOAcaKrY4QgUhlBAAFgdg 4YFGqYLA0kwyFNfBVNDVcMxUQp0FXXm47jADF0xd6UkXTVSBwRIz7JJGBlKUF94MR+FKXHReqafE J0EIkYUqGRyDhBEEdNLLWFQ1V8OeAgKq7roGCsoLJ89O4AIZZ+yzTz/QTDRAHgb16++/myLxGUQV lfb/0QMnlOCBDQkQcoAMIKyW4wFtyPBEJWCCRdVQYDYH3SlMykJoeFBwASwNSAYzxQwbWADtyL2G KfMOXWBF5AtFZMFOExIQUMMWfXTi8XG4YINuX+wmrTQ56wRNLnfJzZCAC3oIYQVdNUgowA1gGDGH Hd8a0RnAEvXbkB1mdzpHTCSAAMLUBsAUABUhyNvSBE/kCURzuhS9i8wee8IctL9sR+sLXFRZHoMu nxdWGiLIgh61+TEQYT4mRFoDKB0E8VkQQi85bi5HI7306ewSAI0JNcQVsi7d0UHHE0+kUAZAEkiQ xAINNKBYRJcxVFHZl6ZtxEIN+cCQhmCM8MAGHoCg/9HUJ5A0AQIuAOGDCT60TkAf2wnli3niMTCV CMQlEVQfTc7sy3SOd5ffFOYuYKQnQk3hsw/CLbvOCjhBwgUYUIIF/OQ8ofOY0Uq3DdQ5UF37eIYJ tJCG+0wlDVqRAlWasAQGCOEHVThGEgTQgBZYwBWK+Z1BOOMZgG1GeA4IQadCYAcjHOA1HujNCX7E lWRNMA1aAEJdRKCy8e0qPFNh3+C8AjjHzYAIzkpCEmrQmAXsji6P8FWYdqAMB+QpAwLYAgxq0AdQ mMAOJTDCCiRArfGFZwcM9MYD51gYyfWkOwAxyBj1BwQXoIEO6MvAEtwQhimEQQX9OIIKDDDFCLCA DP8FkNChxCY2ByAkM8SbSAzB0KHkeWY0qJnAHHqwjnVI7hQ1KIEP0oCE8VhjXEekFVjI9zLyyewF 4CEOM6R4kwVMi0hDgU4TGAADZniOdUEQgAOCsA7QlOAF80ngl5aTgTg2kI7YlMcM8uHLenxDAkDJ 4wJoJoWaqQcKkvhEF8KQhTCYAQMZiEAEoEWkKjKiH0ZAG77mcBkH1CEENJShpvqVkCuQhp+MucoF aNCF7HBMFgtAAjG30MvGrIwTuALHyhZQz2fYSwtAMUoSLLABKZiLMUDBDlXqob9lLYd+ymNmMrXQ h/+sowY+KMEWkuCzJEjzPNCxJoGySVSm1WcLJlj/AQFAAYpSMgAn29tBEC6whCWgs6lQKIMc5FAA xFWhCizAgB4aQ57xvGB3jWgMhoxQByMUQABUaEUEGtMD8iSBdm7pRRouwAUccIEGcZHKQ9dB00UY BDJjNF/T6NeY8RBJH2PUwsgs4AL1mecazhFOLKbAPl4M5akCyNoCSimBZDjCBCWgae6iw9rA9UKo 2SiqbO3kgAKcQQgsCIEBuACFKTQ1CHqgAwxyp9T6sKCMSyhDMbIAACEQYAU7WMKaQNGFFVi3och5 wjPmEJEIfRVaUgKIPoByj3tKZw0bWEEHGDAcJnX2dbu4zxSW8YxGPdUHQLjP4oTZhGWxryo9eNnH /96IP5dytrNhURYB0kDM0DLiAvXxQTK3EIEgEMl8vvjbG6sJ29kS1RImAEMKilGEIoQhDHI48YkB wIcfWOEMZShDC5DQAd61swhlYEER5FCMGJu4xEC2glWDUA8oGCAi3OwCEPYmpfzktAScQUIJWqm6 LSjiBGsQgwA64FuqgI+lnT1wPUxZDcYUUwuqc8CyZLa4Cz4RV7mIc5zPtw7CfC8XkJtCMp67gi8w YTFJ7QNEvvdQ5AyYAbD1g4cfiJX8aMEILBCyEJYAFWBRzABLEIIQDKBpIZRB04swwhcGqF62LCAC CpirAqjAairAgAVn2PFWi1AMN7jBCkLgwiq0UP+FSwAhDdz7jJRLMAf24eQFNZDyCSrQhxWgmaW5 gnM9mgAO+W7zKnaBQR+eVctnucwTQKCHuPCH5ylkzREcLSX4cJVfKGQhDmtcQR98QFGscKITw3Rf cxK96NPdJ6TFZAELfiBwtBCgAgnYgx7WAYoyDscEW5gyDrJQBLZY3OKRsK7GNU7Fuf5DdxiAdQpY oIB+MGZ7o8VKXbTAhTIYYAEVXCNO2NSGMcwAdE14Qmtn9kYg0AUaPoBFvj0G5mUNc3BB6cJ2Qgfn 7DyDGQJowj6A0AV6lDJnWmBLMn3wAgviZzkbBju/+526JsAg2HjSwhwYFYQVPGEnzCyl3PsAGgH/ 9IwAdqhDztxQBAMwABSlZgs4h6HxILjJ4hJQ6gpkpj6Q1mWMdiJAFTjK0Ys3wQVjGEMPmMpU4pTH Wfj52A784wAt0M98Xu7DVO5DBBsoPTha1HP4RPY65zCYUTBQBGPAQgAGSAAGfKj4CvL7Ga/z4mNH Sc5yxk72P30PGjDYZi+lsUI7DCDiU37IBPthF1UGoQxhEIAq1/EEHHianWEoAguWwIULqFcCWmiP AWJshR/gmNcvcI4nuuPl3jOjMVrwDFtwBWxCBZFUA9mhcmbyVTiwamdyZ8oSJAiWAXv2C3ICMkPR BzPgAhrkZcGxCWCRBtshgrIAL1ORX7iyADPgeAP7gBZboAUr4AcDkFSrYBBxcXzhETLLgVELlGg+ +INAGIRCOIREWIRGeIRImIRKuIRM2IRO+IRQGIVSOIVUWIVWeIVYmIVauIVc2IVe+IVgGIZiOIZk WIZmeIZomIZquIZs2IZu+IZwGIdyOId0WId2eId46ISBAAAh+QQFkAF/ACwKAAoAGAHmAAAH/4B+ goOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6 u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz 9PX2vRr5+vv8/f7/AAMKHEiw4MB7pAwqXMiwocOH/hBigkixosWLDSVGwsixo8ePGhcpHKCBpMmS KE+qTMlypcuWMF/KjElzpk2WKAuGNKTBj8CbQGsKDUp0qNGiNwXuHPSzpckBUKNKnUq1qtWrWLNq 3crVasmXSjX2/OcS6teuaNOqXcu261ecEf/F9vPDB4BdAFns5tWLt2/ev34DAx4suDDhw4YTI16s uDHjvZAB8PE5t6e9iHz29t28WbPnu5/5iuYcmjTo06NLq0ZtOjXr1a5bx633j+/j17hjt94Nm3du 37p7C0et2e6/y/wys8Z9u7nj586jQ58uPbDkufT8DWDeOfjv4d7DAx8Pnvzv7nmPy+NHkslgPvDj y59Pv779+/jz69/Pv7//+Hfh5QdJ2LlDVl2b/afgggw26KCDovEx2zvslcTZgxhmqOGG/gEGwEn8 UNgPVKdxaOKJKD54mlkhiriPSe+lKOOMNNLHmVkE6mNghSQm+GAODTSQQgFE5iCfCgU04J//CkES WUAKSwY5ZAEt1MhgYCDu46I+UUWGYQt9hBnmBUdeECaU/CkhZphk+EfFmn0YYOWCnklVoDo8kqiZ himISYV8BYiJw39qhmnkf2+GqcKcCorGYovs5DmAlxkGGmaV8TUgZgH/mdmHAgviMCajjQI21Z3n jHiWbRoW2seh8aWAA6dLEhAmrf/5Sep/Kz6qZaTsRXUhhjmIqYSGlqax6H99nrmrfzdGlZOOeL74 1HZ++QdkA8vGB+at2gbZbXyFHgufCj/wl+ir/AWpZH5Mwhofk9z2h6W0kFZrLVQetiuqoN2uu2wB OBSMwwWgytfAv2Hi0K0Km/JRgKc0jGuf/6egqkDFBRdQIS8fGnvaxwWcymrwBQbkkOgF7/LRgqt9 OLxfr3b+mk6wUgWYxX6JKrGoASMvS3F8RIqMKXw9/xw0fN/20YASFzBMA7y29tFC0+DGaibLEl/a QAGuvkyDmKDmoECYHucw9tT6RetrPu2MKCxg+v17gZHNpsGppmjPxzCsduMdpt7wnT2yEh53HWZ+ QN/KcrENx0eGmJjyPajiMYP675+Fss3Hvy3fd2/N1N6879x65Wep1fAxzGnjfaAJH+R9mIs5pq7D t+af8DXL+31jj7koxGHKyUcOQ8PXOO+G90GDkS1c4PPqmNJucX0051i66Thjuxd+yI+q/P+YRroq b9O0hj9yfI3fzUezIx+qgppKfDwf8WG+uzqasNPatJK0c9p8aEem4xXqcvlxG47yVQ5J6akv+Gna 7/ggJCPhD4GFE9OyJKiwFBxqXUQakplSpro0hClhfDAffESmAo2NCU3wwyB8VvenFgRPAfbDnqlI t71UdW9SAcIPCO2zOlwdT0yeG6J9gncBFRzsUzmkj6uWhb+E4a92YVJCAWC1LtnFZ1002BoVQpdA vpxKe5bxIZeowqr7MIyM8Wne8KAnJjmpIAdvtI8KqmY80OmHdraDXZWChMQWNMB+wfOcfBg2xnTx SjNUYaA55Ia6vAhRTGSkFRINKKdEEWD/UVpcVyZnGKZPtq5vGrsP+uITvFep4AJNk6H86lgfUQ6Q P6NboM0meTphgQY/fOsDrlRWv2B6TAn144PI+ECFYwVzmM0sX5g8969jUWGC85Hj7ASVAyXIqVDu OxcNlLS6670vYuyToejMyEO46WuNXfLRfUD4NRokE38XsOehRIbMD26qnvfU1SmLF876bPJcYson 7155wiC9yXidm+eYDGnDiuESkpHcZQN72aO/6GdiSDRi8xLHNG4CSmQ0wFXTZNe0Jt4HfsZD2piM 6MQ14eBd+MPmfEA60yjqsC+nkuRGe1kc/jDJnD84JH2AZE6Q1Ws/U/JpfoBkn21JNT9J/20qfrKH rx6S44cdxcuzxkrWtmG0q14dKjz5Jc+yuvWtuURrGnm5Vl+m7q14LStXUUXXugYmr4B9lgLlyr18 VKUz+fmakxZLpJblgGAFG6MqGbtYbjlpUU7yomI5hSTKalU+LVBAwRRwtBk2FrREakFnKZtaswK1 nXNVo1/bWp/VwSlrPLVpDhl2WwMEU0lratnqKHjbhmm1Aa1EYrfQOdCbFldQbWNnUNMqDrBuh274 se1tOaXdNT2PPryFU5IwyYc1hXO4wSyuFzP1XEXpLmvNTe9t1Wmjs74ttn01rFSKCkwnJZJIvsWn EBpgQ4EucpqUTcFvy7smc6HXTwUwQP8rCzq7VlKBDLI6KHM/Z1wnua61CdzhdN0p27PkLFv8+RcG l0De2U3Rb5Gjz4J7izni5u+LG3bZhtdVpQ2rGFBigpZ077sOSj7QkimO8QpPOJ+8GZHDzmPsIMlb 3BY8+Mbx8ZQMDVfA+NAOVD5Wco3tZV/CosO6OuvPj+OTYwYLE8bFHdSMT+gphAV5wfFZc57F3Fw3 G1HPY77oa+WKX7XqN57fS3LM5GNghMJ3oPO1sQA3Bb81STp0B4SzIuETvEFtONNEC7K9hmzmEl/r yJJRNAbBKa9yalrKl/YzH2B35xZLOqbjwzJ8nunm39EO18Ml811GTOIz/zBAqd4PoJv/5jNSThO8 fN41lbMW3lgjiYX3S+i7GuApZUFZgMykHJAXJ+y8nFGo1X2Ria8LQVXPB2a3hSOg2XtjdKpvcfKF E67Z19436/i5FA42Loc8rWIb27Am/qu75dPN55Z2z4uW8bT9DTJL57vNOC7uBMMr7nH3AVpl1p5P 3rlubN1FzdF+bHKp0NR5S7vej75ygw3wWZfB7Kb0yW3M4CjwmYkYjYXOb8Kxq6GkwjGw9aGXVJXO Ia6iscgcVTjSpz4jBfLV1KsKItW3jqLRvUWjQr+W1LlO9gxl7+phr2Syy872Bg0W7eNQlV3t0va6 M8hDhA56fp+inETb/e+upbu0RK73/7h3zw8RArzi19mXAWXJ4CRnyWkiI57yWP47mK985s2j+cIM Hu5flfsAlGObznP+9Jc3fepRn/nvPZ66B1/raEovndpT5/a2zz3uGzNsXeqo8KFX90n6znrVb371 yD++8r2zs6+DPvZrpUvpjU/94ls/+dUPzWTs9HTgGxrhp26L+MdP/vKbv+Bg35GRzc/+9rv//Qvs fjzgxqOSw//++M9/VdBPf9qQxf76F4ACSH45AXTedzOUIXwAOIAM2IBbUYDPFzcJWCEp4YAWeIHn ZoBjgRBj8X8qgYEgqH8QCBAjJxEd2BRlEYIqqBY0wX/9FxKWARA5ghRHUYM0eIM2mP+DBPJ6JFiC S3GCHxGEQugR2qOBWnKA87CBEziETNiEQygISHgPMeiEVFiFFQGFS8EIc2WFXNiF6sEUWegISsgT XliGGIEILxiGGzFyYwgPG9iGargJb8iGdDiHdliHeHiHepiHfLiHftiHfBiHq3ADFHAEgniIhEAB BdAGi7iIDUAIB/AABdAJFDABB3AACdACXqAJjmgIXsCIFICIulAAD1CKpvgAIGCIfhCJbbAJXhCJ p/gAWNACjUCKB5AIpngDhSADpdiKoogLbfAARNCIMoAFqCgIkTiJmeAFICCLMkABFNACAfAAZNAI wXiLiGCKIEAIN2CKyviLtmCL3Fj/irrIin6giNUoCEewiIOwjgeQJIgwAbKoi4TwiITgjhOQjn5A BpEYAIuoioRwit/YjKVYAGmkiAeQj4RABgUQii2QAINAATJwAM8IjpxwjYVQio+YjH6AkYJAAaUo CA0Qi9hICF5QivqICGQQiyCwibBoiqGYkQ/Aiw9giKQYAM3oi34gj6cIAvSYjLAoCDxpihNgkZz4 ACXpByf5AKFojuL4kSHpB9NYjQ2gkIUAkg+wiYlwBKXYAnhAAc0oA35wA/IIAtColQHJlJF4AN2o lpIoCLyIBQ1JBtO4jasojA8QALe4kljwiGRgjPZolJbgkWPZjFiAjG9JmFgpCMaY/5KGQIoPkJYw uZMPUJSC0I2H6QdPeQilSAFeYIzGKJYcuZQxqZSNeZeVOQhTOQgtgJSCeQmQGYt9iZituJmL6Qc0 6Y8AuZBRKQix2JRI2YjByJQd6ZrZSJwjmZcu+QCtCJIBsIuu2Y9pKQONyJOvOZixGAATAJAcqZi9 WQDTiJKG0Jb0CInEGZ6xSJybaQidiZgxyZErmZSaGZ2pqY7paYrXWQnrWQhOaZzn2JuXaZ2GMI3y eZfA6ZiDsJ9pGZNe8I3miJVo6QcJMJN3+Y1+UIq7mZ/YWaCDAJ/kiJiR6QctAJDGmKF+kJwHAJB/ SZwrGQBaiQcFoJXBaJecSZyGwP+RUlmZWrmSNXmXOkmZJbmOGkoJCtqhzGmapXgAWGCMkYmV7yid h8CjqPiSqSgIhjkBEzCNlomVIGCW7Gmj/HmkYwmaB0CQyoij6miM/qik1DikkkCYN/qWJ8qkHsCj IkmQSFmehkABL4mKKekFNOmMaMmTWKCnvgmm5vmNN/CSARCYaKqOjEqLbkoKhZgIldoIZ2mphioI XmCilOAFl9oIoOqpk1qqpnqqqJqqqrqqrJqqi2ioBXAApSkIDPmIRXoJDMmIujqimHCblGiJFDmr tOCruCqcwomgtTChljkIxrisjPkAjwinmtCnpjiblkCsR8mS9NielMCtl4CtlUD/rabIobTAl/VY ipkpkrI4CpE4AdD4NUSwrrbQlg0pkVjgoocqrJDgrbOwlsbaBshKC0sZmENJsPWJjoLAiEcgkQeg ifcYq1aZCI9KnudYAPp4BIw4lm0gqZzKiJ2asfvYkO4oA7s5sqGosI/pn0qpi+tYihNgsRVbjWQw ASxrZQnQkOoImS97sRDrmF7QAgkpsziLsRbKsBU5CHjQAlQgA2QQoUZqoYkIszNLj0lriQUAkES7 j1gak2SQAAcQsJPQrsyKlPXpB4ApCE/psj25oyzptOb5o1yZlfNZkosZt+XZov8ZopGYAEw6j7Ta t5XJr4LQmlhgolg5rnMLmZ6Z/55FebhJSqtte5noiYo5mbeDMJQum6aniAVua46HYIuKO6axqIxY ibktgKcUmgnmeqKoiJnqmq4e6Y2V2JV+ELeaCJapewjtCo3ROI1iWZx0G5WR+Lt3SYu3CYuyWgDG eIufiZTQuKKIap+ymI8ACapdSQG6GIzxigUpupMy0AAz25nW+wAtgL2125WgGpaI2agU0ABmarn7 KIt+ebbyKANecAMFQLzm6a68C40Ji5fcewRHYIwe0ACzC615iwVk4L7ousCwSKqSQL/km6OPWL8J apylSLzNWJTyuKyuu466eqb3eQBaaZtRCZKZGbebeLzHCJd5KaLKGZGCK5KAy/+Wg+CtkNmSiICj 3trBg+C6FMupxticUbmag0ufzqq79xmiOayVvJiUN5m39tiW6UiammDBJYqbqWmM5Rm7YCqOkUgF IdyZjqu3wcmIMmCY2eufvjqNj9ia2MjC37iYpKi/Fxq9C5ml6LqtYDqcu9kAVOABl+i53hrGY8yU IEmjiDmJt5nB1RmSyYkFNLvDeTnIByDI/9ujiPmn5Eis3jqN+koJI9moLYyZ3ficF4yN3oqRk3uK hWisixymt2jCIQrDt9iM9sjCOrmYwUgFJjnDe0qg+XrBqIy2STqRxqiMn7zE0Civg1C5dbvEIcrA mRunUEvMhADKMtnMtXzHpRn/iaFMCcbYjBxbl7kLvMNszLcYiWAbpz8av7fonbXcvM4pw2Y8x5D8 oUIJzMKatn2ssmdrzMoMpux8CEvJsTzKyFGJoYqwjsaor55rCHA6vOOYlZ5M0HhcCUMJkK2pz+qc znMbv/iqlAWABxIrp5fZjHupz0F5uXmJ0rpsz4LgAcccAEyqryu5nZy6wYcamOupkUbqi0ANuSPd oCY9n6iYxrJ4pLcpj0GqjAY8CBOKoI9KCOvJlwzK0xf9zRktyo/bjqVYzP+ryv+MjVc6AfGaxOZ5 n1gQis2LlEsKoG2pyfCLprfpBUPJljMcm3qJrqoYidwbzyrbj4wYniIc2FY6/71oXbbKG9YNwJG3 OcB5iczU2LwgIAM8aaJVPQjSypMgwKacC78gDc6cYMTPjNIf7c2pzKmBigX2e9LZOck0nKR2ap5J GdNQ2c2gyrKl6LZjOQF9a8OXyaRFuZ6vaIrUKaY3QNysXa2vnYgx6caifQQvGQWSuqim2KhK/M6r XQiN7bJaudVGGs63YL6aEKqDsIleYNqR0AJNq44qvQigigibaggLmwj1bd4RebWcKo+hjQijegg3 UN+YQIgSEaiKDAlvfa97zAtUaort3KqMAJ5I6duOcAQTadMUaeG1kLRlipSyLeEiPuIkXuImfuIo nuIqvuKssI6sRSVoy1qBmf+gjAXBp9ACVSAmVSCp5cvilHADERABaxIENBABBiAIEZBcQRABHDsI Qd4ETRDkBG4KXqAAQTBG4JvjTN4E1+zjkJDjdeTdcKIIVXDksGDlTe4HZxMEwuTllbAufRABhSBf M26SQdDlqRAovlwIXtAEfXDnbk6kY14IcJLmg6Apda4Kfd4Hvm0peB7oiyBfhtpKQWDmj9kHsKDn AN4HBPDokJ4IXgAnjtk8cY4IClAFsDA2hj4IZ+Ppn44IyQW12oUIL7DnR9AAUx4KN/DniZ6ggP7q kEDqcl6PbC4mJhrqkxhMlm4KltLrl9nmwP4IttUEhXAEom4IDRAEjwjmYWL/456w5s4uCJ0e7Y9A BsXe7YXg55vymEEgCHAS7p8g5H3QzhHg6uTeju9eCPIeJsNOCKcuCKTO4fGONooA47RwBKseCUnr Dup+K4VAa9Se7nt+A+qe8KGg7k0g8AdfAFFuCevY8e2w75+i73ASodb+jV7QAN4+8MXTC8HU75Lw 8u5AazSQ7vk+CJMD76Yg8hY/C9nO75Xw86XeDliD6fg+5BYaKBpfCqQeBD0fCzIvymIC8+qw68F1 6LelAISQ5LFQAOd+Kbog9FQPCWL/DkifoHGyJqg+CE2g9bCQb1e+9KwQ9ZNA9+wg8nvuB1TwAi3w 9fgO1e4SJFoZ+EGSoEH+/+ihFQFjxAjJpeP1TfiP6AVUEAGkFemTX/mJAMhBbgCqmPJeHyZV4C6G oLSb/6dfU+yhL/h8XgBBjvk/TPib2AAKUO/PAOf9XgUKYPWYRKvaLghs/vu97wd//udsrpTcPvQm GQFBoAAc3wd5jwjdFSZNgKDDHwRs7gU0UOTW//yF8Cb13gTL79tA8wIFkChHLvRDbvScmuOV3jgR MPhfX/0zTgbgbwAF8AJxjpZCDvyEBAh9fUFUfoaHiImKi4yNjo+QBYKTh30FfpOCl34GfV6IEZMN iJl+Ck0FCpMtiaEKhi1BfQaOXk2ZuJuJmQVVnw2ChYpUfRGGwH3CiFRBTf+ffsSWx5PGiqGzhtGv h8jFi2Sahl40fb6goi8KVZM3kO7v8PGL3YLtN0FkfuuChIYRNK34jaokqk87P+T6ADwkySDBIAMZ gcOVSRlBQTSOHLoWEZagfIZu9ek4UVfDJtMEVUN0Q6ChiQ5Tekt05NZCj322+ZtEpYqfhtLkCR1K 9KIgVuA0RlNpKGdAQR0r0srGTtwtlIf2WVwElGKyXZN8MmR6yJagczP9mI3JSdZIPw3crjwUKxxc t7rikl0maKo4URsnNclXgIDdoogTO0o4iFYBrF37+Lmna+egqIIP/uTHanNaP9ckP1pKMUjnppP8 wq1qqOFN0JOetaAU+PL/6r1jBW3rprPbXD9HOCfapzM01mtBKitevlwVNdDV9LKLBbL2W6OvC9tN ODd0R0aRMzkzehr4JF37uk8CuU+sIcajpP/2U3emfG5yEwH9HvpZ6G1LVcfcgIh1hdILfmViWica oQURKTwh0hABl7R0GGyDKCeRSBQpM8mDEM4UHG6hXTLiZ6Fp5JsiFjp1W1orIrIPiId0MkhnyG0y 0XgE9kiUdIIEd9o+mkSAFVrXoXahdtIAVVmJ7xxBpHhGaaakaPWppxt9+R1Cxi2b3DdMH00cJOZd uGFCm4RuCRPaaWQU0KCPdMZzYl80OqfSZ5bRqKZtuVFoCjUFFFoAY1vV/0Laelcqkkk7NhZj6KHP RTofIjE+AtNKmb4omoTPYehnnaTKwyGZn/7kFqoaehdikj8ZJk1oXqUZCUWblAIWVBjWyhSUjZzp SGicdnnMqooweRxgpTYbD63lYIoLPta4VCWofQjKoYZFRVaNrjIKBywj1wgabKiNeEEap+jSB25u Z4n6nbP0goeLTmpRNKd1mMXLkKyX8BJPoY7oOdO7ls163rALB2vsNzSggq6wBSCrn6yiuVrvxozM 9qFyjJG5CHL9puqZoJOY+04BiSKy1sFr1iZoudzKXLNMlwIXCg03ZNppV8nqSjLHRCfSIq9I8plw yReHs+3AOdcYKsK9sv8y7sgNMyLsITdc1c6ZwgKZLMZLF232lX3s69mFtfmJ8ISX0DywyYrESPWH o4TWsnVRvzhfTR/hzE279ARN1tBnF22cImSsKiC/rzatMNuPFGblIg3fXZWljizV99bQ7AX2w15Q zeQ2GifOMec0PYo1oI1iKyhQe9t7M2qmXXm5rkD13bsjneZ74+Cit4sQs7kl1+e8qjdbcV+LcEgu 8n+azOQljdvqSMXuMTJJg5l8F2qLn7v1Wt0PvxjR6Gku9d1SB6XePL3I5F6t0stHLvslpWO0iAGX a0090iUI93yoPCfShfSSNZAF6udr6CpAnGJDPBihqwVk6MbjrnETxM3/r16sSYSNVIMkpkkIYFQR xDMQQYPy/OsrWjuKUSzSjTlFSm2g2YT7rBEfYymgBQXoAtL8sCmuhaVGl0gIyA4jvw82ax8dG97r 3Bazk21iRPYbHA7XxrzQvYZKuZlLAlt3ECySMDifIN8hXtAz4QgQN+CqQj48hq8R8UheTqyXKrrH kgG+DlZvQ6EhbESDFXqhCjlTVgAtZKVMVEEXCbncSVYImuwI4o6g0YlgjoGStdyESN1jzCfQaJkV NkRATcxjnSRRO39hqgEzKkADvNAAetQSOA2IBiEacJD0tIMM6wjgGy8poAY0IYtKMk1yckm50JVj FGQIxfsKCM1QaGYp/3J65DAfqQ49HQGAazPAIZVxSBh2DYaTgSU/ZClMVQ4oLjeLwKW8ApFVleJ5 uKiGFyJFzEYUwBhkcA4N5EmOCASwFLS6GT/J5MLWnKoJ5SlnWFZImibwUjwakeglKemFUFSBCmBK Gj/65s7E0JKSRhNmAyhQy5bOkqUuveURYlpLKx3BUC1AKU3mhIcWGCACCihAO3lXqC0i4qaG0ukh eprURQCxUChtAMvkZIibUoGqdGkq4wyltp7RtJ0lDatYqzfWspr1rEWjGlrXyta2EkWtbo2rXOdq FLra9a5xhSte98rXD+q1r4AN7Mb+KtjCGrZHhD2sYhc7lMQy9rGQbWGEYyNLWcjWMnxdrKxmH1ur zXq2sjRl6WdHS9rSmva0qE2talfL2ta69rWwja1sZ0vb2tr2trjNrW53y9ve+va3wA2ucIdL3OIa 97jITa5yl8vc5jr3udCNrnSnS93qOjcQADs= ------=_NextPart_000_0000_01CA518C.07F46950 Content-Type: text/css; charset="iso-8859-2" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.winespectator.com/css/wso/frames.css BODY { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } DIV { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } BODY { TEXT-ALIGN: center; BACKGROUND-COLOR: #fff } #wrapper { MARGIN: 0px auto; WIDTH: 990px } #header { MARGIN: 0px auto; WIDTH: 990px } #footer { MARGIN: 0px auto; WIDTH: 990px } #leaderBannerAd { MARGIN: 0px auto; WIDTH: 990px } #wrapper { POSITION: relative; TEXT-ALIGN: left; PADDING-BOTTOM: 10px; = PADDING-LEFT: 6px; WIDTH: 978px; PADDING-RIGHT: 6px; PADDING-TOP: 10px } #header { POSITION: relative; MARGIN: 0px auto; BACKGROUND: = url(/images/wso/header-bg-img.gif) #900 repeat-x } #footer { TEXT-ALIGN: left; PADDING-BOTTOM: 20px; WIDTH: 100%; FLOAT: none; = CLEAR: both; BORDER-TOP: #ccc 1px solid } .addclear:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: = "." } .usersCommentsbox:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: = "." } #header .moduleContainer { WIDTH: 330px } #homepageContentBox { WIDTH: 644px; FLOAT: left } #contentBox { WIDTH: 644px; FLOAT: left } #thirdColumn { FLOAT: right } #wideContentBox { WIDTH: 100% } .moduleContainer { WIDTH: 310px } .moduleBreak#homepageContentBox { MARGIN: 17px; HEIGHT: 2px; CLEAR: both } .moduleBreak { MARGIN: 17px; HEIGHT: 2px; CLEAR: both } .moduleBreak { MARGIN: 10px } .borderThick { BORDER-BOTTOM: #c1c95a 2px solid; BORDER-LEFT: #c1c95a 2px solid; = PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BORDER-TOP: = #c1c95a 2px solid; BORDER-RIGHT: #c1c95a 2px solid; PADDING-TOP: 5px } .borderThin { BORDER-BOTTOM: #c1c95a 1px solid; BORDER-LEFT: #c1c95a 1px solid; = PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: = #c1c95a 1px solid; BORDER-RIGHT: #c1c95a 1px solid; PADDING-TOP: 6px } .left { FLOAT: left !important } .right { FLOAT: right !important } .hide { DISPLAY: none } .show { DISPLAY: block } .padding10 { PADDING-BOTTOM: 10px !important; PADDING-LEFT: 10px !important; = PADDING-RIGHT: 10px !important; PADDING-TOP: 10px !important } .bgoptionOne { BACKGROUND-COLOR: #fcfcdf } #header_content { Z-INDEX: 10000; POSITION: fixed; PADDING-BOTTOM: 7px; BACKGROUND-COLOR: = #f6f6f6; PADDING-LEFT: 0px; WIDTH: 100%; BOTTOM: 0px; PADDING-RIGHT: = 0px; FLOAT: left; BORDER-TOP: #999 1px solid; PADDING-TOP: 7px; LEFT: = 0px } #floating_content { Z-INDEX: 10000; POSITION: fixed; PADDING-BOTTOM: 7px; BACKGROUND-COLOR: = #f6f6f6; PADDING-LEFT: 0px; WIDTH: 100%; BOTTOM: 0px; PADDING-RIGHT: = 0px; FLOAT: left; BORDER-TOP: #999 1px solid; PADDING-TOP: 7px; LEFT: = 0px } #header_content DIV { MARGIN: auto } #floating_content DIV { MARGIN: auto } ------=_NextPart_000_0000_01CA518C.07F46950 Content-Type: text/css; charset="iso-8859-2" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.winespectator.com/css/wso/modules.css #headerLogo { FLOAT: left } #headerMenu { FLOAT: left } #headerContent { FLOAT: left } #headerMenu { HEIGHT: 110px } #navigation { TEXT-ALIGN: center; WIDTH: 100%; CLEAR: both } #sublinks { TEXT-ALIGN: center; WIDTH: 100%; CLEAR: both } #navigation { BACKGROUND-COLOR: #991b1e; BORDER-TOP: #fff 2px solid } #sublinks { BACKGROUND-COLOR: #333 } .active-tab-body { DISPLAY: block } #hp_searbox { WIDTH: 644px; FLOAT: left } #hp_searbox { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: = url(/images/wso/homepageSearchBoxBg.gif) no-repeat; PADDING-TOP: 7px } #hpwrsearch { WIDTH: 485px; FLOAT: left !important } #searchtools { BORDER-LEFT: #959d38 3px solid; PADDING-LEFT: 5px; WIDTH: 151px; FLOAT: = right !important } .hpwrsearchclose { BACKGROUND: url(/images/wso/hpcloseSearchBoxBg.gif) no-repeat; HEIGHT: = 7px; CLEAR: both; FONT-SIZE: 7px } #hpSlider { WIDTH: 431px; FLOAT: left !important } #hpdailyWinePicks { WIDTH: 203px !important; FLOAT: right } #hpwhatWeDrink { FLOAT: left } #hpvideos { FLOAT: left } #hpnewsletters { FLOAT: left } #hpblogs { FLOAT: right } #tabBox { FLOAT: right } #hpvideos { BORDER-BOTTOM: #c1c95a 1px solid; BORDER-LEFT: #c1c95a 1px solid; = PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; WIDTH: 298px; PADDING-RIGHT: = 5px; HEIGHT: 310px; BORDER-TOP: #c1c95a 1px solid; BORDER-RIGHT: #c1c95a = 1px solid; PADDING-TOP: 5px } #tabBox .module { BORDER-BOTTOM: #c1c95a 1px solid; BORDER-LEFT: #c1c95a 1px solid; = PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; WIDTH: 298px; PADDING-RIGHT: = 5px; HEIGHT: 274px; CLEAR: both; OVERFLOW: auto; BORDER-TOP: #c1c95a 1px = solid; BORDER-RIGHT: #c1c95a 1px solid; PADDING-TOP: 5px } #feature { FLOAT: none; CLEAR: both } #blog { FLOAT: none; CLEAR: both } #forMembersBox { FLOAT: none; CLEAR: both } #searchBox { FLOAT: none; CLEAR: both } #searchBox2 { FLOAT: none; CLEAR: both } #wrSearchBox { FLOAT: none; CLEAR: both } #searchResults { FLOAT: none; CLEAR: both } #promo { FLOAT: none; CLEAR: both } errorBox { FLOAT: none; CLEAR: both } warningBox { FLOAT: none; CLEAR: both } .navMenuBox { FLOAT: none; CLEAR: both } .usersCommentsbox { FLOAT: none; CLEAR: both } .navMenuBox { BORDER-BOTTOM: #fff 3px solid; BORDER-LEFT: #fff 7px solid; = BACKGROUND-COLOR: #fff; WIDTH: 225px; FLOAT: right; CLEAR: both } .navMenuBox IMG { MARGIN-BOTTOM: 3px } .navMenuBox TABLE { MARGIN: 7px 0px } .navMenuBox TABLE IMG { MARGIN-BOTTOM: 0px } .navMenuBox TABLE.imgcapbox { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN-BOTTOM: = 3px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .navMenuBox TABLE.imgcapbox CAPTION { PADDING-BOTTOM: 5px; MARGIN: 0px auto; PADDING-LEFT: 3px; WIDTH: 99%; = PADDING-RIGHT: 3px; PADDING-TOP: 3px } .navMenuBox TD { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; = PADDING-TOP: 7px } .navMenuBox TR { BACKGROUND-COLOR: #fcfadf } .navMenuBox TR:hover { BACKGROUND-COLOR: #f3f0ca } .navMenuBox TR TH { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = PADDING-TOP: 5px } .navMenuBox TR TH { BACKGROUND-COLOR: #959d38 } .thunbnailImage { MARGIN: 0px 7px 7px 0px; FLOAT: left } .imgcapleft { MARGIN: 0px 7px 7px 0px; FLOAT: left } .imgcapright { MARGIN: 0px 0px 7px 7px; FLOAT: right } .imgcapbox { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: auto; = FLOAT: none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .imgcapbox TD { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; PADDING-TOP: 0px } .imgcapleft CAPTION { TEXT-ALIGN: left; BACKGROUND-COLOR: #fff; WIDTH: 200px; CAPTION-SIDE: = bottom; COLOR: #000 } .imgcapright CAPTION { TEXT-ALIGN: left; BACKGROUND-COLOR: #fff; WIDTH: 200px; CAPTION-SIDE: = bottom; COLOR: #000 } .imgcapbox CAPTION { TEXT-ALIGN: left; BACKGROUND-COLOR: #fff; WIDTH: 200px; CAPTION-SIDE: = bottom; COLOR: #000 } .imgcapleft TD { TEXT-ALIGN: center !important } .imgcapright TD { TEXT-ALIGN: center !important } .imgcapbox TD { TEXT-ALIGN: center !important } .imgcapbox CAPTION { MARGIN: auto; WIDTH: auto } .imgcapleft CAPTION { MARGIN-RIGHT: 7px } .imgcapright CAPTION { MARGIN-LEFT: 7px } CAPTION SPAN.photocredit { TEXT-ALIGN: right; FONT-STYLE: normal; DISPLAY: block } .imgcapleft TH { PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #699; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; COLOR: #fff !important; PADDING-TOP: 3px } .imgcapright TH { PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #699; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; COLOR: #fff !important; PADDING-TOP: 3px } .imgcapbox TH { PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #699; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; COLOR: #fff !important; PADDING-TOP: 3px } .fixHeight { HEIGHT: 225px } .addPadding { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; = PADDING-TOP: 7px } .idborderLinks { BORDER-BOTTOM: #00529f 2px solid; BORDER-LEFT: #00529f 2px solid; = BACKGROUND-COLOR: #eff0f5; BORDER-TOP: #00529f 2px solid; BORDER-RIGHT: = #00529f 2px solid } .idborderLinks TD { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; = PADDING-TOP: 7px } .textAdsBox { TEXT-ALIGN: center; BACKGROUND-COLOR: #ffc } .auctionRow { BACKGROUND-COLOR: #fcfadf } .readPostCommentsBox { PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #fcfadf; PADDING-LEFT: 7px; = PADDING-RIGHT: 7px; HEIGHT: 19px; PADDING-TOP: 7px } .readPostCommentsBox .readMoreIcon { PADDING-LEFT: 23px; BACKGROUND: url(/images/wso/readbutton.gif) = no-repeat; FLOAT: left; HEIGHT: 21px } .readPostCommentsBox P { TEXT-ALIGN: right; MARGIN: 0px } .readPostCommentsBox P { FONT: bold 13px Arial, Helvetica, sans-serif; COLOR: #930 } .readPostCommentsBox A:link { FONT: bold 13px Arial, Helvetica, sans-serif; COLOR: #930 } .readPostCommentsBox A:visited { FONT: bold 13px Arial, Helvetica, sans-serif; COLOR: #930 } .readPostCommentsBox A:hover { FONT: bold 13px Arial, Helvetica, sans-serif; COLOR: #930 } .moduleSponsor { MARGIN: -7px -7px -30px 0px; FLOAT: right } .module .WSmagazine { TEXT-ALIGN: center; BORDER-RIGHT: #999 1px solid } .WSmagazine BIG { FONT-SIZE: 14px; FONT-WEIGHT: bold } .thumbnailTable { MARGIN: 0px 0px 3px; WIDTH: 100px; FLOAT: left } .thumbnailTable TD { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; = PADDING-RIGHT: 10px; PADDING-TOP: 0px } .thumbnailTable { WIDTH: 177px } .thumbnailTable IMG { PADDING-BOTTOM: 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = PADDING-TOP: 7px } .thumbnailTable CAPTION { TEXT-ALIGN: right; MARGIN: 0px 10px 0px 0px; CAPTION-SIDE: bottom } .tdSep { BORDER-RIGHT: #cecece 2px solid } .moduleHeaderNav { PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #959d38; MARGIN: -5px -5px 7px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 7px } #wideContentBox .moduleHeaderNav { MARGIN: -1px 0px 0px } .readNewsletter { PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fcfadf; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; PADDING-TOP: 3px } .newsletterBox { MARGIN: 0px } .newsletterBox TD { PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #fcfadf; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; PADDING-TOP: 5px } .siteZone { BACKGROUND-COLOR: #f00 } #breakingNews { PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #ff9; PADDING-LEFT: 4px; = PADDING-RIGHT: 4px; MARGIN-BOTTOM: 7px; PADDING-TOP: 4px } .noMemberModule { BORDER-RIGHT-WIDTH: 5px; BACKGROUND-COLOR: #fcfadf; MARGIN: 7px 0px; = BORDER-TOP-WIDTH: 5px; BORDER-BOTTOM-WIDTH: 5px; BORDER-LEFT-WIDTH: 5px } #feature .noMemberModule { WIDTH: 390px } #blog .noMemberModule { WIDTH: 390px } .videos { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: = 0px; MARGIN-BOTTOM: 12px; FLOAT: left; PADDING-TOP: 0px } .videos IMG { MARGIN: 0px 7px 7px 0px; WIDTH: 160px; FLOAT: left } .videotxt { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } .videotxt H4 { MARGIN: 0px } .videotxt P { MARGIN: 0px } .videoSearchTop TD { HEIGHT: 40px } .videoSearchTop { BACKGROUND-COLOR: #fff; WIDTH: 100% } .videoSearchResults { BACKGROUND-COLOR: #fff; WIDTH: 100% } .videoSearchTop FORM { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } .videoSearchTop .vpagination { BACKGROUND-COLOR: #fcfadf } .videoSearchTop .vpagination P { MARGIN: 10px } .videoSearchTop .vpagination SPAN { PADDING-BOTTOM: 12px; BACKGROUND-COLOR: #600; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; COLOR: #fff; PADDING-TOP: 12px } .videoSearchResults { BORDER-BOTTOM: #600 3px solid; BORDER-LEFT: #999 1px solid; = PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = BORDER-TOP: #600 3px solid; PADDING-TOP: 0px } .videoSearchResults TH { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: left; PADDING-BOTTOM: 3px; = PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: = url(/images/wso/videoSearchHeaderbg.gif); FONT-SIZE: 16px; PADDING-TOP: = 3px } .videoSearchResults TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; = PADDING-TOP: 3px } .videoSearchResults TH { BORDER-RIGHT: #999 1px solid } .videoSearchResults TD { BORDER-RIGHT: #999 1px solid } .videoSearchResults TH A:link { TEXT-TRANSFORM: uppercase; COLOR: #600 } .videoSearchResults TH A:visited { TEXT-TRANSFORM: uppercase; COLOR: #600 } .videoSearchResults TH A:hover { TEXT-TRANSFORM: uppercase; COLOR: #600 } .videoSearchResults TH SPAN { TEXT-TRANSFORM: uppercase; COLOR: #999; FONT-SIZE: 9px } .videoSearchResults #unrotatetr { BACKGROUND-COLOR: #ececec } .videoSearchResults #rotatetr:hover { BACKGROUND-COLOR: #ececec } .videoSearchResults #rotatetr { BACKGROUND-COLOR: #fff } .videoSearchResults .selectedCol { BACKGROUND: #600 } .videoSearchResults .selectedCol A:link { COLOR: #fff } .videoSearchResults .selectedCol A:visited { COLOR: #fff } .videoSearchResults .selectedCol A:hover { COLOR: #fff } .videoSearchResults .selectedCol IMG { VERTICAL-ALIGN: middle } .usersCommentsbox { BORDER-BOTTOM: #c1c95a 1px solid; BORDER-LEFT: #c1c95a 1px solid; = PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fcfadf; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; HEIGHT: 100%; BORDER-TOP: #c1c95a 1px solid; = BORDER-RIGHT: #c1c95a 1px solid; PADDING-TOP: 3px } .usersCommentsbox .user { PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #f3f0ca; PADDING-LEFT: 7px; = PADDING-RIGHT: 7px; PADDING-TOP: 7px } .usersCommentsbox .comments { =09 } #pwlmenu { PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #fcfadf; PADDING-LEFT: 10px; = PADDING-RIGHT: 10px; PADDING-TOP: 10px } #wrSearchBox { BORDER-BOTTOM-COLOR: #900 !important; BORDER-TOP-COLOR: #900 = !important; BORDER-RIGHT-COLOR: #900 !important; BORDER-LEFT-COLOR: #900 = !important } .searchBox .searchforbox IMG { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 140px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; PADDING-TOP: 0px } .searchBox2 .searchforbox IMG { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 140px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; PADDING-TOP: 0px } .searchBox .searchforbox INPUT { MARGIN: 12px 0px } .searchBox2 .searchforbox INPUT { MARGIN: 12px 0px } .searchBox TH.active A:link { COLOR: #ccc } .searchBox .navBarLarge { MARGIN: 3px 12px 0px; WIDTH: 620px; BACKGROUND: = url(/images/wso/searchNavLargeBg.gif) no-repeat; HEIGHT: 46px } .searchBox2 .navBarLarge { MARGIN: 3px 12px 0px; WIDTH: 620px; BACKGROUND: = url(/images/wso/searchNavLargeBg.gif) no-repeat; HEIGHT: 46px } .searchBox .navBarLarge TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .searchBox2 .navBarLarge TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .searchBox .navBarLarge LABEL { COLOR: #fff; FONT-SIZE: 12px } .searchBox2 .navBarLarge LABEL { COLOR: #fff; FONT-SIZE: 12px } .searchBox LABEL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; COLOR: #900; FONT-SIZE: 12px; PADDING-TOP: 0px } .searchBox2 LABEL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; COLOR: #900; FONT-SIZE: 12px; PADDING-TOP: 0px } .wrSearchBox LABEL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; COLOR: #900; FONT-SIZE: 12px; PADDING-TOP: 0px } .searchBox FORM LABEL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; COLOR: #900; FONT-SIZE: 12px; PADDING-TOP: 0px } .searchBox FORM BUTTON { LINE-HEIGHT: normal } .searchBox2 FORM BUTTON { LINE-HEIGHT: normal } .searchBox2 .navbar { TEXT-ALIGN: center; PADDING-BOTTOM: 15px; MARGIN: 3px; PADDING-LEFT: = 10px; PADDING-RIGHT: 10px; BACKGROUND: url(/images/wso/searchNavBg.gif) = no-repeat; PADDING-TOP: 15px } #promo { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; = BACKGROUND-COLOR: #ddd; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc = 2px solid } #searchLegend { BORDER-BOTTOM: #00529f 2px solid; BORDER-LEFT: #00529f 2px solid; = BACKGROUND-COLOR: #bdd0f3; BORDER-TOP: #00529f 2px solid; BORDER-RIGHT: = #00529f 2px solid } TABLE#headlinesTable { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 10px = 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-COLLAPSE: = collapse; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.headlinesTable { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 10px = 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-COLLAPSE: = collapse; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } #headlinesTable TR TD IMG { MARGIN: 0px 7px 0px 0px } .headlinesTable TR TD IMG { MARGIN: 0px 7px 0px 0px } #WAIT { BACKGROUND-COLOR: #fcfadf } #WAIT DIV.alignLeft { WIDTH: 35% !important } #WAIT DIV.alignRight { BORDER-LEFT: #c1c95a 1px solid; WIDTH: 60% !important } #WAIT #archive { BACKGROUND-COLOR: #f3f0ca; MARGIN: 7px 0px 0px; DISPLAY: block } #errorBox { BORDER-BOTTOM-COLOR: #900 !important; BORDER-TOP-COLOR: #900 = !important; BACKGROUND: url(/images/wso/wrong.png) no-repeat 1% 50%; = BORDER-RIGHT-COLOR: #900 !important; BORDER-LEFT-COLOR: #900 !important } .pwl { BORDER-BOTTOM: #c1c95a 1px solid; POSITION: relative !important; = BORDER-LEFT: #c1c95a 1px solid; PADDING-BOTTOM: 6px; MARGIN: 7px 0px; = PADDING-LEFT: 6px; PADDING-RIGHT: 6px; CLEAR: both; BORDER-TOP: #c1c95a = 1px solid; BORDER-RIGHT: #c1c95a 1px solid; PADDING-TOP: 6px } .pwl .mycellar { BORDER-BOTTOM: #c1c95a 1px solid; BORDER-LEFT: #c1c95a 1px solid; = PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #fcfadf; PADDING-LEFT: 6px; = PADDING-RIGHT: 6px; HEIGHT: 50%; CLEAR: both; BORDER-TOP: #c1c95a 1px = solid; BORDER-RIGHT: #c1c95a 1px solid; PADDING-TOP: 6px } #pwlHeadFoot .pwltotals { BORDER-BOTTOM: #c1c95a 1px solid; BORDER-LEFT: #c1c95a 1px solid; = BACKGROUND: #4e4e4e; COLOR: #fff; BORDER-TOP: #c1c95a 1px solid; = BORDER-RIGHT: #c1c95a 1px solid } #siteTour { BORDER-BOTTOM: #c1c95a 2px solid; BORDER-LEFT: #c1c95a 2px solid; = BACKGROUND-COLOR: #fcfadf !important; BORDER-TOP: #c1c95a 2px solid; = BORDER-RIGHT: #c1c95a 2px solid } .classifiedsBox { PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #fcfadf; MARGIN: 0px auto; = PADDING-LEFT: 5px; WIDTH: 600px; PADDING-RIGHT: 5px; PADDING-TOP: 5px } .classifiedsBoxleft { BACKGROUND-COLOR: #fff; MARGIN: 0px 0px 0px 60px; WIDTH: 400px; FLOAT: = left } .classifiedsBoxright { BACKGROUND-COLOR: #fff; MARGIN: 0px 60px 0px 0px; WIDTH: 400px; FLOAT: = right } .classifiedsNavBar { MARGIN: 10px 0px; CLEAR: both } .classifiedsNavBar TD { TEXT-ALIGN: center; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 0px; = BACKGROUND-COLOR: #fafadf; MARGIN: 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; HEIGHT: 33px; COLOR: #900; VERTICAL-ALIGN: middle; = FONT-WEIGHT: bold; PADDING-TOP: 0px } .classifiedsNavBar .cl-active { BACKGROUND-COLOR: #959d38 } .classifiedsNavBar TD:hover { BACKGROUND-COLOR: #959d38 } .classifiedsNavBar .cl-open { BORDER-LEFT: medium none; BACKGROUND: #f3f0ca } .classifiedsNavBar .cl-open:hover { BORDER-LEFT: medium none; BACKGROUND: #f3f0ca } .classifiedsNavBar .cl-close { BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px; = PADDING-LEFT: 0px; WIDTH: 180px; PADDING-RIGHT: 0px; BACKGROUND: = #fafadf; PADDING-TOP: 0px } .classifiedsNavBar A:link { COLOR: #7a7e1d } .classifiedsNavBar A:active { COLOR: #7a7e1d } .classifiedsNavBar A:visited { COLOR: #7a7e1d } .classifiedsNavBar .cl-active A:hover { COLOR: #7a7e1d } .classifiedsNavBar A:hover { COLOR: #600 } .classifiedsNavBar .cl-active A:link { COLOR: #fff } .classifiedsNavBar .cl-active A:active { COLOR: #fff } .classifiedsNavBar .cl-active A:visited { COLOR: #fff } .classifiedsNavBar .cl-active A:hover { COLOR: #fff } #classifiedsMainBox { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #7a7e1d; PADDING-LEFT: 0px; = WIDTH: 976px; PADDING-RIGHT: 0px; HEIGHT: 324px; CLEAR: both; = PADDING-TOP: 0px } #classifiedsMainBox .classifiedsItemBox { PADDING-BOTTOM: 0px; MARGIN: 6px; PADDING-LEFT: 0px; WIDTH: 236px; = PADDING-RIGHT: 0px; BACKGROUND: #fcfadf; FLOAT: left; HEIGHT: 310px; = PADDING-TOP: 0px } #classifiedsMainBox .classifiedsItemBox A { COLOR: #7a7e1d } #classifiedsMainBox .classifiedsItemBox P { COLOR: #7a7e1d } #classifiedsMainBox .classifiedsItemBox H4 { PADDING-BOTTOM: 0px; LINE-HEIGHT: normal; PADDING-LEFT: 7px; = PADDING-RIGHT: 7px; PADDING-TOP: 0px } #classifiedsMainBox .classifiedsItemBox P { PADDING-BOTTOM: 0px; LINE-HEIGHT: normal; PADDING-LEFT: 7px; = PADDING-RIGHT: 7px; PADDING-TOP: 0px } #classifiedsMainBox .marginpad { MARGIN-LEFT: 0px; MARGIN-RIGHT: 6px; _margin-left: 0; _margin-right: = 4px } #footer .moduleContainer { MARGIN: auto; WIDTH: 990px !important } #footer .moduleContainer DIV { TEXT-ALIGN: center; MARGIN: auto } .nameThatGame TH { PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #c00; PADDING-LEFT: 2px; = PADDING-RIGHT: 2px; COLOR: #fff; PADDING-TOP: 7px } .nameThatGame TH BIG { COLOR: #fff } .nameThatGame TD { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; = PADDING-RIGHT: 4px; PADDING-TOP: 4px } .nameThatGame TR.correct { BACKGROUND-COLOR: #e3e3e3 } .nameThatGame TD.score { TEXT-ALIGN: center; COLOR: #666; VERTICAL-ALIGN: middle; FONT-WEIGHT: = bold } .menulist { WIDTH: 155px; VERTICAL-ALIGN: top } .menulist A { FONT-WEIGHT: bold } .menulist P { MARGIN: 10px 0px 10px 5px; FONT: 14px Arial, Helvetica, sans-serif } .menulist P.vcbreaker { LINE-HEIGHT: 0; BACKGROUND: url(/images/wso/vcbreaker.gif) no-repeat; = HEIGHT: 10px } .menulist #highlighted { PADDING-BOTTOM: 15px; MARGIN: -10px 0px; PADDING-LEFT: 5px; = PADDING-RIGHT: 0px; BACKGROUND: #f3f0ca; COLOR: #900; FONT-WEIGHT: bold; = PADDING-TOP: 15px } .menulist #highlighted A:link { COLOR: #900 } TABLE .menulist #highlighted A:visited { COLOR: #900 } .vintagelistheader { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 449px; = PADDING-RIGHT: 0px; FONT: 7px Arial, Helvetica, sans-serif; PADDING-TOP: = 0px } .vintagelist { PADDING-BOTTOM: 1px; BACKGROUND-COLOR: #fcfadf; MARGIN: 0px; = PADDING-LEFT: 15px; PADDING-RIGHT: 15px; VERTICAL-ALIGN: middle; = PADDING-TOP: 1px } .vintagelist P { FONT: 14px/1.5em Arial, Helvetica, sans-serif } .vintagelistheader { WIDTH: 489px } .vintagecontent { WIDTH: 489px } .vintagecontenttable { WIDTH: 489px } .vintagecontent { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #f3f0ca; PADDING-LEFT: 30px; = PADDING-RIGHT: 10px; PADDING-TOP: 0px } .vintagelistheader { PADDING-BOTTOM: 7px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; BACKGROUND: #f3f0ca; PADDING-TOP: 7px } .vintagelistheader H2 { MARGIN: 0px 0px 0px 10px; COLOR: #900 } .vintagelistheader H2 SPAN { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: = right; FONT-SIZE: 12px; PADDING-TOP: 3px } .vintagecontenttable { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fcfadf; MARGIN: 0px; = PADDING-LEFT: 10px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; = PADDING-TOP: 0px } .vintagecontenttable TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; = PADDING-TOP: 3px } .vintagecontenttable TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; COLOR: = #900; PADDING-TOP: 3px } .vintagecontenttable .border { BORDER-BOTTOM: #c0c0c0 1px solid; TEXT-ALIGN: center; BORDER-RIGHT: = #c0c0c0 1px solid } .vintagecontenttable .borders { BORDER-BOTTOM: #c0c0c0 1px solid } #vintageGrid { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fcfadf; MARGIN: 0px; = PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #vintageGrid A:link { COLOR: #333 } #vintageGrid A:visited { COLOR: #333 } #vintageGrid TD { BORDER-BOTTOM: #c1c95a 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: = 10px; MARGIN: auto; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; FONT: 12px = Arial, Helvetica, sans-serif; BORDER-RIGHT: #c1c95a 1px solid; = PADDING-TOP: 10px } #vintageGrid TD.vintgridaxis { BORDER-BOTTOM-COLOR: #fcfadf; BACKGROUND-COLOR: #fff; = BORDER-RIGHT-COLOR: #fcfadf } #vintageGrid TD.nyr { BACKGROUND-COLOR: #f5f3f4 } #vintageGrid TD.drinkhold { BACKGROUND-COLOR: #f2e77e } #vintageGrid TD.drink { BACKGROUND-COLOR: #6d92a0 } #vintageGrid TD.hold { BACKGROUND-COLOR: #a24444 } #vintageGrid TD.pastpeak { BACKGROUND-COLOR: #8357a0 } #vintageGrid TD.region { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; = PADDING-RIGHT: 10px; BACKGROUND: = url(/images/wso/vintagegrid-td-regionbg.gif) no-repeat right top; COLOR: = #600; PADDING-TOP: 0px } #vintageGrid TD.region1 { TEXT-ALIGN: left; PADDING-LEFT: 15px } #vintageGrid TD.region2 { TEXT-ALIGN: left; PADDING-LEFT: 30px } #vintageGrid TD.regiontopline { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: = 0px; BACKGROUND-COLOR: #f3f0ca; MARGIN: 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; HEIGHT: 5px; BORDER-TOP: medium none; BORDER-RIGHT: = medium none; PADDING-TOP: 0px } #vintageGrid TD.regiontopline P { TEXT-ALIGN: center; MARGIN: 0px 10px; FONT: 12px Arial, Helvetica, = sans-serif } #vintageGrid TD.regiontopline IMG { VERTICAL-ALIGN: middle } #vintageGrid TD.regiontopline SPAN { PADDING-BOTTOM: 8px; BACKGROUND-COLOR: #f3f0ca; PADDING-LEFT: 4px; = PADDING-RIGHT: 4px; FONT: bold 14px Arial, Helvetica, sans-serif; COLOR: = #600; PADDING-TOP: 8px } #vintageGrid TD.regiontopline A:link { COLOR: #7a7e1d } #vintageGrid TD.regiontopline A:visited { COLOR: #7a7e1d } #vintageGrid TD.region1 A:link { FONT: bold 14px Arial, Helvetica, sans-serif; COLOR: #900 } #vintageGrid TD.region1 A:visited { FONT: bold 14px Arial, Helvetica, sans-serif; COLOR: #900 } #vintageGrid TD.region2 A:link { FONT: bold 14px Arial, Helvetica, sans-serif; COLOR: #900 } #vintageGrid TD.region2 A:visited { FONT: bold 14px Arial, Helvetica, sans-serif; COLOR: #900 } #vintageGrid TD.region A:link { FONT: bold 14px Arial, Helvetica, sans-serif; COLOR: #900 } #vintageGrid TD.region A:visited { FONT: bold 14px Arial, Helvetica, sans-serif; COLOR: #900 } #vintageGrid TD.footer { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: = 20px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; BORDER-TOP: medium none; = BORDER-RIGHT: medium none; PADDING-TOP: 20px } #vintageGrid TD.footer P { FONT: 14px Arial, Helvetica, sans-serif } .rightsidebox { BORDER-BOTTOM: white 5px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px = 0px 7px; PADDING-LEFT: 0px; WIDTH: 200px; PADDING-RIGHT: 0px; FLOAT: = right; CLEAR: both; PADDING-TOP: 0px } .leftsidebox { BORDER-BOTTOM: white 5px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 7px = 0px 0px; PADDING-LEFT: 0px; WIDTH: 200px; PADDING-RIGHT: 0px; FLOAT: = left; PADDING-TOP: 0px } .rightsidebox #imagebox { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .leftsidebox #imagebox { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rightsidebox #seealsobox { TEXT-ALIGN: left; PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #ccc; = PADDING-LEFT: 15px; PADDING-RIGHT: 3px; FONT: bold 16px Arial, = Helvetica, sans-serif; COLOR: #600; PADDING-TOP: 5px } .rightsidebox #seealsotdimg { PADDING-BOTTOM: 1px; BACKGROUND-COLOR: #b5c6d8; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; PADDING-TOP: 1px } .rightsidebox #seealsotdimg DIV { WIDTH: 24px; BACKGROUND: url(/images/wso/arrow_inside.gif) no-repeat; = HEIGHT: 24px } .rightsidebox #seealsotditem { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT: 12px = Arial, Helvetica, sans-serif; VERTICAL-ALIGN: top; PADDING-TOP: 2px } .rightsidebox P { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: = 3px; FONT: italic 9pt Georgia, "Times New Roman", Times, serif; = PADDING-TOP: 3px } .leftsidebox P { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: = 3px; FONT: italic 9pt Georgia, "Times New Roman", Times, serif; = PADDING-TOP: 3px } .rightsidebox #caption { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: = 3px; FONT: italic 9pt Georgia, "Times New Roman", Times, serif; = PADDING-TOP: 3px } .leftsidebox #caption { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: = 3px; FONT: italic 9pt Georgia, "Times New Roman", Times, serif; = PADDING-TOP: 3px } .rightsidebox .caption { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: = 3px; FONT: italic 9pt Georgia, "Times New Roman", Times, serif; = PADDING-TOP: 3px } .leftsidebox .caption { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: = 3px; FONT: italic 9pt Georgia, "Times New Roman", Times, serif; = PADDING-TOP: 3px } TABLE.rightsidebox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-COLLAPSE: collapse; = BORDER-TOP: 0px; BORDER-RIGHT: 0px } TABLE.leftsidebox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-COLLAPSE: collapse; = BORDER-TOP: 0px; BORDER-RIGHT: 0px } #feature TABLE[align=3Dright] { CLEAR: right } #trhighlight { BACKGROUND-COLOR: #d9e5f1 } #trunhighlight:hover { BACKGROUND-COLOR: #d9e5f1 } #trunhighlight { BACKGROUND-COLOR: #eff2f7 } .blueboxtext { WIDTH: 275px } .blueboxtext TD IMG { DISPLAY: inline } .navMenuBox .blueboxtext TD { PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #e3e3e3; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; PADDING-TOP: 5px } .navMenuBox TD.blueboxheader { TEXT-ALIGN: left; PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #ccc; = PADDING-LEFT: 15px; PADDING-RIGHT: 3px; FONT: bold 16px Arial, = Helvetica, sans-serif; COLOR: #600; PADDING-TOP: 5px } ------=_NextPart_000_0000_01CA518C.07F46950 Content-Type: text/css; charset="iso-8859-2" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.winespectator.com/css/wso/fonts.css H1 { MARGIN: 12px 0px; FONT-FAMILY: Arial, Helvetica, sans-serif } H2 { MARGIN: 12px 0px; FONT-FAMILY: Arial, Helvetica, sans-serif } H3 { MARGIN: 12px 0px; FONT-FAMILY: Arial, Helvetica, sans-serif } H4 { MARGIN: 12px 0px; FONT-FAMILY: Arial, Helvetica, sans-serif } H5 { MARGIN: 12px 0px; FONT-FAMILY: Arial, Helvetica, sans-serif } H6 { MARGIN: 12px 0px; FONT-FAMILY: Arial, Helvetica, sans-serif } P { FONT-FAMILY: Arial, Helvetica, sans-serif } LI { FONT-FAMILY: Arial, Helvetica, sans-serif } DL { FONT-FAMILY: Arial, Helvetica, sans-serif } DT { FONT-FAMILY: Arial, Helvetica, sans-serif } CAPTION { FONT-FAMILY: Arial, Helvetica, sans-serif } TH { FONT-FAMILY: Arial, Helvetica, sans-serif } TD { FONT-FAMILY: Arial, Helvetica, sans-serif } FORM { FONT-FAMILY: Arial, Helvetica, sans-serif } UL { FONT-FAMILY: Arial, Helvetica, sans-serif } LI { FONT-FAMILY: Arial, Helvetica, sans-serif } FORM INPUT[type=3Dtext] { BORDER-BOTTOM: #7a7e1d 1px solid; BORDER-LEFT: #7a7e1d 1px solid; = BACKGROUND-COLOR: #fcfadf; BORDER-COLLAPSE: collapse; BORDER-TOP: = #7a7e1d 1px solid; BORDER-RIGHT: #7a7e1d 1px solid } FORM INPUT[type=3Dpassword] { BORDER-BOTTOM: #7a7e1d 1px solid; BORDER-LEFT: #7a7e1d 1px solid; = BACKGROUND-COLOR: #fcfadf; BORDER-COLLAPSE: collapse; BORDER-TOP: = #7a7e1d 1px solid; BORDER-RIGHT: #7a7e1d 1px solid } FORM TEXTAREA { BORDER-BOTTOM: #7a7e1d 1px solid; BORDER-LEFT: #7a7e1d 1px solid; = BACKGROUND-COLOR: #fcfadf; BORDER-COLLAPSE: collapse; BORDER-TOP: = #7a7e1d 1px solid; BORDER-RIGHT: #7a7e1d 1px solid } FORM SELECT { BORDER-BOTTOM: #7a7e1d 1px solid; BORDER-LEFT: #7a7e1d 1px solid; = BACKGROUND-COLOR: #fcfadf; BORDER-COLLAPSE: collapse; BORDER-TOP: = #7a7e1d 1px solid; BORDER-RIGHT: #7a7e1d 1px solid } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: = 0px } TD { VERTICAL-ALIGN: top } TH { VERTICAL-ALIGN: top } HR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; = BACKGROUND-COLOR: #ccc; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = BORDER-COLLAPSE: collapse; HEIGHT: 1px; COLOR: #ccc; BORDER-TOP: 0px; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } A:link { COLOR: #036; TEXT-DECORATION: none } A:active { COLOR: #036 } A:visited { COLOR: #7693b0; TEXT-DECORATION: none } A:hover { TEXT-DECORATION: underline } H1 { MARGIN: 5px 0px 10px; BACKGROUND: url(/images/wso/headerNew_bg.gif) = no-repeat 0px 60%; COLOR: #acb161; CLEAR: both; FONT-SIZE: 36px; = FONT-WEIGHT: normal } H1 SPAN { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; = PADDING-RIGHT: 10px; PADDING-TOP: 0px } H2 { FONT-SIZE: 24px } H3 { FONT-SIZE: 18px } H4 { FONT-SIZE: 16px } H5 { FONT-SIZE: 14px } H6 { FONT-SIZE: 12px } H2 { COLOR: #600 } H3 { COLOR: #600 } H4 { COLOR: #600 } H5 { COLOR: #600 } H6 { COLOR: #600 } H2 A:link { COLOR: #600 } H3 A:link { COLOR: #600 } H4 A:link { COLOR: #600 } H5 A:link { COLOR: #600 } H6 A:link { COLOR: #600 } H2 A:visited { COLOR: #900 } H3 A:visited { COLOR: #900 } H4 A:visited { COLOR: #900 } H5 A:visited { COLOR: #900 } H6 A:visited { COLOR: #900 } P { LINE-HEIGHT: 1.3; COLOR: #333; FONT-SIZE: 10pt } LI { LINE-HEIGHT: 1.3; COLOR: #333; FONT-SIZE: 10pt } DL { LINE-HEIGHT: 1.3; COLOR: #333; FONT-SIZE: 10pt } DT { LINE-HEIGHT: 1.3; COLOR: #333; FONT-SIZE: 10pt } CAPTION { LINE-HEIGHT: 1.3; COLOR: #333; FONT-SIZE: 10pt } TH { LINE-HEIGHT: 1.3; COLOR: #333; FONT-SIZE: 10pt } TD { LINE-HEIGHT: 1.3; COLOR: #333; FONT-SIZE: 10pt } FORM { LINE-HEIGHT: 1.3; COLOR: #333; FONT-SIZE: 10pt } CAPTION { TEXT-ALIGN: left !important; CAPTION-SIDE: bottom !important; FONT: = italic 9pt Georgia, "Times New Roman", Times, serif } #header A:link { COLOR: #fff } #header A:active { COLOR: #fff } #header A:visited { COLOR: #fff } #headerMenu A:visited { COLOR: #ccc } #headerLogo IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 10px 0px 10px 10px; = BORDER-TOP: 0px; BORDER-RIGHT: 0px } #headerMenu P { TEXT-ALIGN: right; MARGIN: 6px 9px 0px 0px; COLOR: #fff } #headerMenu P SPAN { BORDER-BOTTOM: #fff 1px solid; PADDING-BOTTOM: 2px; FONT-WEIGHT: bold } .headerSearchModule { TEXT-ALIGN: right; BACKGROUND: = url(/images/wso/search-header-bg-img.gif) no-repeat; HEIGHT: 39px } .headerSearchModule FORM { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: = 6px; PADDING-TOP: 3px } .headerSearchModule FORM INPUT[type=3Dtext] { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; WIDTH: = 100px; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .headerAdModule { MARGIN: 4px 0px 0px 20px; CLEAR: both } .headerAdModule P { TEXT-ALIGN: center; MARGIN: 0px } #navigation .show { DISPLAY: inline } #navigation UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } #sublinks UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } #navigation UL LI { LINE-HEIGHT: 30px; LIST-STYLE-TYPE: none; DISPLAY: inline; COLOR: #fff; = LIST-STYLE-IMAGE: none } #sublinks UL LI { LINE-HEIGHT: 30px; LIST-STYLE-TYPE: none; DISPLAY: inline; COLOR: #fff; = LIST-STYLE-IMAGE: none } #navigation UL LI A { PADDING-BOTTOM: 9px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; COLOR: = #fff; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 7px } #sublinks UL LI A { PADDING-BOTTOM: 9px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; COLOR: = #fff; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 7px } #sublinks UL LI A { PADDING-BOTTOM: 8px; MARGIN: 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; FONT-WEIGHT: normal; PADDING-TOP: 8px } #navigation UL LI A:hover { BACKGROUND-COLOR: #333 } #navigation .show { BACKGROUND-COLOR: #333 } #sublinks UL LI A:hover { TEXT-DECORATION: underline } #leaderBannerAd P { PADDING-BOTTOM: 3px; MARGIN: 0px auto; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; PADDING-TOP: 3px } #homepageContentBox A:link { COLOR: #333 } #homepageContentBox A:active { COLOR: #333 } #homepageContentBox A:visited { COLOR: #333 } #homepageContentBox A:hover { COLOR: #333 } #homepageContentBox H3 { TEXT-ALIGN: left; MARGIN: 0px 0px 10px; BACKGROUND: = url(/images/wso/headerNew_bg.gif) no-repeat 0px 55%; COLOR: #acb161; = CLEAR: both; FONT-SIZE: 20px !important } #homepageContentBox H3 A:link { COLOR: #acb161 } #homepageContentBox H3 A:active { COLOR: #acb161 } #homepageContentBox H3 A:visited { COLOR: #acb161 } #homepageContentBox H3 A:hover { COLOR: #acb161 } #homepageContentBox H3 SPAN { BACKGROUND-COLOR: #fff } #hpwrsearch P { MARGIN: 7px 0px; FONT-SIZE: 15px !important } #hpwrsearch FORM { MARGIN: 0px 20px 5px } #hpwrsearch FORM P.fontColor3 { MARGIN-TOP: 12px } #hpwrsearch FORM INPUT[type=3Dtext] { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 300px; PADDING-RIGHT: = 3px; PADDING-TOP: 3px } #loginMemberBox H6 { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #959d38; = MARGIN: -6px -6px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; COLOR: = #fff; PADDING-TOP: 3px } #loginMemberBox H6 A:link { COLOR: #fff } #loginMemberBox H6 A:visited { COLOR: #fff } #loginMemberBox P IMG { MARGIN: 0px 3px 0px 0px; FLOAT: left !important } #loginMemberBox TABLE { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; BORDER-COLLAPSE: collapse; PADDING-TOP: 0px } #loginMemberBox P { FONT-SIZE: 8pt !important } #loginMemberBox TABLE TD P { FONT-SIZE: 8pt !important } #loginMemberBox TABLE TD LI { FONT-SIZE: 8pt !important } #loginMemberBox FORM { MARGIN: 0px } #loginMemberBox FORM INPUT[type=3Dtext] { MARGIN: 3px } #loginMemberBox FORM INPUT[type=3Dpassword] { MARGIN: 3px } #loginMemberBox FORM INPUT[type=3Dtext] { WIDTH: 135px } #loginMemberBox FORM INPUT[type=3Dpassword] { WIDTH: 135px } #hpTopSearchBox FORM { MARGIN: 7px 0px } #hpTopSearchBox FORM INPUT[type=3Dtext] { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; WIDTH: = 300px; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #hpdailyWinePicks UL LI { LINE-HEIGHT: 1.1; MARGIN-BOTTOM: 5px } #topofSlider { BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; WIDTH: = 428px; BACKGROUND: = url(/contentimage/wso/static/top100/2009/Top100_09_slbg.jpg); HEIGHT: = 58px; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid } #topofSlider P { PADDING-RIGHT: 4px; FLOAT: right } #topofSlider .module { WIDTH: 236px } #topofSlider .module { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: = 0px; PADDING-TOP: 0px } #topofSlider .module IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: = 0px; PADDING-TOP: 0px } #topofSlider .module TABLE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: = 0px; PADDING-TOP: 0px } #topofSlider .module TABLE TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: = 0px; PADDING-TOP: 0px } #topofSlider .module P { PADDING-RIGHT: 0px; FLOAT: none } #countdownModule P { TEXT-ALIGN: center; MARGIN: 0px auto 12px } #thirdColumn P { TEXT-ALIGN: center } #thirdColumn .module P { TEXT-ALIGN: left } #hpwhatWeDrink A:link { COLOR: #7a7e1d } #hpblogs A:link { COLOR: #7a7e1d } #hpvideos A:link { COLOR: #7a7e1d } #tabBox A:link { COLOR: #7a7e1d } #hpnewsletters A:link { COLOR: #7a7e1d } #hpwhatWeDrink A:visited { COLOR: #acb161 } #hpblogs A:visited { COLOR: #acb161 } #hpvideos A:visited { COLOR: #acb161 } #tabBox A:visited { COLOR: #acb161 } #hpnewsletters A:visited { COLOR: #acb161 } .module H5 { BORDER-BOTTOM: #90918c 1px solid; TEXT-ALIGN: left; PADDING-BOTTOM: = 3px; MARGIN: 0px 0px 5px; COLOR: #600 } .module H5 A:link { COLOR: #600 !important } .module H5 A:active { COLOR: #600 !important } .module H5 A:visited { COLOR: #600 !important } .module H5 A:hover { COLOR: #600 !important } .module TABLE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 10px 0px 0px; WIDTH: = 100%; BORDER-COLLAPSE: collapse; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .module TABLE TD P:first-child { MARGIN-TOP: 0px } .module .headlinesTable P { MARGIN-TOP: 0px } .module UL { MARGIN-TOP: 0px; PADDING-LEFT: 0px; MARGIN-LEFT: 16px } .module P A:link { COLOR: #7a7e1d } .module LI A:link { COLOR: #7a7e1d } .module DT A:link { COLOR: #7a7e1d } .module DD A:link { COLOR: #7a7e1d } .module TD A:link { COLOR: #7a7e1d } .module P A:visited { COLOR: #acb161 } .module LI A:visited { COLOR: #acb161 } .module DT A:visited { COLOR: #acb161 } .module DD A:visited { COLOR: #acb161 } .module TD A:visited { COLOR: #acb161 } .headlineList TD P { MARGIN: 0px 0px 12px } .headlineList TD IMG { MARGIN-TOP: 0px !important } .miniModule P { FONT-SIZE: 8pt } #feature H2 { FONT-FAMILY: Georgia, "Times New Roman", Times, serif !important; = COLOR: #600 } #feature H4 { COLOR: #000 } #feature H5 { BORDER-BOTTOM: medium none; COLOR: #600 } #feature { FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #333; FONT-SIZE: 10pt } #feature CAPTION { FONT-STYLE: italic; FONT-FAMILY: Georgia, "Times New Roman", Times, = serif; FONT-SIZE: 9pt } .caption { FONT-STYLE: italic; FONT-FAMILY: Georgia, "Times New Roman", Times, = serif; FONT-SIZE: 9pt } #feature .webexclusive TABLE { BORDER-BOTTOM: #a16109 3px solid; BORDER-LEFT: #a16109 3px solid; = WIDTH: 644px; BORDER-TOP: #a16109 3px solid; BORDER-RIGHT: #a16109 3px = solid } #feature .webexclusive TABLE TH { BACKGROUND-COLOR: #a16109 !important } #feature .webexclusive TABLE TD { BACKGROUND-COLOR: #fcfadf !important } #feature BLOCKQUOTE { FONT-FAMILY: Georgia, "Times New Roman", Times, serif; FONT-SIZE: 14px } #feature BLOCKQUOTE P { FONT-FAMILY: Georgia, "Times New Roman", Times, serif; FONT-SIZE: 14px } #feature TABLE[align=3Dright] TD { BACKGROUND-COLOR: #fcfadf } #feature TABLE[align=3Dright] TD FONT { COLOR: #333 } #feature TABLE[align=3Dright] A:link B { COLOR: #600 } #feature TABLE[align=3Dright] A:visited B { COLOR: #900 } #feature P TABLE { WIDTH: 100% !important } #feature TABLE[width=3D'450'] { WIDTH: 100% !important } TABLE TR TD P.pagination { MARGIN: 0px } #blog H2 { FONT-FAMILY: Georgia, "Times New Roman", Times, serif !important; = COLOR: #600 } #blog H3 { BORDER-BOTTOM: medium none; MARGIN-TOP: 10px } #blog H4 { COLOR: #600 } .photoGallery { PADDING-BOTTOM: 0px; MARGIN: auto; PADDING-LEFT: 0px; WIDTH: 99%; = PADDING-RIGHT: 0px; PADDING-TOP: 0px } .photoGallery TR TD { TEXT-ALIGN: center; PADDING-BOTTOM: 20px; PADDING-LEFT: 20px; = PADDING-RIGHT: 20px; PADDING-TOP: 0px } .photoGallery TR TD P { MARGIN-TOP: 0px } .photoGallery TR TD IMG { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BORDER-TOP: = #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 5px } #forMembersBox H4 { BORDER-BOTTOM: #600 2px solid } #forMembersBox INPUT[type=3Dtext] { BORDER-BOTTOM-COLOR: #7a7e1d !important; BORDER-TOP-COLOR: #7a7e1d = !important; BORDER-RIGHT-COLOR: #7a7e1d !important; BORDER-LEFT-COLOR: = #7a7e1d !important } #forMembersBox INPUT[type=3Dpassword] { BORDER-BOTTOM-COLOR: #7a7e1d !important; BORDER-TOP-COLOR: #7a7e1d = !important; BORDER-RIGHT-COLOR: #7a7e1d !important; BORDER-LEFT-COLOR: = #7a7e1d !important } #forMembersBox TEXTAREA { BORDER-BOTTOM-COLOR: #7a7e1d !important; BORDER-TOP-COLOR: #7a7e1d = !important; BORDER-RIGHT-COLOR: #7a7e1d !important; BORDER-LEFT-COLOR: = #7a7e1d !important } #forMembersBox SELECT { BORDER-BOTTOM-COLOR: #7a7e1d !important; BORDER-TOP-COLOR: #7a7e1d = !important; BORDER-RIGHT-COLOR: #7a7e1d !important; BORDER-LEFT-COLOR: = #7a7e1d !important } #searchBox FORM { MARGIN: 0px } #searchBox2 FORM { MARGIN: 0px } #wrSearchBox FORM { MARGIN: 0px } #searchBox FORM LABEL { COLOR: #600 } #searchBox2 FORM LABEL { COLOR: #600 } #wrSearchBox FORM LABEL { COLOR: #600 } #searchBox FORM LABEL.searchFor { COLOR: #600; FONT-SIZE: 20px } #searchBox2 FORM LABEL.searchFor { COLOR: #600; FONT-SIZE: 20px } #wrSearchBox FORM LABEL.searchFor { COLOR: #600; FONT-SIZE: 20px } #searchBox FORM INPUT.searchFor { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 225px; PADDING-RIGHT: = 3px; PADDING-TOP: 3px } #searchBox2 FORM INPUT.searchFor { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 225px; PADDING-RIGHT: = 3px; PADDING-TOP: 3px } #wrSearchBox FORM INPUT.searchFor { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 225px; PADDING-RIGHT: = 3px; PADDING-TOP: 3px } #searchBox FORM INPUT.short { WIDTH: 150px } #searchBox2 FORM INPUT.short { WIDTH: 150px } #searchBox FORM FIELDSET { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: = 7px; MARGIN: 5px 0px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: = medium none; BORDER-RIGHT: medium none; PADDING-TOP: 7px } #searchBox2 FORM FIELDSET { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: = 7px; MARGIN: 5px 0px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: = medium none; BORDER-RIGHT: medium none; PADDING-TOP: 7px } #searchBox FORM FIELDSET TABLE { MARGIN-TOP: -3px !important } #searchBox2 FORM FIELDSET TABLE { MARGIN-TOP: -3px !important } #searchBox FORM FIELDSET LEGEND { MARGIN: 0px; COLOR: #600; FONT-SIZE: 16px; FONT-WEIGHT: bold } #searchBox2 FORM FIELDSET LEGEND { MARGIN: 0px; COLOR: #600; FONT-SIZE: 16px; FONT-WEIGHT: bold } #searchBox FORM INPUT[type=3D'reset'] { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: = 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: none transparent = scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; = PADDING-TOP: 4px } #searchBox2 FORM INPUT[type=3D'reset'] { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: = 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: none transparent = scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; = PADDING-TOP: 4px } #searchBox FORM BUTTON[type=3D'reset'] { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: = 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: none transparent = scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; = PADDING-TOP: 4px } #searchBox2 FORM BUTTON[type=3D'reset'] { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: = 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: none transparent = scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; = PADDING-TOP: 4px } #searchBox FORM INPUT[type=3D'reset']:hover { COLOR: #7693b0; TEXT-DECORATION: underline } #searchBox2 FORM INPUT[type=3D'reset']:hover { COLOR: #7693b0; TEXT-DECORATION: underline } #searchBox FORM BUTTON[type=3D'reset']:hover { COLOR: #7693b0; TEXT-DECORATION: underline } #searchBox2 FORM BUTTON[type=3D'reset']:hover { COLOR: #7693b0; TEXT-DECORATION: underline } #searchBox FORM HR { BACKGROUND-COLOR: #c1c95a; COLOR: #c1c95a } #searchBox FORM .sep { BORDER-LEFT: #c1c95a 1px solid } #searchBox SELECT OPTION { BACKGROUND-COLOR: #fcfadf } #searchBox SELECT OPTION:focus { BACKGROUND-COLOR: #fcfadf } #searchResults H5 { BORDER-BOTTOM: medium none } #searchResults TABLE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; = PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; BORDER-TOP: 0px; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } #searchResults TABLE TR.onmodule TD { BORDER-BOTTOM: #c1c95a 1px solid; BACKGROUND-COLOR: #fcfadf; = BORDER-TOP: #c1c95a 1px solid } .onmoduletop TD { BORDER-BOTTOM: medium none } .onmodulebottom TD { BORDER-TOP-COLOR: #fcfadf !important } #searchResults TABLE TR.onmodule TD.open { BORDER-LEFT: #c1c95a 1px solid } #searchResults TABLE TR.onmodule TD.close { BORDER-RIGHT: #c1c95a 1px solid } .mypageresults TBODY TR TD { BORDER-BOTTOM: #c1c95a 1px solid } #searchResults TABLE TH { PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #959d38; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; PADDING-TOP: 3px } #searchResults TABLE TD { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = PADDING-TOP: 5px } #searchResults TABLE TD P { MARGIN: 0px } #searchResults HR { BACKGROUND-COLOR: #999 !important; COLOR: #999 !important } #searchResults TABLE TBODY TD IMG { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: = #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } #searchResults TABLE TH.active { TEXT-ALIGN: center; BACKGROUND-COLOR: #616624 } #searchResults TABLE TH.active A { COLOR: #ccc } #searchResults .active IMG { MARGIN: 0px auto } #searchResults TABLE TR TH { COLOR: #fff } #searchResults TABLE TR TH A:link { COLOR: #fff } #searchResults TABLE TR TH A:visited { COLOR: #fff } #searchResults A:link { COLOR: #600 } #searchResults A:visited { COLOR: #900 } .moduleHeaderNav H1 { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #fff } .moduleHeaderNav P { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #fff !important; FONT-WEIGHT: = bold } .moduleHeaderNav P A { COLOR: #fff; TEXT-DECORATION: underline } .moduleHeaderNav P A:link { COLOR: #fff; TEXT-DECORATION: underline } .moduleHeaderNav P A:active { COLOR: #fff; TEXT-DECORATION: underline } .moduleHeaderNav P A:visited { COLOR: #fff; TEXT-DECORATION: underline } .moduleHeaderNav P A:hover { COLOR: #fff; TEXT-DECORATION: underline } .moduleHeaderNav STRONG { PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #616624; PADDING-LEFT: 7px; = PADDING-RIGHT: 7px; PADDING-TOP: 7px } .pwl H3 { COLOR: #fff } .pwl FORM LABEL { COLOR: #333 !important } .pwl LABEL { COLOR: #333 !important } .navtable TD P { TEXT-ALIGN: center; PADDING-BOTTOM: 5px; MARGIN: 3px auto; = PADDING-LEFT: 5px; WIDTH: 170px; PADDING-RIGHT: 5px; BACKGROUND: #900; = HEIGHT: 20px; PADDING-TOP: 5px } .navtable A:link { COLOR: #fff !important } .navtable A:visited { COLOR: #fff !important } .pwl FORM { MARGIN: 0px } .pwl .short-info-pwl { POSITION: relative; PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #fcfadf; = PADDING-LEFT: 7px; PADDING-RIGHT: 7px; PADDING-TOP: 7px } .pwl .checkbox-pwl { Z-INDEX: 1000; BORDER-BOTTOM: #c1c95a 1px solid; POSITION: absolute; = TEXT-ALIGN: center; BORDER-LEFT: #c1c95a 1px solid; PADDING-BOTTOM: 3px; = BACKGROUND-COLOR: #f3f0ca; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; COLOR: = #600; BORDER-TOP: #c1c95a 1px solid; TOP: 0px; RIGHT: 0px; BORDER-RIGHT: = #c1c95a 1px solid; PADDING-TOP: 3px } .pwl .short-info-pwl P { MARGIN: 4px 0px } .pwl .mycellar TD P { MARGIN: 4px 0px } .pwl .mycellar TD DIV { LINE-HEIGHT: 1.7em !important } .pwl .score SPAN { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; = PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #959d38; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; COLOR: #fff; BORDER-TOP: #666 1px solid; = BORDER-RIGHT: #666 1px solid; PADDING-TOP: 3px } .pwl .designation { BORDER-BOTTOM: #c1c95a 1px solid; BORDER-LEFT: #c1c95a 1px solid; = PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #f3f0ca; PADDING-LEFT: 2px; = PADDING-RIGHT: 2px; BORDER-TOP: #c1c95a 1px solid; BORDER-RIGHT: #c1c95a = 1px solid; PADDING-TOP: 2px } .pwl .designation STRONG { COLOR: #600 } #pwlHeadFoot .pwltotals TH { TEXT-ALIGN: center; BACKGROUND-COLOR: #fefefe; COLOR: #666 } #pwlHeadFoot .pwltotals TD { TEXT-ALIGN: center; COLOR: #fff } .mycellar TR TD DIV { DISPLAY: inline } .mycellar FORM { DISPLAY: inline } .mycellar FORM INPUT[type=3D'text'] { BACKGROUND-COLOR: #fff } .mycellar FORM SELECT { BACKGROUND-COLOR: #fff } #siteTour TABLE { MARGIN: 0px } #siteTour TH { TEXT-ALIGN: center; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #f3f0ca; = MARGIN-TOP: -10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; FONT: bold = 22px Arial, Helvetica, sans-serif; COLOR: #600; PADDING-TOP: 10px } #siteTour TD { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = PADDING-TOP: 5px } #siteTour TD TD { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = PADDING-TOP: 5px } #siteTour TD TD IMG { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 3px; MARGIN-TOP: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: = 3px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; = PADDING-TOP: 3px } A.siteTourBtn:link { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #959d38; = MARGIN: 0px 0px 10px 10px; PADDING-LEFT: 3px; WIDTH: 150px; = PADDING-RIGHT: 3px; DISPLAY: block; COLOR: #eee !important; FONT-SIZE: = 14px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 3px } A.siteTourBtn:visited { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #959d38; = MARGIN: 0px 0px 10px 10px; PADDING-LEFT: 3px; WIDTH: 150px; = PADDING-RIGHT: 3px; DISPLAY: block; COLOR: #eee !important; FONT-SIZE: = 14px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 3px } #WAIT DIV TABLE { TEXT-ALIGN: center; WIDTH: 300px } #WAIT FORM INPUT[type=3D'text'] { BACKGROUND-COLOR: #fff } #WAIT FORM SELECT { BACKGROUND-COLOR: #fff } #WAIT DIV TABLE TR TD SELECT { WIDTH: 250px } #WAIT HR { BACKGROUND-COLOR: #c1c95a; COLOR: #c1c95a } #errorBox P { MARGIN: 0px 0px 0px 30px; COLOR: #900 } #wineriesContent TABLE { WIDTH: 100% } #wineriesContent TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 3px; WIDTH: 33%; PADDING-RIGHT: 3px; = PADDING-TOP: 6px } #wineriesContent P.pagination { TEXT-ALIGN: center } #map { FONT: 10pt Arial, Helvetica, sans-serif } #footer P { MARGIN: 12px 6px; COLOR: #600 } #footer UL { MARGIN: 12px 6px; COLOR: #600 } #footer LI { MARGIN: 12px 6px; COLOR: #600 } #footer DL { MARGIN: 12px 6px; COLOR: #600 } #footer DT { MARGIN: 12px 6px; COLOR: #600 } #footer DD { MARGIN: 12px 6px; COLOR: #600 } #footer TH { MARGIN: 12px 6px; COLOR: #600 } #footer TD { MARGIN: 12px 6px; COLOR: #600 } #footer CAPTION { MARGIN: 12px 6px; COLOR: #600 } #footer BLOCKQUOTE { MARGIN: 12px 6px; COLOR: #600 } #footer LABEL { MARGIN: 12px 6px; COLOR: #600 } #footer FORM { MARGIN: 12px 6px; COLOR: #600 } #footer INPUT { MARGIN: 12px 6px; COLOR: #600 } #footer TEXTAREA { MARGIN: 12px 6px; COLOR: #600 } #footer LEGEND { MARGIN: 12px 6px; COLOR: #600 } #footer OPTION { MARGIN: 12px 6px; COLOR: #600 } #footer .moduleContainer DIV P { MARGIN: 0px; DISPLAY: inline } #footer .moduleContainer DIV P IMG { MARGIN: 4px } #footer P STRONG A:link { COLOR: #600 } #footer P STRONG A:visited { COLOR: #900 } #footer A:link { COLOR: #333 } #footer A:visited { COLOR: #999 } #footer HR { BACKGROUND: #c2ca5d; HEIGHT: 2px; COLOR: #ccc } #droppable LI { CLEAR: both } #droppable .droppableBox { BORDER-BOTTOM: #c1c95a 1px solid; BORDER-LEFT: #c1c95a 1px solid; = PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #f3f0ca; PADDING-LEFT: 7px; = WIDTH: 470px; PADDING-RIGHT: 7px; FLOAT: left; CLEAR: both; BORDER-TOP: = #c1c95a 1px solid; BORDER-RIGHT: #c1c95a 1px solid; PADDING-TOP: 7px } #droppable .droppableBox P { CURSOR: pointer } #droppable .droppableBox STRONG { DISPLAY: none } #droppable .answerCheckBox { WIDTH: 50px; FLOAT: right; MARGIN-RIGHT: 30px } #droppable .rightAnswer { CLEAR: both } #droppable .rightAnswer P { MARGIN: 12px auto } #draggables { CLEAR: both } #draggables P { BORDER-BOTTOM: #c1c95a 1px solid; BORDER-LEFT: #c1c95a 1px solid; = PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #fcfadf; MARGIN: 7px auto; = PADDING-LEFT: 5px; WIDTH: 70%; PADDING-RIGHT: 5px; BORDER-TOP: #c1c95a = 1px solid; CURSOR: pointer; BORDER-RIGHT: #c1c95a 1px solid; = PADDING-TOP: 5px } #ntgTotal P { TEXT-ALIGN: center; MARGIN: 0px; FONT: 42px "Times New Roman", Times, = serif; COLOR: #060 } #tabBox .module TABLE { MARGIN-TOP: 0px } #tabBox UL { POSITION: relative; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: = 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; = PADDING-TOP: 0px } #tabBox UL LI { Z-INDEX: 10; TEXT-ALIGN: center; MARGIN: 0px 4px 0px 0px; WIDTH: 32%; = FLOAT: left } #tabBox UL LI A:link { BORDER-BOTTOM: #c1c95a 1px solid; BORDER-LEFT: #c1c95a 1px solid; = PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: = block; MARGIN-BOTTOM: -1px; BACKGROUND: = url(/images/wso/tab-headerbg-img.gif) 100% 50%; HEIGHT: 32px; COLOR: = #fff; FONT-SIZE: 11px; BORDER-TOP: #c1c95a 1px solid; FONT-WEIGHT: bold; = BORDER-RIGHT: #c1c95a 1px solid; TEXT-DECORATION: none; PADDING-TOP: 3px } #tabBox UL LI A { BORDER-BOTTOM: #c1c95a 1px solid; BORDER-LEFT: #c1c95a 1px solid; = PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: = block; MARGIN-BOTTOM: -1px; BACKGROUND: = url(/images/wso/tab-headerbg-img.gif) 100% 50%; HEIGHT: 32px; COLOR: = #fff; FONT-SIZE: 11px; BORDER-TOP: #c1c95a 1px solid; FONT-WEIGHT: bold; = BORDER-RIGHT: #c1c95a 1px solid; TEXT-DECORATION: none; PADDING-TOP: 3px } #tabBox UL LI A.active-tab { BORDER-BOTTOM: #fff 1px solid; BACKGROUND: #fff; COLOR: #7a7e1d } #tabBox UL LI A.middle { HEIGHT: 24px; PADDING-TOP: 11px } .suggestBox { TEXT-ALIGN: center; PADDING-BOTTOM: 16px; MARGIN: 0px auto; WIDTH: = 634px; BACKGROUND: url(/images/wso/bgballoon2.gif) no-repeat center = bottom } .suggestBox P { BORDER-BOTTOM: medium none; BORDER-LEFT: #600 1px solid; = PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; = FONT-FAMILY: Georgia, "Times New Roman", Times, serif; COLOR: #666; = BORDER-TOP: #600 1px solid; BORDER-RIGHT: #600 1px solid; PADDING-TOP: = 8px } .suggestBox P A { COLOR: #900 !important } .auto_complete { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = BACKGROUND-COLOR: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc = 1px solid } .auto_complete UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .auto_complete UL LI { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; = TEXT-INDENT: 7px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .auto_complete UL LI:hover { BACKGROUND-COLOR: #eee } .tooltip { BORDER-BOTTOM: #999 1px solid; FILTER: alpha(opacity=3D80); = BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 5px; BACKGROUND-COLOR: = #333; MARGIN: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; FONT: italic = 12px Georgia, "Times New Roman", Times, serif; COLOR: #fff; BORDER-TOP: = #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 5px; opacity: = .8 } #votingArea FIELDSET { BORDER-BOTTOM-COLOR: #c1c95a; BACKGROUND-COLOR: #fcfadf; MARGIN: 1%; = WIDTH: 29%; FLOAT: left } #votingArea FIELDSET:hover { BACKGROUND-COLOR: #f3f0ca } #votingArea FIELDSET LABEL { FONT-SIZE: 16px } #votingArea FIELDSET LABEL IMG { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; = PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 4px; = PADDING-RIGHT: 4px; VERTICAL-ALIGN: middle; BORDER-TOP: #666 1px solid; = BORDER-RIGHT: #666 1px solid; PADDING-TOP: 4px } #votingArea FIELDSET LABEL.checkbox_checked { MARGIN: 10px 0px; PADDING-LEFT: 25px; DISPLAY: block; BACKGROUND: = url(/images/wso/tick.png) #fff no-repeat } #votingArea FIELDSET LABEL.checkbox_unchecked { MARGIN: 10px 0px; PADDING-LEFT: 25px; DISPLAY: block; BACKGROUND: = url(/images/wso/cross.png) #fff no-repeat } #votingArea FIELDSET LABEL.radio_checked { MARGIN: 10px 0px; PADDING-LEFT: 25px; DISPLAY: block; BACKGROUND: = url(/images/wso/bullet_pick.png) no-repeat 0px 50% } #votingArea FIELDSET LABEL.radio_unchecked { MARGIN: 10px 0px; PADDING-LEFT: 25px; DISPLAY: block; BACKGROUND: = url(/images/wso/bullet_clear.png) no-repeat 0px 50% } #votingArea FIELDSET LABEL:hover { COLOR: #575b60 } #votingArea FIELDSET LABEL.highlighted { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BORDER-TOP: = #333 1px solid; BORDER-RIGHT: #333 1px solid } .niceRadioCheckBoxHidden { POSITION: absolute; LEFT: -1000px } .bold { FONT-WEIGHT: bold !important } .unbold { FONT-WEIGHT: normal !important } .unBold { FONT-WEIGHT: normal !important } .italic { FONT-STYLE: italic !important } .unitalic { FONT-STYLE: normal !important } unItalic { FONT-STYLE: normal !important } .small { FONT-SIZE: 12px !important } .big { FONT-SIZE: 18px !important } .indent { TEXT-INDENT: 20px !important } .allcaps { TEXT-TRANSFORM: uppercase !important } .allCaps { TEXT-TRANSFORM: uppercase !important } .capitalize { TEXT-TRANSFORM: capitalize !important } .lowercase { TEXT-TRANSFORM: lowercase !important } .clearall { CLEAR: both !important } .clearAll { CLEAR: both !important } .no-margin { MARGIN: 0px } .noMargin { MARGIN: 0px } .no-margin-top { MARGIN-TOP: 0px !important } .noMarginTop { MARGIN-TOP: 0px !important } .no-margin-bottom { MARGIN-BOTTOM: 0px !important } .noMarginBottom { MARGIN-BOTTOM: 0px !important } .marginAuto { MARGIN: 7px auto } .smallMargin { MARGIN: 7px auto } .textAlignCenter { TEXT-ALIGN: center !important } .text-align-center { TEXT-ALIGN: center !important } .textAlignLeft { TEXT-ALIGN: left !important } .text-align-left { TEXT-ALIGN: left !important } .textAlignRight { TEXT-ALIGN: right !important } .text-align-right { TEXT-ALIGN: right !important } .alignCenter { CLEAR: both !important } .align-all-center { CLEAR: both !important } .alignLeft { FLOAT: left !important } .aling-all-left { FLOAT: left !important } .alignRight { FLOAT: right !important } .align-al-right { FLOAT: right !important } .noLineHigh { LINE-HEIGHT: normal !important } .line-high-normal { LINE-HEIGHT: normal !important } .dottedLine { BACKGROUND-IMAGE: url(/images/wso/dottedLine.gif); PADDING-BOTTOM: 0px; = MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 2px; = FONT-SIZE: 2px; PADDING-TOP: 0px } .underlined { BORDER-BOTTOM: #ccc 2px solid } .linesep { BACKGROUND-COLOR: #fff; MARGIN: 15px auto; HEIGHT: 0px; COLOR: #ccc; = BORDER-TOP: #ccc 1px dashed } .wsonline-hr { BACKGROUND-COLOR: #fff; MARGIN: 15px auto; HEIGHT: 0px; COLOR: #ccc; = BORDER-TOP: #ccc 1px dashed } .notes { FONT: bold italic 13px arial; COLOR: #666 } IMG.right { MARGIN: 10px 0px 7px 7px; FLOAT: right } IMG.alignRight { MARGIN: 10px 0px 7px 7px; FLOAT: right } IMG.left { MARGIN: 10px 7px 7px 0px; FLOAT: left } IMG.alignLeft { MARGIN: 10px 7px 7px 0px; FLOAT: left } .valignMiddle { VERTICAL-ALIGN: middle !important } .vertical-align-middle { VERTICAL-ALIGN: middle !important } .valignTop { VERTICAL-ALIGN: top !important } .vertical-align-top { VERTICAL-ALIGN: top !important } .valignBottom { VERTICAL-ALIGN: bottom !important } .vertical-align-bottom { VERTICAL-ALIGN: bottom !important } .borderCollapse { BORDER-COLLAPSE: collapse !important } .border-collapse { BORDER-COLLAPSE: collapse !important } .fontFamily { FONT-FAMILY: Georgia, "Times New Roman", Times, serif !important } .font-family-default { FONT-FAMILY: Georgia, "Times New Roman", Times, serif !important } .fontGeorgia { FONT-FAMILY: Georgia, "Times New Roman", Times, serif !important } .fontFamily1 { FONT-FAMILY: Arial, Helvetica, sans-serif !important } .fontArial { FONT-FAMILY: Arial, Helvetica, sans-serif !important } .fontFamily2 { FONT-FAMILY: Arial Black, Arial, Helvetica, sans-serif !important } .fontFamily3 { FONT-FAMILY: Georgia, "Times New Roman", Times, serif !important } .fontColor { COLOR: #333 !important } .font-color { COLOR: #333 !important } A.font-color:link { COLOR: #333 !important } A.fontColor:visited { COLOR: #666 !important } .fontColor2 { COLOR: #600 !important } A.fontColor2:link { COLOR: #600 !important } .font-color-alt1 { COLOR: #600 !important } A.font-color-alt1:link { COLOR: #600 !important } .fontColor3 { COLOR: #7a7e1d !important } A.fontColor3:link { COLOR: #7a7e1d !important } .font-color-alt2 { COLOR: #7a7e1d !important } A.font-color-alt2:link { COLOR: #7a7e1d !important } .fontColor4 { COLOR: #fff !important } A.fontColor4:link { COLOR: #fff !important } .font-color-alt3 { COLOR: #fff !important } A.font-color-alt3:link { COLOR: #fff !important } .red { COLOR: #f00 } A.red:link { COLOR: #f00 } .error { COLOR: #f00 } A.error:link { COLOR: #f00 } .pagination { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; FONT: 12px Arial, Helvetica, sans-serif; = PADDING-TOP: 4px } .pagination STRONG { BORDER-BOTTOM: #7a7e1d 1px solid; BORDER-LEFT: #7a7e1d 1px solid; = PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #7a7e1d; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; COLOR: #fff; BORDER-TOP: #7a7e1d 1px solid; = BORDER-RIGHT: #7a7e1d 1px solid; PADDING-TOP: 3px } .pagination A:link { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; = PADDING-BOTTOM: 3px !important; MARGIN: auto 1px; PADDING-LEFT: 3px = !important; PADDING-RIGHT: 3px !important; BORDER-TOP: #999 1px solid; = BORDER-RIGHT: #999 1px solid; PADDING-TOP: 3px !important } .pagination A:active { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; = PADDING-BOTTOM: 3px !important; MARGIN: auto 1px; PADDING-LEFT: 3px = !important; PADDING-RIGHT: 3px !important; BORDER-TOP: #999 1px solid; = BORDER-RIGHT: #999 1px solid; PADDING-TOP: 3px !important } .pagination A:visited { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; = PADDING-BOTTOM: 3px !important; MARGIN: auto 1px; PADDING-LEFT: 3px = !important; PADDING-RIGHT: 3px !important; BORDER-TOP: #999 1px solid; = BORDER-RIGHT: #999 1px solid; PADDING-TOP: 3px !important } .pagination A:visited { COLOR: #7a7e1d !important } .pagination A:hover { BORDER-BOTTOM: #7a7e1d 1px solid; BORDER-LEFT: #7a7e1d 1px solid; = PADDING-BOTTOM: 3px !important; BACKGROUND-COLOR: #fcfadf; MARGIN: auto = 1px; PADDING-LEFT: 3px !important; PADDING-RIGHT: 3px !important; COLOR: = #7a7e1d !important; BORDER-TOP: #7a7e1d 1px solid; BORDER-RIGHT: #7a7e1d = 1px solid; PADDING-TOP: 3px !important } .headlinesep { BACKGROUND-COLOR: #fff; MARGIN: 10px auto; WIDTH: 90%; HEIGHT: 0px; = COLOR: #ccc; CLEAR: both; BORDER-TOP: #ccc 1px dashed } .forArchiveItem { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 7px 0px; PADDING-LEFT: = 0px; WIDTH: 24.5%; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } TH.active { BACKGROUND-COLOR: #600 } TH.active A { COLOR: #ccc } .active IMG { MARGIN: 0px auto } .tabMenu { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } .tabMenu LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } UL.tabMenu { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } .tabMenu LI { PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .tabMenu A:link { BORDER-BOTTOM: #c1c95a 2px solid; BORDER-LEFT: #c1c95a 2px solid; = PADDING-BOTTOM: 5px; PADDING-LEFT: 25px; PADDING-RIGHT: 25px; DISPLAY: = block; MARGIN-BOTTOM: -2px; BACKGROUND: = url(/images/wso/tab-headerbg-img.gif) 100% 50%; COLOR: #fff; FONT-SIZE: = 13px; BORDER-TOP: #c1c95a 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: = #c1c95a 2px solid; TEXT-DECORATION: none; PADDING-TOP: 5px } .tabMenu A:visited { BORDER-BOTTOM: #c1c95a 2px solid; BORDER-LEFT: #c1c95a 2px solid; = PADDING-BOTTOM: 5px; PADDING-LEFT: 25px; PADDING-RIGHT: 25px; DISPLAY: = block; MARGIN-BOTTOM: -2px; BACKGROUND: = url(/images/wso/tab-headerbg-img.gif) 100% 50%; COLOR: #fff; FONT-SIZE: = 13px; BORDER-TOP: #c1c95a 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: = #c1c95a 2px solid; TEXT-DECORATION: none; PADDING-TOP: 5px } .tabMenu A:hover { BORDER-BOTTOM: #c1c95a 2px solid; BORDER-LEFT: #c1c95a 2px solid; = PADDING-BOTTOM: 5px; PADDING-LEFT: 25px; PADDING-RIGHT: 25px; DISPLAY: = block; MARGIN-BOTTOM: -2px; BACKGROUND: = url(/images/wso/tab-headerbg-img.gif) 100% 50%; COLOR: #fff; FONT-SIZE: = 13px; BORDER-TOP: #c1c95a 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: = #c1c95a 2px solid; TEXT-DECORATION: none; PADDING-TOP: 5px } .tabMenu A.active-tab:link { BORDER-BOTTOM: #fff 2px solid; BACKGROUND: #fff; COLOR: #7a7e1d } .tabMenu A.active-tab:visited { BORDER-BOTTOM: #fff 2px solid; BACKGROUND: #fff; COLOR: #7a7e1d } .tabMenu LI.active-tab A:link { BORDER-BOTTOM: #fff 2px solid; BACKGROUND: #fff; COLOR: #7a7e1d } .tabMenu LI.active-tab A:visited { BORDER-BOTTOM: #fff 2px solid; BACKGROUND: #fff; COLOR: #7a7e1d } .tabMenu LI A.middle { PADDING-TOP: 11px } .valueWinesWineries { BORDER-COLLAPSE: collapse } .valueWinesWineries TH { BORDER-BOTTOM: #999 3px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 4px; = PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #036; PADDING-TOP: 4px } .valueWinesWineries TD { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 = 1px solid; PADDING-BOTTOM: 10px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; = BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: = 10px } .valueWinesWineries TD.active { BACKGROUND-COLOR: #fcfadf } .valueWinesWineries TR:hover { BACKGROUND-COLOR: #fcfadf } .vfheading { PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fcfadf; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; HEIGHT: 100%; PADDING-TOP: 3px } A.headerLink:link { FONT-WEIGHT: bold } A.headerLink:hover { FONT-WEIGHT: bold } A.headerLink:visited { FONT-WEIGHT: bold } A.readMoreLink:link { FONT-WEIGHT: bold } A.readMoreLink:hover { FONT-WEIGHT: bold } A.readMoreLink:visited { FONT-WEIGHT: bold } A.textLink:link { COLOR: #000 } A.textLink:visited { COLOR: #666 } .breadcrumb { MARGIN: 7px 0px; FONT: 11px Arial, Helvetica, sans-serif } .searchTitle { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; = PADDING-TOP: 3px } .searchTitle SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: = block; FLOAT: right; FONT-SIZE: 11px; FONT-WEIGHT: normal; PADDING-TOP: = 2px } .navicon { BORDER-BOTTOM: #c1c95a 1px solid; BORDER-LEFT: #c1c95a 1px solid; = PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; MARGIN-BOTTOM: 3px; FLOAT: right; BORDER-TOP: = #c1c95a 1px solid; BORDER-RIGHT: #c1c95a 1px solid; PADDING-TOP: 3px } .navicon A { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 7px; = PADDING-RIGHT: 7px; DISPLAY: block; FONT: 10px Verdana, Arial, = Helvetica, sans-serif; FLOAT: left; BORDER-RIGHT: #c2c7c3 1px solid; = TEXT-DECORATION: none; PADDING-TOP: 0px } .navicon A.lasticon { BORDER-RIGHT: medium none } .navMenuBox TR TH { TEXT-ALIGN: left; FONT: bold 16px Arial, Helvetica, sans-serif; COLOR: = #fff } .navMenuBox TR TH A:link { COLOR: #fff } .navMenuBox TR TH A:visited { COLOR: #fff } .navMenuBox TR TH A:hover { COLOR: #fff } .navMenuBox A:link { COLOR: #600 !important } .navMenuBox A:visited { COLOR: #900 !important } .navMenuBox FORM INPUT[type=3D'text'] { BACKGROUND-COLOR: #fff } .navMenuBox FORM SELECT { BACKGROUND-COLOR: #fff } .usersCommentsbox H6 { FONT-WEIGHT: normal } .usersCommentsbox .user P { MARGIN: 0px } .readPostCommentsBox .readMoreIcon { PADDING-LEFT: 23px; BACKGROUND: url(/images/wso/readbutton.gif) = no-repeat; FLOAT: left; HEIGHT: 21px } .readPostCommentsBox P { TEXT-ALIGN: right; MARGIN: 0px } .readPostCommentsBox P { FONT: bold 13px Arial, Helvetica, sans-serif; COLOR: #930 } .readPostCommentsBox A:link { FONT: bold 13px Arial, Helvetica, sans-serif; COLOR: #930 } .readPostCommentsBox A:visited { FONT: bold 13px Arial, Helvetica, sans-serif; COLOR: #930 } .readPostCommentsBox A:hover { FONT: bold 13px Arial, Helvetica, sans-serif; COLOR: #930 } .siteZone P { PADDING-BOTTOM: 3px; MARGIN: 0px auto; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; COLOR: #fff; FONT-WEIGHT: bold; PADDING-TOP: 3px } #breakingNews P { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #111 } .seeSearchedMap { PADDING-BOTTOM: 3px; MARGIN: 7px 0px; PADDING-LEFT: 30px; WIDTH: 150px; = PADDING-RIGHT: 3px; DISPLAY: block; BACKGROUND: = url(/images/wso/mapIcon.gif) no-repeat 3px 0px; HEIGHT: 19px; = PADDING-TOP: 3px } .seeSearchedMoreAbout { PADDING-BOTTOM: 3px; MARGIN: 7px 0px; PADDING-LEFT: 30px; WIDTH: 150px; = PADDING-RIGHT: 3px; DISPLAY: block; BACKGROUND: = url(/images/wso/mapIcon.gif) no-repeat 3px 0px; HEIGHT: 19px; = PADDING-TOP: 3px } A.seeSearchedMap:link { COLOR: #660; FONT-SIZE: 12px; FONT-WEIGHT: bold; TEXT-DECORATION: none } A.seeSearchedMap:visited { COLOR: #660; FONT-SIZE: 12px; FONT-WEIGHT: bold; TEXT-DECORATION: none } A.seeSearchedMoreAbout:link { COLOR: #660; FONT-SIZE: 12px; FONT-WEIGHT: bold; TEXT-DECORATION: none } A.seeSearchedMoreAbout:visited { COLOR: #660; FONT-SIZE: 12px; FONT-WEIGHT: bold; TEXT-DECORATION: none } A.seeSearchedMap:hover { COLOR: #333 } A.seeSearchedMoreAbout:hover { COLOR: #333 } .seeSearchedMoreAbout { BACKGROUND-IMAGE: url(/images/wso/notesIcon.gif); WIDTH: 210px } .emailtable LABEL { COLOR: #4c143e; FONT-WEIGHT: bold } .noMemberModule H5 { BORDER-BOTTOM: medium none; MARGIN: 12px auto; FONT: bold 18px Georgia, = "Times New Roman", Times, serif } .noMemberModule P { MARGIN: 8px auto } .noMemberModule P BIG { FONT-SIZE: 15px !important } .noMemberModule LABEL { COLOR: #333; FONT-WEIGHT: bold } .noMemberModule INPUT[type=3Dtext] { BACKGROUND-COLOR: #fff; WIDTH: 170px } .noMemberModule INPUT[type=3Dpassword] { BACKGROUND-COLOR: #fff; WIDTH: 170px } .noMemberModule .login-nonmember { BORDER-BOTTOM: medium none; TEXT-ALIGN: left; BORDER-LEFT: medium none; = PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #600; PADDING-LEFT: 10px; WIDTH: = 110px; PADDING-RIGHT: 10px; BORDER-TOP: medium none; BORDER-RIGHT: = medium none; PADDING-TOP: 3px } .promo-button { BORDER-BOTTOM: medium none; TEXT-ALIGN: left; BORDER-LEFT: medium none; = PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #600; PADDING-LEFT: 10px; WIDTH: = 110px; PADDING-RIGHT: 10px; BORDER-TOP: medium none; BORDER-RIGHT: = medium none; PADDING-TOP: 3px } .noMemberModule .login-nonmember { FONT: bold 16px Arial, Helvetica, sans-serif; COLOR: #fff !important; = CURSOR: pointer; TEXT-DECORATION: none } .promo-button A:link { FONT: bold 16px Arial, Helvetica, sans-serif; COLOR: #fff !important; = CURSOR: pointer; TEXT-DECORATION: none } .promo-button A:visited { FONT: bold 16px Arial, Helvetica, sans-serif; COLOR: #fff !important; = CURSOR: pointer; TEXT-DECORATION: none } .newsletterBox H5 { PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #f3f0ca; MARGIN: -5px -5px auto; = PADDING-LEFT: 7px; PADDING-RIGHT: 7px; PADDING-TOP: 7px } .readNewsletter H5 { PADDING-BOTTOM: 6px; MARGIN: -3px 0px 0px -3px; PADDING-LEFT: 30px; = PADDING-RIGHT: 3px; BACKGROUND: url(/images/wso/ws_newsletterspg_10.png) = no-repeat; PADDING-TOP: 6px } .readNewsletter P { MARGIN: 5px } .spacer7px { MARGIN: 0px; FONT-SIZE: 7px } .pointer { CURSOR: pointer !important } #issuecontent H2 { FONT-FAMILY: Arial, Helvetica, sans-serif } #issuecontent H3 { FONT-FAMILY: Arial, Helvetica, sans-serif } #issuecontent H5 { FONT-FAMILY: Arial, Helvetica, sans-serif } #issuecontent H5 { TEXT-TRANSFORM: uppercase; COLOR: #c93 } #issuecontent DD { MARGIN-LEFT: 25px } #issuecontent DL DD DL DT P { MARGIN: 0px 0px -10px } .exclusiveContentBox TD { BORDER-BOTTOM: #a16109 3px solid; BORDER-LEFT: #a16109 3px solid; = PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #e8ebf4; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; BORDER-TOP: #a16109 3px solid; BORDER-RIGHT: #a16109 = 3px solid; PADDING-TOP: 5px } .exclusiveContentBox TH { BACKGROUND-COLOR: #a16109 } .exclusiveContentBox P { LINE-HEIGHT: normal } .exclusiveContentBox LI { LINE-HEIGHT: normal } .exclusiveContentBox TD { LINE-HEIGHT: normal } #encyminibox { BACKGROUND-COLOR: #f6e9bd } #encyminibox2 { BACKGROUND-COLOR: #e5e5e5 } #encyminibox2 P { MARGIN: 0px; WIDTH: 33%; FLOAT: left } #encyminibox TD { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = PADDING-TOP: 5px } #encyminibox2 TD { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = PADDING-TOP: 5px } #encyminibox P SPAN { COLOR: #600; FONT-SIZE: 16px; FONT-WEIGHT: bold } .offer1 { POSITION: relative; TEXT-ALIGN: center; PADDING-BOTTOM: 16px; MARGIN: = auto; PADDING-LEFT: 15px; WIDTH: 70%; PADDING-RIGHT: 15px; BACKGROUND: = url(/images/wso/offers-bg.png) no-repeat left 0px; FONT-SIZE: 2em; = PADDING-TOP: 15px } .offer1 SMALL { FONT-SIZE: 18px } SPAN.close { MARGIN: -15px; WIDTH: 30px; DISPLAY: block; BACKGROUND: = url(/images/wso/offers-bg-close.png) no-repeat left 0px; FLOAT: right; = HEIGHT: 70px; COLOR: #fff } .offer1 A:link { COLOR: #fff; TEXT-DECORATION: none } .offer1 A:visited { COLOR: #fff; TEXT-DECORATION: none } ------=_NextPart_000_0000_01CA518C.07F46950 Content-Type: text/css; charset="iso-8859-2" Content-Transfer-Encoding: 7bit Content-Location: http://www.winespectator.com/css/wso/4IE.css .addclear { HEIGHT: 1% } * HTML .addclear { HEIGHT: 1% } #searchtools { PADDING-BOTTOM: 5px; MARGIN-TOP: 5px; PADDING-TOP: 5px } #tabBox .module TABLE { WIDTH: 94% } .tabMenu A:link { Z-INDEX: 1; POSITION: relative } .tabMenu A:visited { Z-INDEX: 1; POSITION: relative } .tabMenu A:hover { Z-INDEX: 1; POSITION: relative } IMG.right { MARGIN-BOTTOM: 6px } IMG.alignRight { MARGIN-BOTTOM: 6px } IMG.left { MARGIN-BOTTOM: 6px } IMG.alignLeft { MARGIN-BOTTOM: 6px } #archive { MARGIN-TOP: -5px !important } .spacer7px { FONT-SIZE: 1px } #feature TABLE[align=right] { CLEAR: none } ------=_NextPart_000_0000_01CA518C.07F46950 Content-Type: text/css; charset="iso-8859-2" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.winespectator.com/css/wso/print.css #wrapper { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: auto; = PADDING-RIGHT: 0px; FLOAT: none; CLEAR: both; PADDING-TOP: 0px } #header { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: auto; = PADDING-RIGHT: 0px; FLOAT: none; CLEAR: both; PADDING-TOP: 0px } #contentBox { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: auto; = PADDING-RIGHT: 0px; FLOAT: none; CLEAR: both; PADDING-TOP: 0px } #wideContentBox { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: auto; = PADDING-RIGHT: 0px; FLOAT: none; CLEAR: both; PADDING-TOP: 0px } #header { DISPLAY: none } .module { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: 99%; = BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium = none; BORDER-RIGHT: medium none } #thirdColumn { DISPLAY: none } #footer { DISPLAY: none } #adimgleft { DISPLAY: none } #adimgright { DISPLAY: none } #leaderBannerAd { DISPLAY: none } #headerMenu { DISPLAY: none } #headerContent { DISPLAY: none } #navigation { DISPLAY: none } #sublinks { DISPLAY: none } .navicon { DISPLAY: none } .moduleOpen { DISPLAY: none } .moduleClose { DISPLAY: none } .moduleLargeOpen { DISPLAY: none } .moduleLargeClose { DISPLAY: none } .navMenuBox { DISPLAY: none } .contentFooter { DISPLAY: none } #forMembersBox { DISPLAY: none } .tabMenu { DISPLAY: none } #floating_content { DISPLAY: none } TD { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 = !important; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 = !important } DIV { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 = !important; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 = !important } INPUT { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 = !important; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 = !important } A:link { COLOR: #000 !important } A:active { COLOR: #000 !important } A:visited { COLOR: #000 !important } A:hover { COLOR: #000 !important } H1 { COLOR: #000 !important } H2 { COLOR: #000 !important } H3 { COLOR: #000 !important } H4 { COLOR: #000 !important } H5 { COLOR: #000 !important } H6 { COLOR: #000 !important } .fontColor2 { COLOR: #000 !important } .fontColor3 { COLOR: #000 !important } .fontColor4 { COLOR: #000 !important } H1 { FONT-FAMILY: Arial, Helvetica, sans-serif !important } H2 { FONT-FAMILY: Arial, Helvetica, sans-serif !important } H3 { FONT-FAMILY: Arial, Helvetica, sans-serif !important } H4 { FONT-FAMILY: Arial, Helvetica, sans-serif !important } H5 { FONT-FAMILY: Arial, Helvetica, sans-serif !important } H6 { FONT-FAMILY: Arial, Helvetica, sans-serif !important } P { FONT-FAMILY: Arial, Helvetica, sans-serif !important } LI { FONT-FAMILY: Arial, Helvetica, sans-serif !important } DT { FONT-FAMILY: Arial, Helvetica, sans-serif !important } DD { FONT-FAMILY: Arial, Helvetica, sans-serif !important } TD { FONT-FAMILY: Arial, Helvetica, sans-serif !important } P { FONT-SIZE: 10pt } LI { FONT-SIZE: 10pt } DT { FONT-SIZE: 10pt } DD { FONT-SIZE: 10pt } TD { FONT-SIZE: 10pt } CAPTION { FONT: italic 12px "Times New Roman", Times, serif } .caption { FONT: italic 12px "Times New Roman", Times, serif } .onmodule TD { BACKGROUND-COLOR: #ccc !important } ------=_NextPart_000_0000_01CA518C.07F46950 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.winespectator.com/js/prototype.js /* Prototype JavaScript framework, version 1.6.1 * (c) 2005-2009 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style = license. * For details, see the Prototype web site: http://www.prototypejs.org/ * = *------------------------------------------------------------------------= --*/ var Prototype =3D { Version: '1.6.1', Browser: (function(){ var ua =3D navigator.userAgent; var isOpera =3D Object.prototype.toString.call(window.opera) =3D=3D = '[object Opera]'; return { IE: !!window.attachEvent && !isOpera, Opera: isOpera, WebKit: ua.indexOf('AppleWebKit/') > -1, Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') = =3D=3D=3D -1, MobileSafari: /Apple.*Mobile.*Safari/.test(ua) } })(), BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: (function() { var constructor =3D window.Element || window.HTMLElement; return !!(constructor && constructor.prototype); })(), SpecificElementExtensions: (function() { if (typeof window.HTMLDivElement !=3D=3D 'undefined') return true; var div =3D document.createElement('div'); var form =3D document.createElement('form'); var isSupported =3D false; if (div['__proto__'] && (div['__proto__'] !=3D=3D = form['__proto__'])) { isSupported =3D true; } div =3D form =3D null; return isSupported; })() }, ScriptFragment: ']*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions =3D false; var Abstract =3D { }; var Try =3D { these: function() { var returnValue; for (var i =3D 0, length =3D arguments.length; i < length; i++) { var lambda =3D arguments[i]; try { returnValue =3D lambda(); break; } catch (e) { } } return returnValue; } }; /* Based on Alex Arnell's inheritance implementation. */ var Class =3D (function() { function subclass() {}; function create() { var parent =3D null, properties =3D $A(arguments); if (Object.isFunction(properties[0])) parent =3D properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass =3D parent; klass.subclasses =3D []; if (parent) { subclass.prototype =3D parent.prototype; klass.prototype =3D new subclass; parent.subclasses.push(klass); } for (var i =3D 0; i < properties.length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize =3D Prototype.emptyFunction; klass.prototype.constructor =3D klass; return klass; } function addMethods(source) { var ancestor =3D this.superclass && this.superclass.prototype; var properties =3D Object.keys(source); if (!Object.keys({ toString: true }).length) { if (source.toString !=3D Object.prototype.toString) properties.push("toString"); if (source.valueOf !=3D Object.prototype.valueOf) properties.push("valueOf"); } for (var i =3D 0, length =3D properties.length; i < length; i++) { var property =3D properties[i], value =3D source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames().first() =3D=3D "$super") { var method =3D value; value =3D (function(m) { return function() { return ancestor[m].apply(this, arguments); = }; })(property).wrap(method); value.valueOf =3D method.valueOf.bind(method); value.toString =3D method.toString.bind(method); } this.prototype[property] =3D value; } return this; } return { create: create, Methods: { addMethods: addMethods } }; })(); (function() { var _toString =3D Object.prototype.toString; function extend(destination, source) { for (var property in source) destination[property] =3D source[property]; return destination; } function inspect(object) { try { if (isUndefined(object)) return 'undefined'; if (object =3D=3D=3D null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } } function toJSON(object) { var type =3D typeof object; switch (type) { case 'undefined': case 'function': case 'unknown': return; case 'boolean': return object.toString(); } if (object =3D=3D=3D null) return 'null'; if (object.toJSON) return object.toJSON(); if (isElement(object)) return; var results =3D []; for (var property in object) { var value =3D toJSON(object[property]); if (!isUndefined(value)) results.push(property.toJSON() + ': ' + value); } return '{' + results.join(', ') + '}'; } function toQueryString(object) { return $H(object).toQueryString(); } function toHTML(object) { return object && object.toHTML ? object.toHTML() : = String.interpret(object); } function keys(object) { var results =3D []; for (var property in object) results.push(property); return results; } function values(object) { var results =3D []; for (var property in object) results.push(object[property]); return results; } function clone(object) { return extend({ }, object); } function isElement(object) { return !!(object && object.nodeType =3D=3D 1); } function isArray(object) { return _toString.call(object) =3D=3D "[object Array]"; } function isHash(object) { return object instanceof Hash; } function isFunction(object) { return typeof object =3D=3D=3D "function"; } function isString(object) { return _toString.call(object) =3D=3D "[object String]"; } function isNumber(object) { return _toString.call(object) =3D=3D "[object Number]"; } function isUndefined(object) { return typeof object =3D=3D=3D "undefined"; } extend(Object, { extend: extend, inspect: inspect, toJSON: toJSON, toQueryString: toQueryString, toHTML: toHTML, keys: keys, values: values, clone: clone, isElement: isElement, isArray: isArray, isHash: isHash, isFunction: isFunction, isString: isString, isNumber: isNumber, isUndefined: isUndefined }); })(); Object.extend(Function.prototype, (function() { var slice =3D Array.prototype.slice; function update(array, args) { var arrayLength =3D array.length, length =3D args.length; while (length--) array[arrayLength + length] =3D args[length]; return array; } function merge(array, args) { array =3D slice.call(array, 0); return update(array, args); } function argumentNames() { var names =3D = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1] .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '') .replace(/\s+/g, '').split(','); return names.length =3D=3D 1 && !names[0] ? [] : names; } function bind(context) { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return = this; var __method =3D this, args =3D slice.call(arguments, 1); return function() { var a =3D merge(args, arguments); return __method.apply(context, a); } } function bindAsEventListener(context) { var __method =3D this, args =3D slice.call(arguments, 1); return function(event) { var a =3D update([event || window.event], args); return __method.apply(context, a); } } function curry() { if (!arguments.length) return this; var __method =3D this, args =3D slice.call(arguments, 0); return function() { var a =3D merge(args, arguments); return __method.apply(this, a); } } function delay(timeout) { var __method =3D this, args =3D slice.call(arguments, 1); timeout =3D timeout * 1000 return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); } function defer() { var args =3D update([0.01], arguments); return this.delay.apply(this, args); } function wrap(wrapper) { var __method =3D this; return function() { var a =3D update([__method.bind(this)], arguments); return wrapper.apply(this, a); } } function methodize() { if (this._methodized) return this._methodized; var __method =3D this; return this._methodized =3D function() { var a =3D update([this], arguments); return __method.apply(null, a); }; } return { argumentNames: argumentNames, bind: bind, bindAsEventListener: bindAsEventListener, curry: curry, delay: delay, defer: defer, wrap: wrap, methodize: methodize } })()); Date.prototype.toJSON =3D function() { return '"' + this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z"'; }; RegExp.prototype.match =3D RegExp.prototype.test; RegExp.escape =3D function(str) { return String(str).replace(/([.*+?^=3D!:${}()|[\]\/\\])/g, '\\$1'); }; var PeriodicalExecuter =3D Class.create({ initialize: function(callback, frequency) { this.callback =3D callback; this.frequency =3D frequency; this.currentlyExecuting =3D false; this.registerCallback(); }, registerCallback: function() { this.timer =3D setInterval(this.onTimerEvent.bind(this), = this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer =3D null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting =3D true; this.execute(); this.currentlyExecuting =3D false; } catch(e) { this.currentlyExecuting =3D false; throw e; } } } }); Object.extend(String, { interpret: function(value) { return value =3D=3D null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, (function() { function prepareReplacement(replacement) { if (Object.isFunction(replacement)) return replacement; var template =3D new Template(replacement); return function(match) { return template.evaluate(match) }; } function gsub(pattern, replacement) { var result =3D '', source =3D this, match; replacement =3D prepareReplacement(replacement); if (Object.isString(pattern)) pattern =3D RegExp.escape(pattern); if (!(pattern.length || pattern.source)) { replacement =3D replacement(''); return replacement + source.split('').join(replacement) + = replacement; } while (source.length > 0) { if (match =3D source.match(pattern)) { result +=3D source.slice(0, match.index); result +=3D String.interpret(replacement(match)); source =3D source.slice(match.index + match[0].length); } else { result +=3D source, source =3D ''; } } return result; } function sub(pattern, replacement, count) { replacement =3D prepareReplacement(replacement); count =3D Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); } function scan(pattern, iterator) { this.gsub(pattern, iterator); return String(this); } function truncate(length, truncation) { length =3D length || 30; truncation =3D Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : = String(this); } function strip() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); } function stripTags() { return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, = ''); } function stripScripts() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), = ''); } function extractScripts() { var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img'); var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); } function evalScripts() { return this.extractScripts().map(function(script) { return = eval(script) }); } function escapeHTML() { return = this.replace(/&/g,'&').replace(//g,'>'); } function unescapeHTML() { return = this.stripTags().replace(/</g,'<').replace(/>/g,'>').replace(/&= /g,'&'); } function toQueryParams(separator) { var match =3D this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, = pair) { if ((pair =3D pair.split('=3D'))[0]) { var key =3D decodeURIComponent(pair.shift()); var value =3D pair.length > 1 ? pair.join('=3D') : pair[0]; if (value !=3D undefined) value =3D decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] =3D [hash[key]]; hash[key].push(value); } else hash[key] =3D value; } return hash; }); } function toArray() { return this.split(''); } function succ() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); } function times(count) { return count < 1 ? '' : new Array(count + 1).join(this); } function camelize() { var parts =3D this.split('-'), len =3D parts.length; if (len =3D=3D 1) return parts[0]; var camelized =3D this.charAt(0) =3D=3D '-' ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) : parts[0]; for (var i =3D 1; i < len; i++) camelized +=3D parts[i].charAt(0).toUpperCase() + = parts[i].substring(1); return camelized; } function capitalize() { return this.charAt(0).toUpperCase() + = this.substring(1).toLowerCase(); } function underscore() { return this.replace(/::/g, '/') .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') .replace(/([a-z\d])([A-Z])/g, '$1_$2') .replace(/-/g, '_') .toLowerCase(); } function dasherize() { return this.replace(/_/g, '-'); } function inspect(useDoubleQuotes) { var escapedString =3D this.replace(/[\x00-\x1f\\]/g, = function(character) { if (character in String.specialChar) { return String.specialChar[character]; } return '\\u00' + character.charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') = + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; } function toJSON() { return this.inspect(true); } function unfilterJSON(filter) { return this.replace(filter || Prototype.JSONFilter, '$1'); } function isJSON() { var str =3D this; if (str.blank()) return false; str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''); return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); } function evalJSON(sanitize) { var json =3D this.unfilterJSON(); try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + = this.inspect()); } function include(pattern) { return this.indexOf(pattern) > -1; } function startsWith(pattern) { return this.indexOf(pattern) =3D=3D=3D 0; } function endsWith(pattern) { var d =3D this.length - pattern.length; return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d; } function empty() { return this =3D=3D ''; } function blank() { return /^\s*$/.test(this); } function interpolate(object, pattern) { return new Template(this, pattern).evaluate(object); } return { gsub: gsub, sub: sub, scan: scan, truncate: truncate, strip: String.prototype.trim ? String.prototype.trim : = strip, stripTags: stripTags, stripScripts: stripScripts, extractScripts: extractScripts, evalScripts: evalScripts, escapeHTML: escapeHTML, unescapeHTML: unescapeHTML, toQueryParams: toQueryParams, parseQuery: toQueryParams, toArray: toArray, succ: succ, times: times, camelize: camelize, capitalize: capitalize, underscore: underscore, dasherize: dasherize, inspect: inspect, toJSON: toJSON, unfilterJSON: unfilterJSON, isJSON: isJSON, evalJSON: evalJSON, include: include, startsWith: startsWith, endsWith: endsWith, empty: empty, blank: blank, interpolate: interpolate }; })()); var Template =3D Class.create({ initialize: function(template, pattern) { this.template =3D template.toString(); this.pattern =3D pattern || Template.Pattern; }, evaluate: function(object) { if (object && Object.isFunction(object.toTemplateReplacements)) object =3D object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object =3D=3D null) return (match[1] + ''); var before =3D match[1] || ''; if (before =3D=3D '\\') return match[2]; var ctx =3D object, expr =3D match[3]; var pattern =3D /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match =3D pattern.exec(expr); if (match =3D=3D null) return before; while (match !=3D null) { var comp =3D match[1].startsWith('[') ? = match[2].replace(/\\\\]/g, ']') : match[1]; ctx =3D ctx[comp]; if (null =3D=3D ctx || '' =3D=3D match[3]) break; expr =3D expr.substring('[' =3D=3D match[3] ? match[1].length : = match[0].length); match =3D pattern.exec(expr); } return before + String.interpret(ctx); }); } }); Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/; var $break =3D { }; var Enumerable =3D (function() { function each(iterator, context) { var index =3D 0; try { this._each(function(value) { iterator.call(context, value, index++); }); } catch (e) { if (e !=3D $break) throw e; } return this; } function eachSlice(number, iterator, context) { var index =3D -number, slices =3D [], array =3D this.toArray(); if (number < 1) return array; while ((index +=3D number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); } function all(iterator, context) { iterator =3D iterator || Prototype.K; var result =3D true; this.each(function(value, index) { result =3D result && !!iterator.call(context, value, index); if (!result) throw $break; }); return result; } function any(iterator, context) { iterator =3D iterator || Prototype.K; var result =3D false; this.each(function(value, index) { if (result =3D !!iterator.call(context, value, index)) throw $break; }); return result; } function collect(iterator, context) { iterator =3D iterator || Prototype.K; var results =3D []; this.each(function(value, index) { results.push(iterator.call(context, value, index)); }); return results; } function detect(iterator, context) { var result; this.each(function(value, index) { if (iterator.call(context, value, index)) { result =3D value; throw $break; } }); return result; } function findAll(iterator, context) { var results =3D []; this.each(function(value, index) { if (iterator.call(context, value, index)) results.push(value); }); return results; } function grep(filter, iterator, context) { iterator =3D iterator || Prototype.K; var results =3D []; if (Object.isString(filter)) filter =3D new RegExp(RegExp.escape(filter)); this.each(function(value, index) { if (filter.match(value)) results.push(iterator.call(context, value, index)); }); return results; } function include(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) !=3D -1) return true; var found =3D false; this.each(function(value) { if (value =3D=3D object) { found =3D true; throw $break; } }); return found; } function inGroupsOf(number, fillWith) { fillWith =3D Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); } function inject(memo, iterator, context) { this.each(function(value, index) { memo =3D iterator.call(context, memo, value, index); }); return memo; } function invoke(method) { var args =3D $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); } function max(iterator, context) { iterator =3D iterator || Prototype.K; var result; this.each(function(value, index) { value =3D iterator.call(context, value, index); if (result =3D=3D null || value >=3D result) result =3D value; }); return result; } function min(iterator, context) { iterator =3D iterator || Prototype.K; var result; this.each(function(value, index) { value =3D iterator.call(context, value, index); if (result =3D=3D null || value < result) result =3D value; }); return result; } function partition(iterator, context) { iterator =3D iterator || Prototype.K; var trues =3D [], falses =3D []; this.each(function(value, index) { (iterator.call(context, value, index) ? trues : falses).push(value); }); return [trues, falses]; } function pluck(property) { var results =3D []; this.each(function(value) { results.push(value[property]); }); return results; } function reject(iterator, context) { var results =3D []; this.each(function(value, index) { if (!iterator.call(context, value, index)) results.push(value); }); return results; } function sortBy(iterator, context) { return this.map(function(value, index) { return { value: value, criteria: iterator.call(context, value, index) }; }).sort(function(left, right) { var a =3D left.criteria, b =3D right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); } function toArray() { return this.map(); } function zip() { var iterator =3D Prototype.K, args =3D $A(arguments); if (Object.isFunction(args.last())) iterator =3D args.pop(); var collections =3D [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); } function size() { return this.toArray().length; } function inspect() { return '#'; } return { each: each, eachSlice: eachSlice, all: all, every: all, any: any, some: any, collect: collect, map: collect, detect: detect, findAll: findAll, select: findAll, filter: findAll, grep: grep, include: include, member: include, inGroupsOf: inGroupsOf, inject: inject, invoke: invoke, max: max, min: min, partition: partition, pluck: pluck, reject: reject, sortBy: sortBy, toArray: toArray, entries: toArray, zip: zip, size: size, inspect: inspect, find: detect }; })(); function $A(iterable) { if (!iterable) return []; if ('toArray' in Object(iterable)) return iterable.toArray(); var length =3D iterable.length || 0, results =3D new Array(length); while (length--) results[length] =3D iterable[length]; return results; } function $w(string) { if (!Object.isString(string)) return []; string =3D string.strip(); return string ? string.split(/\s+/) : []; } Array.from =3D $A; (function() { var arrayProto =3D Array.prototype, slice =3D arrayProto.slice, _each =3D arrayProto.forEach; // use native browser JS 1.6 = implementation if available function each(iterator) { for (var i =3D 0, length =3D this.length; i < length; i++) iterator(this[i]); } if (!_each) _each =3D each; function clear() { this.length =3D 0; return this; } function first() { return this[0]; } function last() { return this[this.length - 1]; } function compact() { return this.select(function(value) { return value !=3D null; }); } function flatten() { return this.inject([], function(array, value) { if (Object.isArray(value)) return array.concat(value.flatten()); array.push(value); return array; }); } function without() { var values =3D slice.call(arguments, 0); return this.select(function(value) { return !values.include(value); }); } function reverse(inline) { return (inline !=3D=3D false ? this : this.toArray())._reverse(); } function uniq(sorted) { return this.inject([], function(array, value, index) { if (0 =3D=3D index || (sorted ? array.last() !=3D value : = !array.include(value))) array.push(value); return array; }); } function intersect(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item =3D=3D=3D value = }); }); } function clone() { return slice.call(this, 0); } function size() { return this.length; } function inspect() { return '[' + this.map(Object.inspect).join(', ') + ']'; } function toJSON() { var results =3D []; this.each(function(object) { var value =3D Object.toJSON(object); if (!Object.isUndefined(value)) results.push(value); }); return '[' + results.join(', ') + ']'; } function indexOf(item, i) { i || (i =3D 0); var length =3D this.length; if (i < 0) i =3D length + i; for (; i < length; i++) if (this[i] =3D=3D=3D item) return i; return -1; } function lastIndexOf(item, i) { i =3D isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n =3D this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; } function concat() { var array =3D slice.call(this, 0), item; for (var i =3D 0, length =3D arguments.length; i < length; i++) { item =3D arguments[i]; if (Object.isArray(item) && !('callee' in item)) { for (var j =3D 0, arrayLength =3D item.length; j < arrayLength; = j++) array.push(item[j]); } else { array.push(item); } } return array; } Object.extend(arrayProto, Enumerable); if (!arrayProto._reverse) arrayProto._reverse =3D arrayProto.reverse; Object.extend(arrayProto, { _each: _each, clear: clear, first: first, last: last, compact: compact, flatten: flatten, without: without, reverse: reverse, uniq: uniq, intersect: intersect, clone: clone, toArray: clone, size: size, inspect: inspect, toJSON: toJSON }); var CONCAT_ARGUMENTS_BUGGY =3D (function() { return [].concat(arguments)[0][0] !=3D=3D 1; })(1,2) if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat =3D concat; if (!arrayProto.indexOf) arrayProto.indexOf =3D indexOf; if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf =3D lastIndexOf; })(); function $H(object) { return new Hash(object); }; var Hash =3D Class.create(Enumerable, (function() { function initialize(object) { this._object =3D Object.isHash(object) ? object.toObject() : = Object.clone(object); } function _each(iterator) { for (var key in this._object) { var value =3D this._object[key], pair =3D [key, value]; pair.key =3D key; pair.value =3D value; iterator(pair); } } function set(key, value) { return this._object[key] =3D value; } function get(key) { if (this._object[key] !=3D=3D Object.prototype[key]) return this._object[key]; } function unset(key) { var value =3D this._object[key]; delete this._object[key]; return value; } function toObject() { return Object.clone(this._object); } function keys() { return this.pluck('key'); } function values() { return this.pluck('value'); } function index(value) { var match =3D this.detect(function(pair) { return pair.value =3D=3D=3D value; }); return match && match.key; } function merge(object) { return this.clone().update(object); } function update(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); } function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=3D' + encodeURIComponent(String.interpret(value)); } function toQueryString() { return this.inject([], function(results, pair) { var key =3D encodeURIComponent(pair.key), values =3D pair.value; if (values && typeof values =3D=3D 'object') { if (Object.isArray(values)) return results.concat(values.map(toQueryPair.curry(key))); } else results.push(toQueryPair(key, values)); return results; }).join('&'); } function inspect() { return '#'; } function toJSON() { return Object.toJSON(this.toObject()); } function clone() { return new Hash(this); } return { initialize: initialize, _each: _each, set: set, get: get, unset: unset, toObject: toObject, toTemplateReplacements: toObject, keys: keys, values: values, index: index, merge: merge, update: update, toQueryString: toQueryString, inspect: inspect, toJSON: toJSON, clone: clone }; })()); Hash.from =3D $H; Object.extend(Number.prototype, (function() { function toColorPart() { return this.toPaddedString(2, 16); } function succ() { return this + 1; } function times(iterator, context) { $R(0, this, true).each(iterator, context); return this; } function toPaddedString(length, radix) { var string =3D this.toString(radix || 10); return '0'.times(length - string.length) + string; } function toJSON() { return isFinite(this) ? this.toString() : 'null'; } function abs() { return Math.abs(this); } function round() { return Math.round(this); } function ceil() { return Math.ceil(this); } function floor() { return Math.floor(this); } return { toColorPart: toColorPart, succ: succ, times: times, toPaddedString: toPaddedString, toJSON: toJSON, abs: abs, round: round, ceil: ceil, floor: floor }; })()); function $R(start, end, exclusive) { return new ObjectRange(start, end, exclusive); } var ObjectRange =3D Class.create(Enumerable, (function() { function initialize(start, end, exclusive) { this.start =3D start; this.end =3D end; this.exclusive =3D exclusive; } function _each(iterator) { var value =3D this.start; while (this.include(value)) { iterator(value); value =3D value.succ(); } } function include(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <=3D this.end; } return { initialize: initialize, _each: _each, include: include }; })()); var Ajax =3D { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders =3D { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders =3D this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, = json]); } catch (e) { } } }); } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base =3D Class.create({ initialize: function(options) { this.options =3D { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method =3D this.options.method.toLowerCase(); if (Object.isString(this.options.parameters)) this.options.parameters =3D = this.options.parameters.toQueryParams(); else if (Object.isHash(this.options.parameters)) this.options.parameters =3D this.options.parameters.toObject(); } }); Ajax.Request =3D Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport =3D Ajax.getTransport(); this.request(url); }, request: function(url) { this.url =3D url; this.method =3D this.options.method; var params =3D Object.clone(this.options.parameters); if (!['get', 'post'].include(this.method)) { params['_method'] =3D this.method; this.method =3D 'post'; } this.parameters =3D params; if (params =3D Object.toQueryString(params)) { if (this.method =3D=3D 'get') this.url +=3D (this.url.include('?') ? '&' : '?') + params; else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) params +=3D '&_=3D'; } try { var response =3D new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) = this.respondToReadyState.bind(this).defer(1); this.transport.onreadystatechange =3D = this.onStateChange.bind(this); this.setRequestHeaders(); this.body =3D this.method =3D=3D 'post' ? (this.options.postBody = || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests = */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState =3D this.transport.readyState; if (readyState > 1 && !((readyState =3D=3D 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers =3D { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, = */*' }; if (this.method =3D=3D 'post') { headers['Content-type'] =3D this.options.contentType + (this.options.encoding ? '; charset=3D' + this.options.encoding = : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < = 2005) headers['Connection'] =3D 'close'; } if (typeof this.options.requestHeaders =3D=3D 'object') { var extras =3D this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i =3D 0, length =3D extras.length; i < length; i +=3D = 2) headers[extras[i]] =3D extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] =3D = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status =3D this.getStatus(); return !status || (status >=3D 200 && status < 300); }, getStatus: function() { try { return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state =3D Ajax.Request.Events[readyState], response =3D new = Ajax.Response(this); if (state =3D=3D 'Complete') { try { this._complete =3D true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : = 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); } var contentType =3D response.getHeader('Content-type'); if (this.options.evalJS =3D=3D 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && = contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s= *$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, = response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, = response.headerJSON); } catch (e) { this.dispatchException(e); } if (state =3D=3D 'Complete') { this.transport.onreadystatechange =3D Prototype.emptyFunction; } }, isSameOrigin: function() { var m =3D this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] =3D=3D = '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null; } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, = exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events =3D ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response =3D Class.create({ initialize: function(request){ this.request =3D request; var transport =3D this.transport =3D request.transport, readyState =3D this.readyState =3D transport.readyState; if((readyState > 2 && !Prototype.Browser.IE) || readyState =3D=3D 4) = { this.status =3D this.getStatus(); this.statusText =3D this.getStatusText(); this.responseText =3D String.interpret(transport.responseText); this.headerJSON =3D this._getHeaderJSON(); } if(readyState =3D=3D 4) { var xml =3D transport.responseXML; this.responseXML =3D Object.isUndefined(xml) ? null : xml; this.responseJSON =3D this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json =3D this.getHeader('X-JSON'); if (!json) return null; json =3D decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options =3D this.request.options; if (!options.evalJSON || (options.evalJSON !=3D 'force' && !(this.getHeader('Content-type') || = '').include('application/json')) || this.responseText.blank()) return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater =3D Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container =3D { success: (container.success || container), failure: (container.failure || (container.success ? null : = container)) }; options =3D Object.clone(options); var onComplete =3D options.onComplete; options.onComplete =3D (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); }, updateContent: function(responseText) { var receiver =3D this.container[this.success() ? 'success' : = 'failure'], options =3D this.options; if (!options.evalScripts) responseText =3D = responseText.stripScripts(); if (receiver =3D $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion =3D { }; insertion[options.insertion] =3D = responseText; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } } }); Ajax.PeriodicalUpdater =3D Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete =3D this.options.onComplete; this.frequency =3D (this.options.frequency || 2); this.decay =3D (this.options.decay || 1); this.updater =3D { }; this.container =3D container; this.url =3D url; this.start(); }, start: function() { this.options.onComplete =3D this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete =3D undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay =3D (response.responseText =3D=3D this.lastText ? this.decay * this.options.decay : 1); this.lastText =3D response.responseText; } this.timer =3D this.onTimerEvent.bind(this).delay(this.decay * = this.frequency); }, onTimerEvent: function() { this.updater =3D new Ajax.Updater(this.container, this.url, = this.options); } }); function $(element) { if (arguments.length > 1) { for (var i =3D 0, elements =3D [], length =3D arguments.length; i < = length; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element =3D document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath =3D function(expression, parentElement) { var results =3D []; var query =3D document.evaluate(expression, $(parentElement) || = document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i =3D 0, length =3D query.snapshotLength; i < length; i++) results.push(Element.extend(query.snapshotItem(i))); return results; }; } /*-----------------------------------------------------------------------= ---*/ if (!window.Node) var Node =3D { }; if (!Node.ELEMENT_NODE) { Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function(global) { var SETATTRIBUTE_IGNORES_NAME =3D (function(){ var elForm =3D document.createElement("form"); var elInput =3D document.createElement("input"); var root =3D document.documentElement; elInput.setAttribute("name", "test"); elForm.appendChild(elInput); root.appendChild(elForm); var isBuggy =3D elForm.elements ? (typeof elForm.elements.test =3D=3D "undefined") : null; root.removeChild(elForm); elForm =3D elInput =3D null; return isBuggy; })(); var element =3D global.Element; global.Element =3D function(tagName, attributes) { attributes =3D attributes || { }; tagName =3D tagName.toLowerCase(); var cache =3D Element.cache; if (SETATTRIBUTE_IGNORES_NAME && attributes.name) { tagName =3D '<' + tagName + ' name=3D"' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), = attributes); } if (!cache[tagName]) cache[tagName] =3D = Element.extend(document.createElement(tagName)); return Element.writeAttribute(cache[tagName].cloneNode(false), = attributes); }; Object.extend(global.Element, element || { }); if (element) global.Element.prototype =3D element.prototype; })(this); Element.cache =3D { }; Element.idCounter =3D 1; Element.Methods =3D { visible: function(element) { return $(element).style.display !=3D 'none'; }, toggle: function(element) { element =3D $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { element =3D $(element); element.style.display =3D 'none'; return element; }, show: function(element) { element =3D $(element); element.style.display =3D ''; return element; }, remove: function(element) { element =3D $(element); element.parentNode.removeChild(element); return element; }, update: (function(){ var SELECT_ELEMENT_INNERHTML_BUGGY =3D (function(){ var el =3D document.createElement("select"), isBuggy =3D true; el.innerHTML =3D ""; if (el.options && el.options[0]) { isBuggy =3D el.options[0].nodeName.toUpperCase() !=3D=3D = "OPTION"; } el =3D null; return isBuggy; })(); var TABLE_ELEMENT_INNERHTML_BUGGY =3D (function(){ try { var el =3D document.createElement("table"); if (el && el.tBodies) { el.innerHTML =3D "test"; var isBuggy =3D typeof el.tBodies[0] =3D=3D "undefined"; el =3D null; return isBuggy; } } catch (e) { return true; } })(); var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING =3D (function () { var s =3D document.createElement("script"), isBuggy =3D false; try { s.appendChild(document.createTextNode("")); isBuggy =3D !s.firstChild || s.firstChild && s.firstChild.nodeType !=3D=3D 3; } catch (e) { isBuggy =3D true; } s =3D null; return isBuggy; })(); function update(element, content) { element =3D $(element); if (content && content.toElement) content =3D content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content =3D Object.toHTML(content); var tagName =3D element.tagName.toUpperCase(); if (tagName =3D=3D=3D 'SCRIPT' && = SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) { element.text =3D content; return element; } if (SELECT_ELEMENT_INNERHTML_BUGGY || = TABLE_ELEMENT_INNERHTML_BUGGY) { if (tagName in Element._insertionTranslations.tags) { while (element.firstChild) { element.removeChild(element.firstChild); } Element._getContentFromAnonymousElement(tagName, = content.stripScripts()) .each(function(node) { element.appendChild(node) }); } else { element.innerHTML =3D content.stripScripts(); } } else { element.innerHTML =3D content.stripScripts(); } content.evalScripts.bind(content).defer(); return element; } return update; })(), replace: function(element, content) { element =3D $(element); if (content && content.toElement) content =3D content.toElement(); else if (!Object.isElement(content)) { content =3D Object.toHTML(content); var range =3D element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content =3D = range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; }, insert: function(element, insertions) { element =3D $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && = (insertions.toElement || insertions.toHTML))) insertions =3D {bottom:insertions}; var content, insert, tagName, childNodes; for (var position in insertions) { content =3D insertions[position]; position =3D position.toLowerCase(); insert =3D Element._insertionTranslations[position]; if (content && content.toElement) content =3D content.toElement(); if (Object.isElement(content)) { insert(element, content); continue; } content =3D Object.toHTML(content); tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after') ? element.parentNode : element).tagName.toUpperCase(); childNodes =3D Element._getContentFromAnonymousElement(tagName, = content.stripScripts()); if (position =3D=3D 'top' || position =3D=3D 'after') = childNodes.reverse(); childNodes.each(insert.curry(element)); content.evalScripts.bind(content).defer(); } return element; }, wrap: function(element, wrapper, attributes) { element =3D $(element); if (Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes || { }); else if (Object.isString(wrapper)) wrapper =3D new Element(wrapper, = attributes); else wrapper =3D new Element('div', wrapper); if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; }, inspect: function(element) { element =3D $(element); var result =3D '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property =3D pair.first(), attribute =3D pair.last(); var value =3D (element[property] || '').toString(); if (value) result +=3D ' ' + attribute + '=3D' + = value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property) { element =3D $(element); var elements =3D []; while (element =3D element[property]) if (element.nodeType =3D=3D 1) elements.push(Element.extend(element)); return elements; }, ancestors: function(element) { return Element.recursivelyCollect(element, 'parentNode'); }, descendants: function(element) { return Element.select(element, "*"); }, firstDescendant: function(element) { element =3D $(element).firstChild; while (element && element.nodeType !=3D 1) element =3D = element.nextSibling; return $(element); }, immediateDescendants: function(element) { if (!(element =3D $(element).firstChild)) return []; while (element && element.nodeType !=3D 1) element =3D = element.nextSibling; if (element) return [element].concat($(element).nextSiblings()); return []; }, previousSiblings: function(element) { return Element.recursivelyCollect(element, 'previousSibling'); }, nextSiblings: function(element) { return Element.recursivelyCollect(element, 'nextSibling'); }, siblings: function(element) { element =3D $(element); return Element.previousSiblings(element).reverse() .concat(Element.nextSiblings(element)); }, match: function(element, selector) { if (Object.isString(selector)) selector =3D new Selector(selector); return selector.match($(element)); }, up: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return $(element.parentNode); var ancestors =3D Element.ancestors(element); return Object.isNumber(expression) ? ancestors[expression] : Selector.findElement(ancestors, expression, index); }, down: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return = Element.firstDescendant(element); return Object.isNumber(expression) ? = Element.descendants(element)[expression] : Element.select(element, expression)[index || 0]; }, previous: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return = $(Selector.handlers.previousElementSibling(element)); var previousSiblings =3D Element.previousSiblings(element); return Object.isNumber(expression) ? previousSiblings[expression] : Selector.findElement(previousSiblings, expression, index); }, next: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return = $(Selector.handlers.nextElementSibling(element)); var nextSiblings =3D Element.nextSiblings(element); return Object.isNumber(expression) ? nextSiblings[expression] : Selector.findElement(nextSiblings, expression, index); }, select: function(element) { var args =3D Array.prototype.slice.call(arguments, 1); return Selector.findChildElements(element, args); }, adjacent: function(element) { var args =3D Array.prototype.slice.call(arguments, 1); return Selector.findChildElements(element.parentNode, = args).without(element); }, identify: function(element) { element =3D $(element); var id =3D Element.readAttribute(element, 'id'); if (id) return id; do { id =3D 'anonymous_element_' + Element.idCounter++ } while = ($(id)); Element.writeAttribute(element, 'id', id); return id; }, readAttribute: function(element, name) { element =3D $(element); if (Prototype.Browser.IE) { var t =3D Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name =3D t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null = : element.attributes[name].value; } } return element.getAttribute(name); }, writeAttribute: function(element, name, value) { element =3D $(element); var attributes =3D { }, t =3D Element._attributeTranslations.write; if (typeof name =3D=3D 'object') attributes =3D name; else attributes[name] =3D Object.isUndefined(value) ? true : value; for (var attr in attributes) { name =3D t.names[attr] || attr; value =3D attributes[attr]; if (t.values[attr]) name =3D t.values[attr](element, value); if (value =3D=3D=3D false || value =3D=3D=3D null) element.removeAttribute(name); else if (value =3D=3D=3D true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; }, getHeight: function(element) { return Element.getDimensions(element).height; }, getWidth: function(element) { return Element.getDimensions(element).width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element =3D $(element))) return; var elementClassName =3D element.className; return (elementClassName.length > 0 && (elementClassName =3D=3D = className || new RegExp("(^|\\s)" + className + = "(\\s|$)").test(elementClassName))); }, addClassName: function(element, className) { if (!(element =3D $(element))) return; if (!Element.hasClassName(element, className)) element.className +=3D (element.className ? ' ' : '') + className; return element; }, removeClassName: function(element, className) { if (!(element =3D $(element))) return; element.className =3D element.className.replace( new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element =3D $(element))) return; return Element[Element.hasClassName(element, className) ? 'removeClassName' : 'addClassName'](element, className); }, cleanWhitespace: function(element) { element =3D $(element); var node =3D element.firstChild; while (node) { var nextNode =3D node.nextSibling; if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node =3D nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element =3D $(element), ancestor =3D $(ancestor); if (element.compareDocumentPosition) return (element.compareDocumentPosition(ancestor) & 8) =3D=3D=3D = 8; if (ancestor.contains) return ancestor.contains(element) && ancestor !=3D=3D element; while (element =3D element.parentNode) if (element =3D=3D ancestor) return true; return false; }, scrollTo: function(element) { element =3D $(element); var pos =3D Element.cumulativeOffset(element); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element =3D $(element); style =3D style =3D=3D 'float' ? 'cssFloat' : style.camelize(); var value =3D element.style[style]; if (!value || value =3D=3D 'auto') { var css =3D document.defaultView.getComputedStyle(element, null); value =3D css ? css[style] : null; } if (style =3D=3D 'opacity') return value ? parseFloat(value) : 1.0; return value =3D=3D 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) { element =3D $(element); var elementStyle =3D element.style, match; if (Object.isString(styles)) { element.style.cssText +=3D ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : = element; } for (var property in styles) if (property =3D=3D 'opacity') = element.setOpacity(styles[property]); else elementStyle[(property =3D=3D 'float' || property =3D=3D = 'cssFloat') ? (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : = 'styleFloat') : property] =3D styles[property]; return element; }, setOpacity: function(element, value) { element =3D $(element); element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? = '' : (value < 0.00001) ? 0 : value; return element; }, getDimensions: function(element) { element =3D $(element); var display =3D Element.getStyle(element, 'display'); if (display !=3D 'none' && display !=3D null) // Safari bug return {width: element.offsetWidth, height: element.offsetHeight}; var els =3D element.style; var originalVisibility =3D els.visibility; var originalPosition =3D els.position; var originalDisplay =3D els.display; els.visibility =3D 'hidden'; if (originalPosition !=3D 'fixed') // Switching fixed to absolute = causes issues in Safari els.position =3D 'absolute'; els.display =3D 'block'; var originalWidth =3D element.clientWidth; var originalHeight =3D element.clientHeight; els.display =3D originalDisplay; els.position =3D originalPosition; els.visibility =3D originalVisibility; return {width: originalWidth, height: originalHeight}; }, makePositioned: function(element) { element =3D $(element); var pos =3D Element.getStyle(element, 'position'); if (pos =3D=3D 'static' || !pos) { element._madePositioned =3D true; element.style.position =3D 'relative'; if (Prototype.Browser.Opera) { element.style.top =3D 0; element.style.left =3D 0; } } return element; }, undoPositioned: function(element) { element =3D $(element); if (element._madePositioned) { element._madePositioned =3D undefined; element.style.position =3D element.style.top =3D element.style.left =3D element.style.bottom =3D element.style.right =3D ''; } return element; }, makeClipping: function(element) { element =3D $(element); if (element._overflow) return element; element._overflow =3D Element.getStyle(element, 'overflow') || = 'auto'; if (element._overflow !=3D=3D 'hidden') element.style.overflow =3D 'hidden'; return element; }, undoClipping: function(element) { element =3D $(element); if (!element._overflow) return element; element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : = element._overflow; element._overflow =3D null; return element; }, cumulativeOffset: function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; element =3D element.offsetParent; } while (element); return Element._returnOffset(valueL, valueT); }, positionedOffset: function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; element =3D element.offsetParent; if (element) { if (element.tagName.toUpperCase() =3D=3D 'BODY') break; var p =3D Element.getStyle(element, 'position'); if (p !=3D=3D 'static') break; } } while (element); return Element._returnOffset(valueL, valueT); }, absolutize: function(element) { element =3D $(element); if (Element.getStyle(element, 'position') =3D=3D 'absolute') return = element; var offsets =3D Element.positionedOffset(element); var top =3D offsets[1]; var left =3D offsets[0]; var width =3D element.clientWidth; var height =3D element.clientHeight; element._originalLeft =3D left - parseFloat(element.style.left || = 0); element._originalTop =3D top - parseFloat(element.style.top || = 0); element._originalWidth =3D element.style.width; element._originalHeight =3D element.style.height; element.style.position =3D 'absolute'; element.style.top =3D top + 'px'; element.style.left =3D left + 'px'; element.style.width =3D width + 'px'; element.style.height =3D height + 'px'; return element; }, relativize: function(element) { element =3D $(element); if (Element.getStyle(element, 'position') =3D=3D 'relative') return = element; element.style.position =3D 'relative'; var top =3D parseFloat(element.style.top || 0) - = (element._originalTop || 0); var left =3D parseFloat(element.style.left || 0) - = (element._originalLeft || 0); element.style.top =3D top + 'px'; element.style.left =3D left + 'px'; element.style.height =3D element._originalHeight; element.style.width =3D element._originalWidth; return element; }, cumulativeScrollOffset: function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.scrollTop || 0; valueL +=3D element.scrollLeft || 0; element =3D element.parentNode; } while (element); return Element._returnOffset(valueL, valueT); }, getOffsetParent: function(element) { if (element.offsetParent) return $(element.offsetParent); if (element =3D=3D document.body) return $(element); while ((element =3D element.parentNode) && element !=3D = document.body) if (Element.getStyle(element, 'position') !=3D 'static') return $(element); return $(document.body); }, viewportOffset: function(forElement) { var valueT =3D 0, valueL =3D 0; var element =3D forElement; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; if (element.offsetParent =3D=3D document.body && Element.getStyle(element, 'position') =3D=3D 'absolute') break; } while (element =3D element.offsetParent); element =3D forElement; do { if (!Prototype.Browser.Opera || (element.tagName && = (element.tagName.toUpperCase() =3D=3D 'BODY'))) { valueT -=3D element.scrollTop || 0; valueL -=3D element.scrollLeft || 0; } } while (element =3D element.parentNode); return Element._returnOffset(valueL, valueT); }, clonePosition: function(element, source) { var options =3D Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || { }); source =3D $(source); var p =3D Element.viewportOffset(source); element =3D $(element); var delta =3D [0, 0]; var parent =3D null; if (Element.getStyle(element, 'position') =3D=3D 'absolute') { parent =3D Element.getOffsetParent(element); delta =3D Element.viewportOffset(parent); } if (parent =3D=3D document.body) { delta[0] -=3D document.body.offsetLeft; delta[1] -=3D document.body.offsetTop; } if (options.setLeft) element.style.left =3D (p[0] - delta[0] + = options.offsetLeft) + 'px'; if (options.setTop) element.style.top =3D (p[1] - delta[1] + = options.offsetTop) + 'px'; if (options.setWidth) element.style.width =3D source.offsetWidth + = 'px'; if (options.setHeight) element.style.height =3D source.offsetHeight = + 'px'; return element; } }; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations =3D { write: { names: { className: 'class', htmlFor: 'for' }, values: { } } }; if (Prototype.Browser.Opera) { Element.Methods.getStyle =3D Element.Methods.getStyle.wrap( function(proceed, element, style) { switch (style) { case 'left': case 'top': case 'right': case 'bottom': if (proceed(element, 'position') =3D=3D=3D 'static') return = null; case 'height': case 'width': if (!Element.visible(element)) return null; var dim =3D parseInt(proceed(element, style), 10); if (dim !=3D=3D element['offset' + style.capitalize()]) return dim + 'px'; var properties; if (style =3D=3D=3D 'height') { properties =3D ['border-top-width', 'padding-top', 'padding-bottom', 'border-bottom-width']; } else { properties =3D ['border-left-width', 'padding-left', 'padding-right', 'border-right-width']; } return properties.inject(dim, function(memo, property) { var val =3D proceed(element, property); return val =3D=3D=3D null ? memo : memo - parseInt(val, 10); }) + 'px'; default: return proceed(element, style); } } ); Element.Methods.readAttribute =3D Element.Methods.readAttribute.wrap( function(proceed, element, attribute) { if (attribute =3D=3D=3D 'title') return element.title; return proceed(element, attribute); } ); } else if (Prototype.Browser.IE) { Element.Methods.getOffsetParent =3D = Element.Methods.getOffsetParent.wrap( function(proceed, element) { element =3D $(element); try { element.offsetParent } catch(e) { return $(document.body) } var position =3D element.getStyle('position'); if (position !=3D=3D 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value =3D proceed(element); element.setStyle({ position: position }); return value; } ); $w('positionedOffset viewportOffset').each(function(method) { Element.Methods[method] =3D Element.Methods[method].wrap( function(proceed, element) { element =3D $(element); try { element.offsetParent } catch(e) { return Element._returnOffset(0,0) } var position =3D element.getStyle('position'); if (position !=3D=3D 'static') return proceed(element); var offsetParent =3D element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') =3D=3D=3D = 'fixed') offsetParent.setStyle({ zoom: 1 }); element.setStyle({ position: 'relative' }); var value =3D proceed(element); element.setStyle({ position: position }); return value; } ); }); Element.Methods.cumulativeOffset =3D = Element.Methods.cumulativeOffset.wrap( function(proceed, element) { try { element.offsetParent } catch(e) { return Element._returnOffset(0,0) } return proceed(element); } ); Element.Methods.getStyle =3D function(element, style) { element =3D $(element); style =3D (style =3D=3D 'float' || style =3D=3D 'cssFloat') ? = 'styleFloat' : style.camelize(); var value =3D element.style[style]; if (!value && element.currentStyle) value =3D = element.currentStyle[style]; if (style =3D=3D 'opacity') { if (value =3D (element.getStyle('filter') || = '').match(/alpha\(opacity=3D(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value =3D=3D 'auto') { if ((style =3D=3D 'width' || style =3D=3D 'height') && = (element.getStyle('display') !=3D 'none')) return element['offset' + style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity =3D function(element, value) { function stripAlpha(filter){ return filter.replace(/alpha\([^\)]*\)/gi,''); } element =3D $(element); var currentStyle =3D element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom =3D=3D 'normal')) element.style.zoom =3D 1; var filter =3D element.getStyle('filter'), style =3D element.style; if (value =3D=3D 1 || value =3D=3D=3D '') { (filter =3D stripAlpha(filter)) ? style.filter =3D filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value =3D 0; style.filter =3D stripAlpha(filter) + 'alpha(opacity=3D' + (value * 100) + ')'; return element; }; Element._attributeTranslations =3D (function(){ var classProp =3D 'className'; var forProp =3D 'for'; var el =3D document.createElement('div'); el.setAttribute(classProp, 'x'); if (el.className !=3D=3D 'x') { el.setAttribute('class', 'x'); if (el.className =3D=3D=3D 'x') { classProp =3D 'class'; } } el =3D null; el =3D document.createElement('label'); el.setAttribute(forProp, 'x'); if (el.htmlFor !=3D=3D 'x') { el.setAttribute('htmlFor', 'x'); if (el.htmlFor =3D=3D=3D 'x') { forProp =3D 'htmlFor'; } } el =3D null; return { read: { names: { 'class': classProp, 'className': classProp, 'for': forProp, 'htmlFor': forProp }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute); }, _getAttr2: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node =3D element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: (function(){ var el =3D document.createElement('div'); el.onclick =3D Prototype.emptyFunction; var value =3D el.getAttribute('onclick'); var f; if (String(value).indexOf('{') > -1) { f =3D function(element, attribute) { attribute =3D element.getAttribute(attribute); if (!attribute) return null; attribute =3D attribute.toString(); attribute =3D attribute.split('{')[1]; attribute =3D attribute.split('}')[0]; return attribute.strip(); }; } else if (value =3D=3D=3D '') { f =3D function(element, attribute) { attribute =3D element.getAttribute(attribute); if (!attribute) return null; return attribute.strip(); }; } el =3D null; return f; })(), _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : = null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } } } })(); Element._attributeTranslations.write =3D { names: Object.extend({ cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked =3D !!value; }, style: function(element, value) { element.style.cssText =3D value ? value : ''; } } }; Element._attributeTranslations.has =3D {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc = frameBorder').each(function(attr) { Element._attributeTranslations.write.names[attr.toLowerCase()] =3D = attr; Element._attributeTranslations.has[attr.toLowerCase()] =3D attr; }); (function(v) { Object.extend(v, { href: v._getAttr2, src: v._getAttr2, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values); if (Prototype.BrowserFeatures.ElementExtensions) { (function() { function _descendants(element) { var nodes =3D element.getElementsByTagName('*'), results =3D []; for (var i =3D 0, node; node =3D nodes[i]; i++) if (node.tagName !=3D=3D "!") // Filter out comment nodes. results.push(node); return results; } Element.Methods.down =3D function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return element.firstDescendant(); return Object.isNumber(expression) ? = _descendants(element)[expression] : Element.select(element, expression)[index || 0]; } })(); } } else if (Prototype.Browser.Gecko && = /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity =3D function(element, value) { element =3D $(element); element.style.opacity =3D (value =3D=3D 1) ? 0.999999 : (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } else if (Prototype.Browser.WebKit) { Element.Methods.setOpacity =3D function(element, value) { element =3D $(element); element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? = '' : (value < 0.00001) ? 0 : value; if (value =3D=3D 1) if(element.tagName.toUpperCase() =3D=3D 'IMG' && element.width) { element.width++; element.width--; } else try { var n =3D document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { } return element; }; Element.Methods.cumulativeOffset =3D function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; if (element.offsetParent =3D=3D document.body) if (Element.getStyle(element, 'position') =3D=3D 'absolute') = break; element =3D element.offsetParent; } while (element); return Element._returnOffset(valueL, valueT); }; } if ('outerHTML' in document.documentElement) { Element.Methods.replace =3D function(element, content) { element =3D $(element); if (content && content.toElement) content =3D content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content =3D Object.toHTML(content); var parent =3D element.parentNode, tagName =3D = parent.tagName.toUpperCase(); if (Element._insertionTranslations.tags[tagName]) { var nextSibling =3D element.next(); var fragments =3D Element._getContentFromAnonymousElement(tagName, = content.stripScripts()); parent.removeChild(element); if (nextSibling) fragments.each(function(node) { parent.insertBefore(node, = nextSibling) }); else fragments.each(function(node) { parent.appendChild(node) }); } else element.outerHTML =3D content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } Element._returnOffset =3D function(l, t) { var result =3D [l, t]; result.left =3D l; result.top =3D t; return result; }; Element._getContentFromAnonymousElement =3D function(tagName, html) { var div =3D new Element('div'), t =3D = Element._insertionTranslations.tags[tagName]; if (t) { div.innerHTML =3D t[0] + html + t[1]; t[2].times(function() { div =3D div.firstChild }); } else div.innerHTML =3D html; return $A(div.childNodes); }; Element._insertionTranslations =3D { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['', '
', 1], TBODY: ['', '
', 2], TR: ['', '
', 3], TD: ['
', '
', 4], SELECT: ['', 1] } }; (function() { var tags =3D Element._insertionTranslations.tags; Object.extend(tags, { THEAD: tags.TBODY, TFOOT: tags.TBODY, TH: tags.TD }); })(); Element.Methods.Simulated =3D { hasAttribute: function(element, attribute) { attribute =3D Element._attributeTranslations.has[attribute] || = attribute; var node =3D $(element).getAttributeNode(attribute); return !!(node && node.specified); } }; Element.Methods.ByTag =3D { }; Object.extend(Element, Element.Methods); (function(div) { if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) = { window.HTMLElement =3D { }; window.HTMLElement.prototype =3D div['__proto__']; Prototype.BrowserFeatures.ElementExtensions =3D true; } div =3D null; })(document.createElement('div')) Element.extend =3D (function() { function checkDeficiency(tagName) { if (typeof window.Element !=3D 'undefined') { var proto =3D window.Element.prototype; if (proto) { var id =3D '_' + (Math.random()+'').slice(2); var el =3D document.createElement(tagName); proto[id] =3D 'x'; var isBuggy =3D (el[id] !=3D=3D 'x'); delete proto[id]; el =3D null; return isBuggy; } } return false; } function extendElementWith(element, methods) { for (var property in methods) { var value =3D methods[property]; if (Object.isFunction(value) && !(property in element)) element[property] =3D value.methodize(); } } var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY =3D checkDeficiency('object'); if (Prototype.BrowserFeatures.SpecificElementExtensions) { if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) { return function(element) { if (element && typeof element._extendedByPrototype =3D=3D = 'undefined') { var t =3D element.tagName; if (t && (/^(?:object|applet|embed)$/i.test(t))) { extendElementWith(element, Element.Methods); extendElementWith(element, Element.Methods.Simulated); extendElementWith(element, = Element.Methods.ByTag[t.toUpperCase()]); } } return element; } } return Prototype.K; } var Methods =3D { }, ByTag =3D Element.Methods.ByTag; var extend =3D Object.extend(function(element) { if (!element || typeof element._extendedByPrototype !=3D 'undefined' = || element.nodeType !=3D 1 || element =3D=3D window) return = element; var methods =3D Object.clone(Methods), tagName =3D element.tagName.toUpperCase(); if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); extendElementWith(element, methods); element._extendedByPrototype =3D Prototype.emptyFunction; return element; }, { refresh: function() { if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend; })(); Element.hasAttribute =3D function(element, attribute) { if (element.hasAttribute) return element.hasAttribute(attribute); return Element.Methods.Simulated.hasAttribute(element, attribute); }; Element.addMethods =3D function(methods) { var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods) }); } if (arguments.length =3D=3D 2) { var tagName =3D methods; methods =3D arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || { }); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName =3D tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] =3D { }; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent =3D onlyIfAbsent || false; for (var property in methods) { var value =3D methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] =3D value.methodize(); } } function findDOMClass(tagName) { var klass; var trans =3D { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": = "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": = "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", = "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", = "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", = "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass =3D 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass =3D 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; var element =3D document.createElement(tagName); var proto =3D element['__proto__'] || element.constructor.prototype; element =3D null; return proto; } var elementPrototype =3D window.HTMLElement ? HTMLElement.prototype : Element.prototype; if (F.ElementExtensions) { copy(Element.Methods, elementPrototype); copy(Element.Methods.Simulated, elementPrototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass =3D findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) Element.extend.refresh(); Element.cache =3D { }; }; document.viewport =3D { getDimensions: function() { return { width: this.getWidth(), height: this.getHeight() }; }, getScrollOffsets: function() { return Element._returnOffset( window.pageXOffset || document.documentElement.scrollLeft || = document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || = document.body.scrollTop); } }; (function(viewport) { var B =3D Prototype.Browser, doc =3D document, element, property =3D = {}; function getRootElement() { if (B.WebKit && !doc.evaluate) return document; if (B.Opera && window.parseFloat(window.opera.version()) < 9.5) return document.body; return document.documentElement; } function define(D) { if (!element) element =3D getRootElement(); property[D] =3D 'client' + D; viewport['get' + D] =3D function() { return element[property[D]] }; return viewport['get' + D](); } viewport.getWidth =3D define.curry('Width'); viewport.getHeight =3D define.curry('Height'); })(document.viewport); Element.Storage =3D { UID: 1 }; Element.addMethods({ getStorage: function(element) { if (!(element =3D $(element))) return; var uid; if (element =3D=3D=3D window) { uid =3D 0; } else { if (typeof element._prototypeUID =3D=3D=3D "undefined") element._prototypeUID =3D [Element.Storage.UID++]; uid =3D element._prototypeUID[0]; } if (!Element.Storage[uid]) Element.Storage[uid] =3D $H(); return Element.Storage[uid]; }, store: function(element, key, value) { if (!(element =3D $(element))) return; if (arguments.length =3D=3D=3D 2) { Element.getStorage(element).update(key); } else { Element.getStorage(element).set(key, value); } return element; }, retrieve: function(element, key, defaultValue) { if (!(element =3D $(element))) return; var hash =3D Element.getStorage(element), value =3D hash.get(key); if (Object.isUndefined(value)) { hash.set(key, defaultValue); value =3D defaultValue; } return value; }, clone: function(element, deep) { if (!(element =3D $(element))) return; var clone =3D element.cloneNode(deep); clone._prototypeUID =3D void 0; if (deep) { var descendants =3D Element.select(clone, '*'), i =3D descendants.length; while (i--) { descendants[i]._prototypeUID =3D void 0; } } return Element.extend(clone); } }); /* Portions of the Selector class are derived from Jack Slocum's = DomQuery, * part of YUI-Ext version 0.40, distributed under the terms of an = MIT-style * license. Please see http://www.yui-ext.com/ for more information. */ var Selector =3D Class.create({ initialize: function(expression) { this.expression =3D expression.strip(); if (this.shouldUseSelectorsAPI()) { this.mode =3D 'selectorsAPI'; } else if (this.shouldUseXPath()) { this.mode =3D 'xpath'; this.compileXPathMatcher(); } else { this.mode =3D "normal"; this.compileMatcher(); } }, shouldUseXPath: (function() { var IS_DESCENDANT_SELECTOR_BUGGY =3D (function(){ var isBuggy =3D false; if (document.evaluate && window.XPathResult) { var el =3D document.createElement('div'); el.innerHTML =3D = '
'; var xpath =3D ".//*[local-name()=3D'ul' or local-name()=3D'UL']" = + "//*[local-name()=3D'li' or local-name()=3D'LI']"; var result =3D document.evaluate(xpath, el, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); isBuggy =3D (result.snapshotLength !=3D=3D 2); el =3D null; } return isBuggy; })(); return function() { if (!Prototype.BrowserFeatures.XPath) return false; var e =3D this.expression; if (Prototype.Browser.WebKit && (e.include("-of-type") || e.include(":empty"))) return false; if ((/(\[[\w-]*?:|:checked)/).test(e)) return false; if (IS_DESCENDANT_SELECTOR_BUGGY) return false; return true; } })(), shouldUseSelectorsAPI: function() { if (!Prototype.BrowserFeatures.SelectorsAPI) return false; if (Selector.CASE_INSENSITIVE_CLASS_NAMES) return false; if (!Selector._div) Selector._div =3D new Element('div'); try { Selector._div.querySelector(this.expression); } catch(e) { return false; } return true; }, compileMatcher: function() { var e =3D this.expression, ps =3D Selector.patterns, h =3D = Selector.handlers, c =3D Selector.criteria, le, p, m, len =3D ps.length, name; if (Selector._cache[e]) { this.matcher =3D Selector._cache[e]; return; } this.matcher =3D ["this.matcher =3D function(root) {", "var r =3D root, h =3D Selector.handlers, c =3D = false, n;"]; while (e && le !=3D e && (/\S/).test(e)) { le =3D e; for (var i =3D 0; i"; } }); if (Prototype.BrowserFeatures.SelectorsAPI && document.compatMode =3D=3D=3D 'BackCompat') { Selector.CASE_INSENSITIVE_CLASS_NAMES =3D (function(){ var div =3D document.createElement('div'), span =3D document.createElement('span'); div.id =3D "prototype_test_id"; span.className =3D 'Test'; div.appendChild(span); var isIgnored =3D (div.querySelector('#prototype_test_id .test') = !=3D=3D null); div =3D span =3D null; return isIgnored; })(); } Object.extend(Selector, { _cache: { }, xpath: { descendant: "//*", child: "/*", adjacent: "/following-sibling::*[1]", laterSibling: '/following-sibling::*', tagName: function(m) { if (m[1] =3D=3D '*') return ''; return "[local-name()=3D'" + m[1].toLowerCase() + "' or local-name()=3D'" + m[1].toUpperCase() + "']"; }, className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", id: "[@id=3D'#{1}']", attrPresence: function(m) { m[1] =3D m[1].toLowerCase(); return new Template("[@#{1}]").evaluate(m); }, attr: function(m) { m[1] =3D m[1].toLowerCase(); m[3] =3D m[5] || m[6]; return new Template(Selector.xpath.operators[m[2]]).evaluate(m); }, pseudo: function(m) { var h =3D Selector.xpath.pseudos[m[1]]; if (!h) return ''; if (Object.isFunction(h)) return h(m); return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); }, operators: { '=3D': "[@#{1}=3D'#{3}']", '!=3D': "[@#{1}!=3D'#{3}']", '^=3D': "[starts-with(@#{1}, '#{3}')]", '$=3D': "[substring(@#{1}, (string-length(@#{1}) - = string-length('#{3}') + 1))=3D'#{3}']", '*=3D': "[contains(@#{1}, '#{3}')]", '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" }, pseudos: { 'first-child': '[not(preceding-sibling::*)]', 'last-child': '[not(following-sibling::*)]', 'only-child': '[not(preceding-sibling::* or = following-sibling::*)]', 'empty': "[count(*) =3D 0 and (count(text()) =3D 0)]", 'checked': "[@checked]", 'disabled': "[(@disabled) and (@type!=3D'hidden')]", 'enabled': "[not(@disabled) and (@type!=3D'hidden')]", 'not': function(m) { var e =3D m[6], p =3D Selector.patterns, x =3D Selector.xpath, le, v, len =3D p.length, name; var exclusion =3D []; while (e && le !=3D e && (/\S/).test(e)) { le =3D e; for (var i =3D 0; i=3D 0)]"; return new Template(predicate).evaluate({ fragment: fragment, a: a, b: b }); } } } }, criteria: { tagName: 'n =3D h.tagName(n, r, "#{1}", c); c =3D false;', className: 'n =3D h.className(n, r, "#{1}", c); c =3D false;', id: 'n =3D h.id(n, r, "#{1}", c); c =3D false;', attrPresence: 'n =3D h.attrPresence(n, r, "#{1}", c); c =3D false;', attr: function(m) { m[3] =3D (m[5] || m[6]); return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}", = c); c =3D false;').evaluate(m); }, pseudo: function(m) { if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"'); return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c = =3D false;').evaluate(m); }, descendant: 'c =3D "descendant";', child: 'c =3D "child";', adjacent: 'c =3D "adjacent";', laterSibling: 'c =3D "laterSibling";' }, patterns: [ { name: 'laterSibling', re: /^\s*~\s*/ }, { name: 'child', re: /^\s*>\s*/ }, { name: 'adjacent', re: /^\s*\+\s*/ }, { name: 'descendant', re: /^\s/ }, { name: 'tagName', re: /^\s*(\*|[\w\-]+)(\b|$)?/ }, { name: 'id', re: /^#([\w\-\*]+)(\b|$)/ }, { name: 'className', re: /^\.([\w\-\*]+)(\b|$)/ }, { name: 'pseudo', re: = /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis= )abled|not)(\((.*?)\))?(\b|$|(?=3D\s|[:+~>]))/ }, { name: 'attrPresence', re: /^\[((?:[\w-]+:)?[\w-]+)\]/ }, { name: 'attr', re: = /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\4]*?)\4|([^'"][^= \]]*?)))?\]/ } ], assertions: { tagName: function(element, matches) { return matches[1].toUpperCase() =3D=3D = element.tagName.toUpperCase(); }, className: function(element, matches) { return Element.hasClassName(element, matches[1]); }, id: function(element, matches) { return element.id =3D=3D=3D matches[1]; }, attrPresence: function(element, matches) { return Element.hasAttribute(element, matches[1]); }, attr: function(element, matches) { var nodeValue =3D Element.readAttribute(element, matches[1]); return nodeValue && Selector.operators[matches[2]](nodeValue, = matches[5] || matches[6]); } }, handlers: { concat: function(a, b) { for (var i =3D 0, node; node =3D b[i]; i++) a.push(node); return a; }, mark: function(nodes) { var _true =3D Prototype.emptyFunction; for (var i =3D 0, node; node =3D nodes[i]; i++) node._countedByPrototype =3D _true; return nodes; }, unmark: (function(){ var PROPERTIES_ATTRIBUTES_MAP =3D (function(){ var el =3D document.createElement('div'), isBuggy =3D false, propName =3D '_countedByPrototype', value =3D 'x' el[propName] =3D value; isBuggy =3D (el.getAttribute(propName) =3D=3D=3D value); el =3D null; return isBuggy; })(); return PROPERTIES_ATTRIBUTES_MAP ? function(nodes) { for (var i =3D 0, node; node =3D nodes[i]; i++) node.removeAttribute('_countedByPrototype'); return nodes; } : function(nodes) { for (var i =3D 0, node; node =3D nodes[i]; i++) node._countedByPrototype =3D void 0; return nodes; } })(), index: function(parentNode, reverse, ofType) { parentNode._countedByPrototype =3D Prototype.emptyFunction; if (reverse) { for (var nodes =3D parentNode.childNodes, i =3D nodes.length - = 1, j =3D 1; i >=3D 0; i--) { var node =3D nodes[i]; if (node.nodeType =3D=3D 1 && (!ofType || = node._countedByPrototype)) node.nodeIndex =3D j++; } } else { for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node = =3D nodes[i]; i++) if (node.nodeType =3D=3D 1 && (!ofType || = node._countedByPrototype)) node.nodeIndex =3D j++; } }, unique: function(nodes) { if (nodes.length =3D=3D 0) return nodes; var results =3D [], n; for (var i =3D 0, l =3D nodes.length; i < l; i++) if (typeof (n =3D nodes[i])._countedByPrototype =3D=3D = 'undefined') { n._countedByPrototype =3D Prototype.emptyFunction; results.push(Element.extend(n)); } return Selector.handlers.unmark(results); }, descendant: function(nodes) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) h.concat(results, node.getElementsByTagName('*')); return results; }, child: function(nodes) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { for (var j =3D 0, child; child =3D node.childNodes[j]; j++) if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') = results.push(child); } return results; }, adjacent: function(nodes) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { var next =3D this.nextElementSibling(node); if (next) results.push(next); } return results; }, laterSibling: function(nodes) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) h.concat(results, Element.nextSiblings(node)); return results; }, nextElementSibling: function(node) { while (node =3D node.nextSibling) if (node.nodeType =3D=3D 1) return node; return null; }, previousElementSibling: function(node) { while (node =3D node.previousSibling) if (node.nodeType =3D=3D 1) return node; return null; }, tagName: function(nodes, root, tagName, combinator) { var uTagName =3D tagName.toUpperCase(); var results =3D [], h =3D Selector.handlers; if (nodes) { if (combinator) { if (combinator =3D=3D "descendant") { for (var i =3D 0, node; node =3D nodes[i]; i++) h.concat(results, node.getElementsByTagName(tagName)); return results; } else nodes =3D this[combinator](nodes); if (tagName =3D=3D "*") return nodes; } for (var i =3D 0, node; node =3D nodes[i]; i++) if (node.tagName.toUpperCase() =3D=3D=3D uTagName) = results.push(node); return results; } else return root.getElementsByTagName(tagName); }, id: function(nodes, root, id, combinator) { var targetNode =3D $(id), h =3D Selector.handlers; if (root =3D=3D document) { if (!targetNode) return []; if (!nodes) return [targetNode]; } else { if (!root.sourceIndex || root.sourceIndex < 1) { var nodes =3D root.getElementsByTagName('*'); for (var j =3D 0, node; node =3D nodes[j]; j++) { if (node.id =3D=3D=3D id) return [node]; } } } if (nodes) { if (combinator) { if (combinator =3D=3D 'child') { for (var i =3D 0, node; node =3D nodes[i]; i++) if (targetNode.parentNode =3D=3D node) return = [targetNode]; } else if (combinator =3D=3D 'descendant') { for (var i =3D 0, node; node =3D nodes[i]; i++) if (Element.descendantOf(targetNode, node)) return = [targetNode]; } else if (combinator =3D=3D 'adjacent') { for (var i =3D 0, node; node =3D nodes[i]; i++) if (Selector.handlers.previousElementSibling(targetNode) = =3D=3D node) return [targetNode]; } else nodes =3D h[combinator](nodes); } for (var i =3D 0, node; node =3D nodes[i]; i++) if (node =3D=3D targetNode) return [targetNode]; return []; } return (targetNode && Element.descendantOf(targetNode, root)) ? = [targetNode] : []; }, className: function(nodes, root, className, combinator) { if (nodes && combinator) nodes =3D this[combinator](nodes); return Selector.handlers.byClassName(nodes, root, className); }, byClassName: function(nodes, root, className) { if (!nodes) nodes =3D Selector.handlers.descendant([root]); var needle =3D ' ' + className + ' '; for (var i =3D 0, results =3D [], node, nodeClassName; node =3D = nodes[i]; i++) { nodeClassName =3D node.className; if (nodeClassName.length =3D=3D 0) continue; if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' = ').include(needle)) results.push(node); } return results; }, attrPresence: function(nodes, root, attr, combinator) { if (!nodes) nodes =3D root.getElementsByTagName("*"); if (nodes && combinator) nodes =3D this[combinator](nodes); var results =3D []; for (var i =3D 0, node; node =3D nodes[i]; i++) if (Element.hasAttribute(node, attr)) results.push(node); return results; }, attr: function(nodes, root, attr, value, operator, combinator) { if (!nodes) nodes =3D root.getElementsByTagName("*"); if (nodes && combinator) nodes =3D this[combinator](nodes); var handler =3D Selector.operators[operator], results =3D []; for (var i =3D 0, node; node =3D nodes[i]; i++) { var nodeValue =3D Element.readAttribute(node, attr); if (nodeValue =3D=3D=3D null) continue; if (handler(nodeValue, value)) results.push(node); } return results; }, pseudo: function(nodes, name, value, root, combinator) { if (nodes && combinator) nodes =3D this[combinator](nodes); if (!nodes) nodes =3D root.getElementsByTagName("*"); return Selector.pseudos[name](nodes, value, root); } }, pseudos: { 'first-child': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { if (Selector.handlers.previousElementSibling(node)) continue; results.push(node); } return results; }, 'last-child': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { if (Selector.handlers.nextElementSibling(node)) continue; results.push(node); } return results; }, 'only-child': function(nodes, value, root) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (!h.previousElementSibling(node) && = !h.nextElementSibling(node)) results.push(node); return results; }, 'nth-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root); }, 'nth-last-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true); }, 'nth-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, false, true); }, 'nth-last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true, true); }, 'first-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, false, true); }, 'last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, true, true); }, 'only-of-type': function(nodes, formula, root) { var p =3D Selector.pseudos; return p['last-of-type'](p['first-of-type'](nodes, formula, root), = formula, root); }, getIndices: function(a, b, total) { if (a =3D=3D 0) return b > 0 ? [b] : []; return $R(1, total).inject([], function(memo, i) { if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i); return memo; }); }, nth: function(nodes, formula, root, reverse, ofType) { if (nodes.length =3D=3D 0) return []; if (formula =3D=3D 'even') formula =3D '2n+0'; if (formula =3D=3D 'odd') formula =3D '2n+1'; var h =3D Selector.handlers, results =3D [], indexed =3D [], m; h.mark(nodes); for (var i =3D 0, node; node =3D nodes[i]; i++) { if (!node.parentNode._countedByPrototype) { h.index(node.parentNode, reverse, ofType); indexed.push(node.parentNode); } } if (formula.match(/^\d+$/)) { // just a number formula =3D Number(formula); for (var i =3D 0, node; node =3D nodes[i]; i++) if (node.nodeIndex =3D=3D formula) results.push(node); } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // = an+b if (m[1] =3D=3D "-") m[1] =3D -1; var a =3D m[1] ? Number(m[1]) : 1; var b =3D m[2] ? Number(m[2]) : 0; var indices =3D Selector.pseudos.getIndices(a, b, nodes.length); for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; = i++) { for (var j =3D 0; j < l; j++) if (node.nodeIndex =3D=3D indices[j]) results.push(node); } } h.unmark(nodes); h.unmark(indexed); return results; }, 'empty': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { if (node.tagName =3D=3D '!' || node.firstChild) continue; results.push(node); } return results; }, 'not': function(nodes, selector, root) { var h =3D Selector.handlers, selectorType, m; var exclusions =3D new Selector(selector).findElements(root); h.mark(exclusions); for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (!node._countedByPrototype) results.push(node); h.unmark(exclusions); return results; }, 'enabled': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (!node.disabled && (!node.type || node.type !=3D=3D = 'hidden')) results.push(node); return results; }, 'disabled': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (node.disabled) results.push(node); return results; }, 'checked': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (node.checked) results.push(node); return results; } }, operators: { '=3D': function(nv, v) { return nv =3D=3D v; }, '!=3D': function(nv, v) { return nv !=3D v; }, '^=3D': function(nv, v) { return nv =3D=3D v || nv && = nv.startsWith(v); }, '$=3D': function(nv, v) { return nv =3D=3D v || nv && = nv.endsWith(v); }, '*=3D': function(nv, v) { return nv =3D=3D v || nv && nv.include(v); = }, '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + = ' '); }, '|=3D': function(nv, v) { return ('-' + (nv || "").toUpperCase() + '-').include('-' + (v || "").toUpperCase() + '-'); } }, split: function(expression) { var expressions =3D []; expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, = function(m) { expressions.push(m[1].strip()); }); return expressions; }, matchElements: function(elements, expression) { var matches =3D $$(expression), h =3D Selector.handlers; h.mark(matches); for (var i =3D 0, results =3D [], element; element =3D elements[i]; = i++) if (element._countedByPrototype) results.push(element); h.unmark(matches); return results; }, findElement: function(elements, expression, index) { if (Object.isNumber(expression)) { index =3D expression; expression =3D false; } return Selector.matchElements(elements, expression || '*')[index || = 0]; }, findChildElements: function(element, expressions) { expressions =3D Selector.split(expressions.join(',')); var results =3D [], h =3D Selector.handlers; for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) { selector =3D new Selector(expressions[i].strip()); h.concat(results, selector.findElements(element)); } return (l > 1) ? h.unique(results) : results; } }); if (Prototype.Browser.IE) { Object.extend(Selector.handlers, { concat: function(a, b) { for (var i =3D 0, node; node =3D b[i]; i++) if (node.tagName !=3D=3D "!") a.push(node); return a; } }); } function $$() { return Selector.findChildElements(document, $A(arguments)); } var Form =3D { reset: function(form) { form =3D $(form); form.reset(); return form; }, serializeElements: function(elements, options) { if (typeof options !=3D 'object') options =3D { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash =3D true; var key, value, submitted =3D false, submit =3D options.submit; var data =3D elements.inject({ }, function(result, element) { if (!element.disabled && element.name) { key =3D element.name; value =3D $(element).getValue(); if (value !=3D null && element.type !=3D 'file' && (element.type = !=3D 'submit' || (!submitted && submit !=3D=3D false && (!submit || key =3D=3D submit) && = (submitted =3D true)))) { if (key in result) { if (!Object.isArray(result[key])) result[key] =3D = [result[key]]; result[key].push(value); } else result[key] =3D value; } } return result; }); return options.hash ? data : Object.toQueryString(data); } }; Form.Methods =3D { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { var elements =3D $(form).getElementsByTagName('*'), element, arr =3D [ ], serializers =3D Form.Element.Serializers; for (var i =3D 0; element =3D elements[i]; i++) { arr.push(element); } return arr.inject([], function(elements, child) { if (serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; }) }, getInputs: function(form, typeName, name) { form =3D $(form); var inputs =3D form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i = < length; i++) { var input =3D inputs[i]; if ((typeName && input.type !=3D typeName) || (name && input.name = !=3D name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form =3D $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form =3D $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements =3D $(form).getElements().findAll(function(element) { return 'hidden' !=3D element.type && !element.disabled; }); var firstByIndex =3D elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >=3D = 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) = { return /^(?:input|select|textarea)$/i.test(element.tagName); }); }, focusFirstElement: function(form) { form =3D $(form); form.findFirstElement().activate(); return form; }, request: function(form, options) { form =3D $(form), options =3D Object.clone(options || { }); var params =3D options.parameters, action =3D = form.readAttribute('action') || ''; if (action.blank()) action =3D window.location.href; options.parameters =3D form.serialize(true); if (params) { if (Object.isString(params)) params =3D params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method =3D form.method; return new Ajax.Request(action, options); } }; /*-----------------------------------------------------------------------= ---*/ Form.Element =3D { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods =3D { serialize: function(element) { element =3D $(element); if (!element.disabled && element.name) { var value =3D element.getValue(); if (value !=3D undefined) { var pair =3D { }; pair[element.name] =3D value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element =3D $(element); var method =3D element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element =3D $(element); var method =3D element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value =3D ''; return element; }, present: function(element) { return $(element).value !=3D ''; }, activate: function(element) { element =3D $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() !=3D 'input' = || !(/^(?:button|reset|submit)$/i.test(element.type)))) element.select(); } catch (e) { } return element; }, disable: function(element) { element =3D $(element); element.disabled =3D true; return element; }, enable: function(element) { element =3D $(element); element.disabled =3D false; return element; } }; /*-----------------------------------------------------------------------= ---*/ var Field =3D Form.Element; var $F =3D Form.Element.Methods.getValue; /*-----------------------------------------------------------------------= ---*/ Form.Element.Serializers =3D { input: function(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return Form.Element.Serializers.inputSelector(element, value); default: return Form.Element.Serializers.textarea(element, value); } }, inputSelector: function(element, value) { if (Object.isUndefined(value)) return element.checked ? = element.value : null; else element.checked =3D !!value; }, textarea: function(element, value) { if (Object.isUndefined(value)) return element.value; else element.value =3D value; }, select: function(element, value) { if (Object.isUndefined(value)) return this[element.type =3D=3D 'select-one' ? 'selectOne' : 'selectMany'](element); else { var opt, currentValue, single =3D !Object.isArray(value); for (var i =3D 0, length =3D element.length; i < length; i++) { opt =3D element.options[i]; currentValue =3D this.optionValue(opt); if (single) { if (currentValue =3D=3D value) { opt.selected =3D true; return; } } else opt.selected =3D value.include(currentValue); } } }, selectOne: function(element) { var index =3D element.selectedIndex; return index >=3D 0 ? this.optionValue(element.options[index]) : = null; }, selectMany: function(element) { var values, length =3D element.length; if (!length) return null; for (var i =3D 0, values =3D []; i < length; i++) { var opt =3D element.options[i]; if (opt.selected) values.push(this.optionValue(opt)); } return values; }, optionValue: function(opt) { return Element.extend(opt).hasAttribute('value') ? opt.value : = opt.text; } }; /*-----------------------------------------------------------------------= ---*/ Abstract.TimedObserver =3D Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element =3D $(element); this.lastValue =3D this.getValue(); }, execute: function() { var value =3D this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue !=3D value : String(this.lastValue) !=3D = String(value)) { this.callback(this.element, value); this.lastValue =3D value; } } }); Form.Element.Observer =3D Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer =3D Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*-----------------------------------------------------------------------= ---*/ Abstract.EventObserver =3D Class.create({ initialize: function(element, callback) { this.element =3D $(element); this.callback =3D callback; this.lastValue =3D this.getValue(); if (this.element.tagName.toLowerCase() =3D=3D 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value =3D this.getValue(); if (this.lastValue !=3D value) { this.callback(this.element, value); this.lastValue =3D value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', = this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', = this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver =3D Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver =3D Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); (function() { var Event =3D { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: {} }; var docEl =3D document.documentElement; var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED =3D 'onmouseenter' in docEl && 'onmouseleave' in docEl; var _isButton; if (Prototype.Browser.IE) { var buttonMap =3D { 0: 1, 1: 4, 2: 2 }; _isButton =3D function(event, code) { return event.button =3D=3D=3D buttonMap[code]; }; } else if (Prototype.Browser.WebKit) { _isButton =3D function(event, code) { switch (code) { case 0: return event.which =3D=3D 1 && !event.metaKey; case 1: return event.which =3D=3D 1 && event.metaKey; default: return false; } }; } else { _isButton =3D function(event, code) { return event.which ? (event.which =3D=3D=3D code + 1) : = (event.button =3D=3D=3D code); }; } function isLeftClick(event) { return _isButton(event, 0) } function isMiddleClick(event) { return _isButton(event, 1) } function isRightClick(event) { return _isButton(event, 2) } function element(event) { event =3D Event.extend(event); var node =3D event.target, type =3D event.type, currentTarget =3D event.currentTarget; if (currentTarget && currentTarget.tagName) { if (type =3D=3D=3D 'load' || type =3D=3D=3D 'error' || (type =3D=3D=3D 'click' && currentTarget.tagName.toLowerCase() = =3D=3D=3D 'input' && currentTarget.type =3D=3D=3D 'radio')) node =3D currentTarget; } if (node.nodeType =3D=3D Node.TEXT_NODE) node =3D node.parentNode; return Element.extend(node); } function findElement(event, expression) { var element =3D Event.element(event); if (!expression) return element; var elements =3D [element].concat(element.ancestors()); return Selector.findElement(elements, expression, 0); } function pointer(event) { return { x: pointerX(event), y: pointerY(event) }; } function pointerX(event) { var docElement =3D document.documentElement, body =3D document.body || { scrollLeft: 0 }; return event.pageX || (event.clientX + (docElement.scrollLeft || body.scrollLeft) - (docElement.clientLeft || 0)); } function pointerY(event) { var docElement =3D document.documentElement, body =3D document.body || { scrollTop: 0 }; return event.pageY || (event.clientY + (docElement.scrollTop || body.scrollTop) - (docElement.clientTop || 0)); } function stop(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped =3D true; } Event.Methods =3D { isLeftClick: isLeftClick, isMiddleClick: isMiddleClick, isRightClick: isRightClick, element: element, findElement: findElement, pointer: pointer, pointerX: pointerX, pointerY: pointerY, stop: stop }; var methods =3D Object.keys(Event.Methods).inject({ }, function(m, = name) { m[name] =3D Event.Methods[name].methodize(); return m; }); if (Prototype.Browser.IE) { function _relatedTarget(event) { var element; switch (event.type) { case 'mouseover': element =3D event.fromElement; break; case 'mouseout': element =3D event.toElement; break; default: return null; } return Element.extend(element); } Object.extend(methods, { stopPropagation: function() { this.cancelBubble =3D true }, preventDefault: function() { this.returnValue =3D false }, inspect: function() { return '[object Event]' } }); Event.extend =3D function(event, element) { if (!event) return false; if (event._extendedByPrototype) return event; event._extendedByPrototype =3D Prototype.emptyFunction; var pointer =3D Event.pointer(event); Object.extend(event, { target: event.srcElement || element, relatedTarget: _relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); return Object.extend(event, methods); }; } else { Event.prototype =3D window.Event.prototype || = document.createEvent('HTMLEvents').__proto__; Object.extend(Event.prototype, methods); Event.extend =3D Prototype.K; } function _createResponder(element, eventName, handler) { var registry =3D Element.retrieve(element, = 'prototype_event_registry'); if (Object.isUndefined(registry)) { CACHE.push(element); registry =3D Element.retrieve(element, 'prototype_event_registry', = $H()); } var respondersForEvent =3D registry.get(eventName); if (Object.isUndefined(respondersForEvent)) { respondersForEvent =3D []; registry.set(eventName, respondersForEvent); } if (respondersForEvent.pluck('handler').include(handler)) return = false; var responder; if (eventName.include(":")) { responder =3D function(event) { if (Object.isUndefined(event.eventName)) return false; if (event.eventName !=3D=3D eventName) return false; Event.extend(event, element); handler.call(element, event); }; } else { if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED && (eventName =3D=3D=3D "mouseenter" || eventName =3D=3D=3D = "mouseleave")) { if (eventName =3D=3D=3D "mouseenter" || eventName =3D=3D=3D = "mouseleave") { responder =3D function(event) { Event.extend(event, element); var parent =3D event.relatedTarget; while (parent && parent !=3D=3D element) { try { parent =3D parent.parentNode; } catch(e) { parent =3D element; } } if (parent =3D=3D=3D element) return; handler.call(element, event); }; } } else { responder =3D function(event) { Event.extend(event, element); handler.call(element, event); }; } } responder.handler =3D handler; respondersForEvent.push(responder); return responder; } function _destroyCache() { for (var i =3D 0, length =3D CACHE.length; i < length; i++) { Event.stopObserving(CACHE[i]); CACHE[i] =3D null; } } var CACHE =3D []; if (Prototype.Browser.IE) window.attachEvent('onunload', _destroyCache); if (Prototype.Browser.WebKit) window.addEventListener('unload', Prototype.emptyFunction, false); var _getDOMEventName =3D Prototype.K; if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) { _getDOMEventName =3D function(eventName) { var translations =3D { mouseenter: "mouseover", mouseleave: = "mouseout" }; return eventName in translations ? translations[eventName] : = eventName; }; } function observe(element, eventName, handler) { element =3D $(element); var responder =3D _createResponder(element, eventName, handler); if (!responder) return element; if (eventName.include(':')) { if (element.addEventListener) element.addEventListener("dataavailable", responder, false); else { element.attachEvent("ondataavailable", responder); element.attachEvent("onfilterchange", responder); } } else { var actualEventName =3D _getDOMEventName(eventName); if (element.addEventListener) element.addEventListener(actualEventName, responder, false); else element.attachEvent("on" + actualEventName, responder); } return element; } function stopObserving(element, eventName, handler) { element =3D $(element); var registry =3D Element.retrieve(element, = 'prototype_event_registry'); if (Object.isUndefined(registry)) return element; if (eventName && !handler) { var responders =3D registry.get(eventName); if (Object.isUndefined(responders)) return element; responders.each( function(r) { Element.stopObserving(element, eventName, r.handler); }); return element; } else if (!eventName) { registry.each( function(pair) { var eventName =3D pair.key, responders =3D pair.value; responders.each( function(r) { Element.stopObserving(element, eventName, r.handler); }); }); return element; } var responders =3D registry.get(eventName); if (!responders) return; var responder =3D responders.find( function(r) { return r.handler = =3D=3D=3D handler; }); if (!responder) return element; var actualEventName =3D _getDOMEventName(eventName); if (eventName.include(':')) { if (element.removeEventListener) element.removeEventListener("dataavailable", responder, false); else { element.detachEvent("ondataavailable", responder); element.detachEvent("onfilterchange", responder); } } else { if (element.removeEventListener) element.removeEventListener(actualEventName, responder, false); else element.detachEvent('on' + actualEventName, responder); } registry.set(eventName, responders.without(responder)); return element; } function fire(element, eventName, memo, bubble) { element =3D $(element); if (Object.isUndefined(bubble)) bubble =3D true; if (element =3D=3D document && document.createEvent && = !element.dispatchEvent) element =3D document.documentElement; var event; if (document.createEvent) { event =3D document.createEvent('HTMLEvents'); event.initEvent('dataavailable', true, true); } else { event =3D document.createEventObject(); event.eventType =3D bubble ? 'ondataavailable' : 'onfilterchange'; } event.eventName =3D eventName; event.memo =3D memo || { }; if (document.createEvent) element.dispatchEvent(event); else element.fireEvent(event.eventType, event); return Event.extend(event); } Object.extend(Event, Event.Methods); Object.extend(Event, { fire: fire, observe: observe, stopObserving: stopObserving }); Element.addMethods({ fire: fire, observe: observe, stopObserving: stopObserving }); Object.extend(document, { fire: fire.methodize(), observe: observe.methodize(), stopObserving: stopObserving.methodize(), loaded: false }); if (window.Event) Object.extend(window.Event, Event); else window.Event =3D Event; })(); (function() { /* Support for the DOMContentLoaded event is based on work by Dan = Webb, Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */ var timer; function fireContentLoadedEvent() { if (document.loaded) return; if (timer) window.clearTimeout(timer); document.loaded =3D true; document.fire('dom:loaded'); } function checkReadyState() { if (document.readyState =3D=3D=3D 'complete') { document.stopObserving('readystatechange', checkReadyState); fireContentLoadedEvent(); } } function pollDoScroll() { try { document.documentElement.doScroll('left'); } catch(e) { timer =3D pollDoScroll.defer(); return; } fireContentLoadedEvent(); } if (document.addEventListener) { document.addEventListener('DOMContentLoaded', = fireContentLoadedEvent, false); } else { document.observe('readystatechange', checkReadyState); if (window =3D=3D top) timer =3D pollDoScroll.defer(); } Event.observe(window, 'load', fireContentLoadedEvent); })(); Element.addMethods(); /*------------------------------- DEPRECATED = -------------------------------*/ Hash.toQueryString =3D Object.toQueryString; var Toggle =3D { display: Element.toggle }; Element.Methods.childOf =3D Element.Methods.descendantOf; var Insertion =3D { Before: function(element, content) { return Element.insert(element, {before:content}); }, Top: function(element, content) { return Element.insert(element, {top:content}); }, Bottom: function(element, content) { return Element.insert(element, {bottom:content}); }, After: function(element, content) { return Element.insert(element, {after:content}); } }; var $continue =3D new Error('"throw $continue" is deprecated, use = "return" instead'); var Position =3D { includeScrollOffsets: false, prepare: function() { this.deltaX =3D window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY =3D window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, within: function(element, x, y) { if (this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element, x, y); this.xcomp =3D x; this.ycomp =3D y; this.offset =3D Element.cumulativeOffset(element); return (y >=3D this.offset[1] && y < this.offset[1] + element.offsetHeight && x >=3D this.offset[0] && x < this.offset[0] + element.offsetWidth); }, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache =3D Element.cumulativeScrollOffset(element); this.xcomp =3D x + offsetcache[0] - this.deltaX; this.ycomp =3D y + offsetcache[1] - this.deltaY; this.offset =3D Element.cumulativeOffset(element); return (this.ycomp >=3D this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >=3D this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, overlap: function(mode, element) { if (!mode) return 0; if (mode =3D=3D 'vertical') return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode =3D=3D 'horizontal') return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth; }, cumulativeOffset: Element.Methods.cumulativeOffset, positionedOffset: Element.Methods.positionedOffset, absolutize: function(element) { Position.prepare(); return Element.absolutize(element); }, relativize: function(element) { Position.prepare(); return Element.relativize(element); }, realOffset: Element.Methods.cumulativeScrollOffset, offsetParent: Element.Methods.getOffsetParent, page: Element.Methods.viewportOffset, clone: function(source, target, options) { options =3D options || { }; return Element.clonePosition(target, source, options); } }; /*-----------------------------------------------------------------------= ---*/ if (!document.getElementsByClassName) document.getElementsByClassName = =3D function(instanceMethods){ function iter(name) { return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' = " + name + " ')]"; } instanceMethods.getElementsByClassName =3D = Prototype.BrowserFeatures.XPath ? function(element, className) { className =3D className.toString().strip(); var cond =3D /\s/.test(className) ? $w(className).map(iter).join('') = : iter(className); return cond ? document._getElementsByXPath('.//*' + cond, element) : = []; } : function(element, className) { className =3D className.toString().strip(); var elements =3D [], classNames =3D (/\s/.test(className) ? = $w(className) : null); if (!classNames && !className) return elements; var nodes =3D $(element).getElementsByTagName('*'); className =3D ' ' + className + ' '; for (var i =3D 0, child, cn; child =3D nodes[i]; i++) { if (child.className && (cn =3D ' ' + child.className + ' ') && = (cn.include(className) || (classNames && classNames.all(function(name) { return !name.toString().blank() && cn.include(' ' + name + ' = '); })))) elements.push(Element.extend(child)); } return elements; }; return function(className, parentElement) { return $(parentElement || = document.body).getElementsByClassName(className); }; }(Element.Methods); /*-----------------------------------------------------------------------= ---*/ Element.ClassNames =3D Class.create(); Element.ClassNames.prototype =3D { initialize: function(element) { this.element =3D $(element); }, _each: function(iterator) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator); }, set: function(className) { this.element.className =3D className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set($A(this).concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) { if (!this.include(classNameToRemove)) return; this.set($A(this).without(classNameToRemove).join(' ')); }, toString: function() { return $A(this).join(' '); } }; Object.extend(Element.ClassNames.prototype, Enumerable); /*-----------------------------------------------------------------------= ---*/ ------=_NextPart_000_0000_01CA518C.07F46950 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.winespectator.com/js/scriptaculous/scriptaculous.js // script.aculo.us scriptaculous.js v1.8.1, Thu Jan 03 22:07:12 -0500 = 2008=0A= =0A= // Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, = http://mir.aculo.us)=0A= // =0A= // Permission is hereby granted, free of charge, to any person obtaining=0A= // a copy of this software and associated documentation files (the=0A= // "Software"), to deal in the Software without restriction, including=0A= // without limitation the rights to use, copy, modify, merge, publish,=0A= // distribute, sublicense, and/or sell copies of the Software, and to=0A= // permit persons to whom the Software is furnished to do so, subject to=0A= // the following conditions:=0A= // =0A= // The above copyright notice and this permission notice shall be=0A= // included in all copies or substantial portions of the Software.=0A= //=0A= // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,=0A= // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF=0A= // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND=0A= // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE=0A= // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION=0A= // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION=0A= // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.=0A= //=0A= // For details, see the script.aculo.us web site: http://script.aculo.us/=0A= =0A= var Scriptaculous =3D {=0A= Version: '1.8.1',=0A= require: function(libraryName) {=0A= // inserting via DOM fails in Safari 2.0, so brute force approach=0A= document.write('