bplist00_WebMainResource_WebSubresources ^WebResourceURL_WebResourceTextEncodingName_WebResourceMIMEType_WebResourceData_WebResourceFrameName_;http://www.lasvegasweekly.com/news/2008/may/22/partys-over/UUTF-8Ytext/htmlO Las Vegas Weekly : - The party's over

News

Small FontsDefault FontsLarge Fonts

The party’s over

A haunting glimpse at Coney Island’s post-spectacle landscape

Danielle Kelly

Thu, May 22, 2008 (midnight)

Image

Aaron Sheppard

Event

Midway by Aaron Sheppard
  • Contemporary Arts Collective, 101 East Charleston Blvd., Suite 101, Las Vegas, NV
  • Not available Not available

Full event details

The May 1 opening of Aaron Sheppard’s Midway at the Contemporary Arts Collective was quite the party, a vaudevillian extravaganza of singing, sparkles and skin. The evening’s MC was the artist himself, dressed as half man/half woman, and the joint was jumping with beautiful ladies of every gender. Like on the Strip at sundown, fairy dust cast by the general fabulousness camouflaged any cracks, creaks and crumbling facades.

Don’t feel bad—it’s okay if you weren’t there. If you live in Vegas, you are there every day. Midway isn’t about the spectacle itself, but what happens after the spectacle: With the lights up, you can see the vomit in the corner and the stuff stuck to your shoe. Not unlike a casino at four in the morning—a little haunting, a little beautiful.

As an artist in New York, Sheppard toyed with forms of gender and sexuality at the intersection of underground or subcultural social customs. Via autobiographical paintings and performance, he inhabits the skin of fake rock stars and drag queens culled from personal history. Now a member of UNLV’s MFA program, the artist has a rich new American myth to mine: Las Vegas.

Like posters at the circus luring visitors into the big tent, the gallery’s street-facing windows showcase banners of “Mr. Murray Hill” and “Miss Dirty Martini,” each ripe with side-show promises. The carnivalesque exterior belies the barren lack of festivities inside, as Sheppard has transformed the main space at the CAC into a midway … after the show. The barker has gone, a refreshment counter stands empty, the game booth has no takers and a ride has seats waiting to be filled—literally. Although peopled with structures, the space is uncannily hollow, filled only with a distinct residue of the raucous human activity it promises to have once held. It’s like an amusement park after closing, strangely suspended in time, by turns empty, menacing and a bit sad.

According to the press release, Midway addresses Sheppard’s personal mourning of the pending death of Coney Island. The park is scheduled for partial demolition and refurbishment this fall with plans to be “modeled after the Las Vegas Strip experience ... [offering] rides, spectacle and glamour.” It is in imagery based on the park that the artist most effectively sets his melancholy tone. Two sculptures, “Luna” and “Steeplechase,” personify two long-defunct turn-of-the-century precursors to the park we know today. These monumental and forlorn fountains hover protectively over the orphaned Coney Island. The “statues” have a ghostly pallor and a clumpy, runny surface with a strangely erotic physicality. Like much of the work in the show, they appear as though they will fall apart at any minute. Water spurts from both bodies, emphasizing their fetishized sexuality as trickling water echoes cavernously through a room that seems much larger and emptier than it actually is.

Similarly doleful are two videos filmed at the park last summer, “Mermaid Parade 2007: Twins” and “Coney Island 2007: Wonder Work.” The former depicts two women as Siamese twins dressed in an old-fashioned swimming costume, twirling in circles and dancing the Charleston, while the latter is an endlessly spinning Ferris wheel. Black and white, the videos are like memories, and their swirling imagery suggests both a party waiting to happen and time standing still.

The installation is not without its flaws. Why is the music for “Mermaid Parade 2007” on a CD player in the middle of the room? The paintings and collages, while often achingly sexual and beautiful, seem an afterthought in the gallery’s problematic back gallery. If the artist wasn’t going to capitalize on the inclusion of two-dimensional work, why have it at all?

Still, the residents of Vegas should be particularly savvy to the exhibition’s framework. We are acutely aware of the life cycles of cultural myth—it is our bread and butter, and we trade daily in resurrecting, destroying or manipulating iconic Americana. But it’s misleading to access Midway via connections between Las Vegas and Coney Island, The real heart of the matter is a question posed by the work: What makes a spectacle? It is a contract between the performer and the viewer, but what happens to the spectacle when the viewer is gone? Or worse yet, the performer? Aaron Sheppard is this exhibition, and the silence of his physical absence is the most melancholy and deafening of all.

Comment on This Print This

Add your comments...

Commenting requires registration.

Already Registered? Log In Below.
Username:
Password:  Forgotten your password?
 

Date Book

  • Sunday

    2008-06-08

    Observational comedy by a Grammy-winning comedian, actor and author

    Comedy

    An evening with George Carlin

  • Sunday

    2008-06-08

    Break out your best plaid mini skirt. It's time to go back to school!

    Dance

    Sunday School

  • Sunday

    2008-06-08

    Sundays at Tabu are for making up for your sinful weekend ways, jus kidding! The weekend rages on a this hip ultralounge

    The Strip

    Confession at Tabu Ultralounge

  • More ›

Videos

Vegas comedian Tanyalee Davis is a funny, funny woman. She's also 3'6", but that hasn't stopped this Canadian transplant from making a big name for herself overseas with an act ... Continue

P"&*/37;?CHLPTY^bfjnsw{_WebResourceResponse_4http://media.lasvegasweekly.com/assets/css/style.cssO[bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver" &,-345QRSTUVWXYZ[\]^_`abcdefgklU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1!  '()$+WNS.base[NS.relative_4http://media.lasvegasweekly.com/assets/css/style.css./01X$classesZ$classname12UNSURLXNSObject#A7? 6789EWNS.keysZNS.objects:;<=>?@ABCD FGHIJKLMNOP]Last-ModifiedWExpires]Cache-Control]Accept-Ranges_Content-Encoding\Content-TypeVServer^Content-LengthTDateTEtagTVary_Wed, 04 Jun 2008 01:05:01 GMT_Wed, 04 Jun 2008 19:40:07 GMT\max-age=7200UbytesTgzipXtext/cssTSpudU16397_Wed, 04 Jun 2008 17:40:07 GMT\"1264171166"_Accept-Encoding./hiij2_NSMutableDictionary\NSDictionary+./mnno2_NSHTTPURLResponse]NSURLResponse)27:PRd  GLU`cir{}"/6EJOTt+059Mp[Xtext/cssO+/* @override http://localhost:50081/assets/css/style.css http://media.lasvegasweekly.com/assets/css/style.css */ /* CSS Document */ /* Reset styles in all browsers */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; outline: 0; font-size: 100%; vertical-align: baseline; } /* End reset */ body { background: #d9cba7 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/bg.gif) repeat; font-family: Georgia, "Times New Roman", Times, serif; color: #000; } p { font-size: 12px; /* this should probably not be the default -- line-height: 18px; */ line-height: 15px; padding-bottom: 14px; } td, th { font-size: 12px; line-height: 15px; } li { font-size: 12px; /* this should probably not be the default -- line-height: 18px; */ line-height: 15px; } ul.no_style {list-style: none;} h3, h4, h5 { font-weight: bold; padding-bottom: 14px; } h3 { font-size: 20px; line-height: 24px; } h4 { font-size: 18px; line-height: 22px; } h5 { font-size: 16px; line-height: 20px; } dl {font-size: 12px;/* this should probably not be the default -- line-height: 18px; */ line-height: 15px;} dt {font-weight: bold;} dd {padding-bottom: 14px;} a, a:link, a:visited { color: #000; background: #d9cba7; text-decoration: none; } a:hover { text-decoration: underline; } .more_link2 { background: #bda566; } .module_border.bottom { background: #ede6d5; width: 186px; padding:5px; } .smallest {font-size: 10px;} .clear {clear: both;} #container { width: 1000px; margin: 0px auto; } /* Two headers heights are required because of various design elements and the addition of the secondary nav on internal pages */ body#no_sec_nav #header { height: 178px; } #header { position: relative; width: 1000px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/header_bg.gif) no-repeat top; height: 198px; } #header h1 { position: absolute; top: 20px; left: 41px; text-indent: -999em; width: 338px; height: 82px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/logo.png) no-repeat; } #header h1 a { display: block; width: 338px; height: 82px; background: none; } #dining_pages #header h1, #nightlife_pages #header h1, #blog_pages #header h1 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/logo_nightlife.png) no-repeat; width: 368px; height: 56px; top: 34px; } #dining_pages #header h1 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/logo_dining.png) no-repeat; } #nightlife_pages #header h1 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/logo_nightlife.png) no-repeat; } #blog_pages #header h1 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/logo_blogs.png) no-repeat; } #dining_pages #header h1 a, #nightlife_pages #header h1 a, #blog_pages #header h1 a { width: 368px; height: 56px; } #vip-photos-showcase { background-color:#000000; color:#FFFFFF; display:block; height:182px; width:430px; } #vip-photos-showcase-header { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/photostrip_flashheader.jpg) no-repeat; width:430px; height:45px; display:block; text-indent:-1000em; } #vip-photos-showcase .headline { font: bold 1.0em Georgia, "Times New Roman", Times, serif; } #vip-photos-showcase a, #vip-photos-showcase a:link, #vip-photos-showcase a:visited { background: none; } #vip-photos-showcase.flash_container { padding-bottom:0px; margin-bottom: 14px; } #vip-photos-list { background-color:#000000; clear:both; width:430px; } .vip-photos-headline { color:#BDA566; font:bold 1.25em Georgia, "Times New Roman", Times, serif; } #vip-photos-list ul { list-style:none; } #vip-photos-list ul li { float:left; width:105px; } #header #cover { position: absolute; top: 15px; left: 472px; width: 185px; height: 108px; } /* Search */ #search_container { position: absolute; top: 71px; left: 770px; width: 195px; } #search_container form { float: left; } #search_container form .input { padding: 1px 2px 1px 2px; width: 146px; font-size: 12px; font-family: Arial, Helvetica, sans-serif; border: 1px solid #a0a1a1; float: left; color: #333; } #search_container button { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/buttons/go.gif) no-repeat; cursor: pointer; width: 34px; height: 21px; border: 0px; margin: 0px 0px 0px 7px; padding: 0px; text-indent: -999em; float: left; } #advanced_search { position: absolute; top: 102px; right: 24px; font-size: 12px; font-weight: bold; } #advanced_search a, #advanced_search a:link, #advanced_search a:visited { color: #000; text-decoration: none; font-family: Arial, Helvetica, sans-serif; background: none; } #advanced_search a:hover { text-decoration: underline; } /* End Search */ /* Start Nav */ #nav_container { position: absolute; top: 126px; left: 7px; height: 28px; width: 993px; } #nav_container ul { list-style: none; height: 28px; width: 823px; float: left; list-style: none; } #nav_container li { float: left; height: 28px; } #nav_container li a, #nav_container li a:link, #nav_container li a:visited { text-indent: -999em; display: block; height: 28px; background: none; } #nav_container li#home a {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/nav/home.gif) 0 0 no-repeat;width:69px;} #nav_container li#home a:hover, #nav_container ul.home li#home a {background-position: -69px 0;} #nav_container li#video a {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/nav/video.gif) 0 0 no-repeat;width:69px;} #nav_container li#video a:hover, #nav_container ul.video li#video a {background-position: -69px 0;} #nav_container li#news a {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/nav/news.gif) 0 0 no-repeat;width:65px;} #nav_container li#news a:hover, #nav_container ul.news li#news a {background-position: -65px 0;} #nav_container li#blogs a {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/nav/blogs.gif) 0 0 no-repeat;width:67px;} #nav_container li#blogs a:hover, #nav_container ul.blogs li#blogs a {background-position: -67px 0;} #nav_container li#dining a {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/nav/dining.gif) 0 0 no-repeat;width:73px;} #nav_container li#dining a:hover, #nav_container ul.dining li#dining a {background-position: -73px 0;} #nav_container li#guides a {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/nav/guides.gif) 0 0 no-repeat;width:78px;} #nav_container li#guides a:hover, #nav_container ul.guides li#guides a {background-position: -78px 0;} #nav_container li#photos a {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/nav/photos.gif) 0 0 no-repeat;width:78px;} #nav_container li#photos a:hover, #nav_container ul.photos li#photos a {background-position: -78px 0;} #nav_container li#nightlife a {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/nav/nightlife.gif) 0 0 no-repeat;width:91px;} #nav_container li#nightlife a:hover, #nav_container ul.nightlife li#nightlife a {background-position: -91px 0;} #nav_container li#calendar a {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/nav/calendar.gif) 0 0 no-repeat;width:95px;} #nav_container li#calendar a:hover, #nav_container ul.calendar li#calendar a {background-position: -95px 0;} #nav_container li#entertainment a {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/nav/entertainment.gif) 0 0 no-repeat;width:138px;} #nav_container li#entertainment a:hover, #nav_container ul.entertainment li#entertainment a {background-position: -138px 0;} #weather { position: absolute; top: 0px; right: 20px; font-size: 13px; font-family: Arial, Helvetica, sans-serif; color: #619389; line-height: 28px; } /* Secondary Nav -- text-based */ #sec_nav { padding-top: 165px; height: 20px; width: auto; } #sec_nav ul { margin: 0px; padding: 0px; list-style-type: none; text-align: center; } #sec_nav ul li { display: inline; font-size: 14px; font-weight: bold; } #sec_nav ul li a, #sec_nav ul li a:link, #sec_nav ul li a:visited { text-decoration: none; height: 20px; padding: 0px 8px; color: #000; background: none; } #sec_nav ul li a:hover { color: #699; background: none; } #sec_nav ul li.active a, #sec_nav ul li.active a:link, #sec_nav ul li.active a:visited { color: #699; } #sec_nav ul.club_guide li#club_guide a, #sec_nav ul.restaurant_guide li#restaurant_guide a, #sec_nav ul.band_dj_guide li#band_dj_guide a, #sec_nav ul.pool_guide li#pool_guide a, #sec_nav ul.adult_guide li#adult_guide a, #sec_nav ul.help_desk li#help_desk a, #sec_nav ul.strip_sense li#strip_sense a, #sec_nav ul.pop_culture li#pop_culture a, #sec_nav ul.our_metropolis li#our_metropolis a, #sec_nav ul.news_features li#news_features a, ul.luxe-life li#luxe-life a, ul.sage-vice li#sage-vice a, ul.stripped li#stripped a, ul.debriefing li#debriefing a, ul.off-the-record li#off-the-record a, ul.nocturnal-admissions li#nocturnal-admissions a, ul.the-playground li#the-playground a,ul.local-bands li#local-bands a,ul.local-djs li#local-djs a,ul.mp3s li#mp3s a,ul.top-mp3ss li#top-mp3s a,ul.local-musicians li#local-musicians a {color: #699;} /*05192008 DC Build - Blog pages */ #blog_pages #header h1 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/logo_blogs.png) no-repeat; } /* Blog Home Page */ #featured_blogger { width: 650px; float: left; margin-bottom: 14px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/dark_wp.gif) repeat; } /* #featured_blogger h2 { text-indent: -999em; height: 59px; } */ #featured_blogger h2 { height: 43px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/fb_h2_bg.gif) no-repeat top left; color: #fff; line-height: 1em; padding: 16px 0px 0px 14px; } /*#featured_blogger h2#fb_robin_leach {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/fb_robin_leach.gif) no-repeat;}*/ #featured_blogger .inner_left { float: left; width: 125px; padding: 15px 0px 15px 15px; } #featured_blogger .inner_right { width: 495px; float: left; padding: 15px 15px 0px 0px; } /*mod by Sean Hellwig blog */ dt.event-headline{ font-size:14px; } dd.event-place a, dd.event-place a:link, dd.event-place a:hover, dd.event-place a:visited{ background:none; text-decoration:underline; } #featured_blogger .inner_right h4 a, #featured_blogger .inner_right h4 a:link, #featured_blogger .inner_right h4 a:visited{ background:none; } /* end mod */ #featured_blogger h3 {font-size:30px; line-height:30px;} #featured_blogger h4 {font-size: 14px; color:#7B391C;} #featured_blogger h4, #featured_blogger p {padding: 0px;} #featured_blogger p.article_tools {padding-bottom: 14px;} #featured_blogs h4 {color:#7B391C;} h3#featured_blogs { text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/featured_blogs.gif) no-repeat top left; height: 25px; } h3.border_bottom {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/border_dark.gif) no-repeat bottom left; padding-bottom: 6px; margin-bottom: 6px;} .more_right { float: right; width: 200px; text-align: right; font-weight: bold; text-transform: uppercase; } .featured_blog_module { clear: both; padding-bottom: 16px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/border_410.gif) no-repeat bottom left; margin-bottom: 14px; } .featured_blog_module h3 {padding-bottom: 0; line-height: 1.1em;} .featured_blog_module h4 { font-size: 14px; padding-bottom: 4px; line-height: 1.1em; } .featured_blog_module h3 a, .featured_blog_module h4 a { background: none;} .featured_blog_module h4 a {color:#7B391C;} /* end 051908 Build /* Columns -- this site has a number of different column layouts. Each div id includes the width to make it easier for dumb guys like me. */ #content { width: 992px; float: left; padding: 0px 4px 20px 4px; } /* Column Wrapper -- added this to accommodate the modules that span the first two columns on some pages. */ #column_wrapper { width: 662px; float: left; } #left_col_196 { width: 196px; margin-right: 18px; float: left; } #left_col_196 #left_col_top { width: 196px; background-color: #ede6d5; margin-bottom: 8px; padding-top:0px; } #left_col_775 { width: 775px; float: left; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/left_col_775_bg.gif) no-repeat top; margin-right: 12px; font-family: Arial, Helvetica, sans-serif; padding-top: 9px; } #left_col_775_header { background: #ede6d5 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/left_col_775_header_bg.gif) no-repeat bottom center; padding: 20px 15px 30px 20px; width: 740px; } .header_container { width: 742px; height: 28px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/header_bar_bg.gif) no-repeat; margin-bottom: 10px; float: left; } .header_container h4 { float: left; padding: 0px 0px 0px 6px; line-height: 28px; font-size: 26px; font-family: Georgia, "Times New Roman", Times, serif; } .header_container p { float: left; text-align: right; width: 365px; padding: 0px 6px 0px 0px; line-height: 28px; font-weight: bold; text-transform: uppercase; } .h5_container { width: 384px; padding: 0px 8px; height: 26px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/dark_wp.gif) repeat; margin: 30px 0px 6px 0px; } .h5_container h5 { line-height: 26px; padding: 0px; float: left; width: 192px; } .h5_container p { float: left; text-align: right; width: 192px; font-size: 11px; line-height: 26px; font-weight: bold; padding: 0px; } #blogVerticalImg { width:210px; float: left; clear: left; padding: 0px 5px 0px 0px; } .header_container p a.next {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/icons/right_arrow.gif) no-repeat right; padding-right: 14px; margin-left: 14px;} .header_container p a.previous {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/icons/left_arrow.gif) no-repeat left; padding-left: 14px;} #left_col_775_body { padding: 6px 9px 20px 20px; width: 746px; background: #ede6d5 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/left_col_775_body_bg.gif) no-repeat bottom center; float: left; } #inner_left_400 { width: 400px; float: left; padding-right: 14px; } #inner_right_332 { float: left; width: 332px; } #inner_right_332 .module { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/dark_wp.gif) repeat; width: 316px; padding: 8px; float: left; margin-bottom: 14px; } .module dt {clear: both;} .module dt img {float: left; margin: 0px 6px 6px 0px;} .module_205 { width: 195px; padding: 5px 5px 0 5px; background-color: #ede6d5; margin-bottom: 14px; } .module_205 dl { text-align: center } .module_205 dt { font-weight: bold; font-size: 18px; line-height: 18px; padding-bottom: 3px; } .module_205 dd { font-size: 12px; line-height: 14px; padding-bottom: 12px; } .module_205 dl a {background: none;} .inline_img_left { margin-right: 2px; float: left; } .inline_img { margin: 0px 2px; } #inner_right_332 .red_module { width: 308px; height: 91px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/red_module_bg.gif) no-repeat; margin-bottom: 10px; padding: 14px 12px 0px 12px; } .red_module p {padding:0px 0px 10px 0px;color: #ede6d5;font-weight: bold;} .red_module a { float: left; width: 94px; padding-left: 50px; height: 34px; display: block; float: left; line-height: 34px; font-family: Georgia, "Times New Roman", Times, serif; font-weight: bold; } .red_module a.event_feed {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/feeds_sm.gif) no-repeat; margin-right: 10px;} .red_module a.ical {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/ical_sm.gif) no-repeat;} #center_col_430, #left_col_430 { width: 430px; float: left; margin-right: 18px; } #center_col_430 #center_content, #left_col_430 #left_content { clear:both; width: 416px; padding: 7px; background: #ede6d5 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/center_col_content_bg.gif) no-repeat top; margin-bottom: 15px; } #news_pages #center_col_430 #center_content { width: 416px; padding: 0; background: #ede6d5 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/center_col_content_bg.gif) no-repeat top; margin-bottom: 15px; } #right_col_330 { width: 330px; float: left; } #right_col_205 { width: 205px; float: left; } #left_col_196 .module, #left_col_196 .module_border { width: 176px; padding: 0px 10px; } #left_col_196 .module_border { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/module_border.gif) no-repeat bottom; padding-bottom: 10px; margin-bottom: 10px; } #left_col_196 dl { text-align: center } #left_col_196 dt { font-weight: bold; font-size: 18px; line-height: 18px; padding-bottom: 3px; } #left_col_196 dd { font-size: 12px; line-height: 14px; padding-bottom: 12px; } #left_col_196 ol { text-align: center; list-style-position: inside; } #left_col_196 ol li { padding-bottom: 10px; font-size: 14px; line-height: 15px; font-weight: bold; } /* These entries only show the styles needed for the news pages. Other attributes are in the default style sheet. */ #news_pages #left_col_650 { width: 650px; background: #ede6d5; padding: 0; } #news_pages h2#news_h2_header { height: 36px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/fb_h2_bg.gif) no-repeat top left; color: #fff; line-height: 1em; padding: 14px 0 0 20px; } #news_pages #left_col_650 #left_col_650_inner { width: 610px; padding: 12px 20px 0 20px; } #news_pages #center_col_430 #center_content, #news_pages #left_col_430 #left_content { background: #ede6d5; background-image: none; float: left; } #news_pages #center_col_430 #center_content .alt_row{ background: #e1d7bf; } #news_pages #center_col_430 #center_content .row{ background: #ede6d5; } #news_pages #center_col_430 #center_content div#section_article{ width: 416px; padding: 7px; } #news_pages #center_col_430 #center_content div#section_article h2 a {background: none; color:#7B391C;} span.grey_date{ color: #666666; } .article_full p.kicker { font-size: 12px; line-height: 1.2em; color: #676767; font-family: Arial, Helvetica, sans-serif; padding: 0; } /* Since we're no longer using the background image on the h5, this no longer needs a width associated with it. */ #news_pages #left_col_650 #switcher_icons { width: auto; float: right; text-align: right; } #news_pages #left_col_650 .article_full h2 { background: none; padding: 0; margin: 0; } #news_pages #left_col_650 .article_full h3 { font-size: 16px; line-height: 1.2em; font-weight: normal; margin-bottom: 2px; } #left_col_650 .article_full .related_narrow h5 { width: auto; float: none; margin: 0; padding: 0 0 0 6px; height: auto; text-indent: 0; font-size: 13px; font-weight: bold; text-transform: uppercase; } .related_narrow ul { padding: 0 6px 6px 6px; list-style: none; } .related_narrow ul li { font-size: 12px; line-height: 15px; font-weight: bold; padding: 0 0 10px 10px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/bullet.gif) no-repeat 0 5px; } /* Narrow Article Layout -- this is used in the 3-col layout */ .article_full { width: 406px; padding: 0px 5px; } #switcher_icons { width: 203px; float: left; text-align: right; } #switcher_icons img {padding: 0px 2px;} #switcher_icons a {background: none;} h5#club_scene_h5 { width: 203px; float: left; margin: 0px; padding: 0px 0px 14px 0px; height: 20px; text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/club_scene.gif) no-repeat left; } .article_full h2 { font-size: 22px; line-height: 26px; font-weight: bold; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/border.gif) no-repeat bottom left; padding-bottom: 14px; margin-bottom: 14px; } .article_wide_author { float: left; width: 305px; } .article_wide_author a {background: #d9cba7;;} .article_wide_date { float: left; width: 305px; text-align: right; } .article_full p { font-size: 14px; line-height: 17px; } .article_full .article_wide_author, .article_full .article_wide_date { font-size: 12px; color: #333; } .comment_block { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/comment_block_top.gif) no-repeat top; padding-top: 10px; width: 402px; margin-bottom: 14px; } .comment_block p { padding: 0px 10px 10px 10px; border: 2px solid #000; border-width: 0px 2px; } .comment_block p.comment_author { border: 0px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/comment_block_bottom.gif) no-repeat top; padding-top: 16px; } .border_top { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/border.gif) no-repeat top left; padding-top: 16px; clear: both; } .comments_form { padding-bottom: 40px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/spatter.gif) no-repeat bottom right; margin-bottom: 14px; } .comments_form input { padding: 1px 2px 1px 2px; width: 140px; font-size: 12px; font-family: Arial, Helvetica, sans-serif; border: 1px solid #ccc; color: #333; } .comments_form textarea { width: 300px; font-size: 12px; padding: 2px; height: 120px; font-family: Arial, Helvetica, sans-serif; border: 1px solid #ccc; color: #333; } .comments_form button { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/buttons/submit.gif) no-repeat; cursor: pointer; width: 82px; height: 21px; text-indent: -999em; border: 0px; text-indent: -999em; float: left; } .comments_form table { width: 100%; border-collapse: collapse; } .comments_form table td { padding: 4px 2px; vertical-align: top; font-size: 14px; } .comments_form table td .required { font-size: 11px; font-style: italic; } .related_module { width: 330px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/related_module_bg.gif) no-repeat top; float: left; padding-bottom: 10px; margin-bottom: 14px; } .related_module h4 { height: 26px; text-indent: -999em; margin-bottom: 4px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/related.gif) no-repeat top center; } .related_module .float_left, .related_module .float_right { float: left; padding: 0px 10px; width: 145px; } .related_module p { font-size: 12px; line-height: 15px; font-weight: bold; } .related_module h5 { font-size: 13px; font-weight: bold; padding: 0px; text-transform: uppercase; } .related_module a, .related_module a:link, .related_module a:visited { color: #7b391c; text-decoration: none; background: none; } .related_module a:hover {text-decoration: underline;} /* Wide Aricle List */ #left_col_650 .article_list { width: 610px; padding:0px; } #left_col_650 .article_list h2 { font-size: 22px; line-height: 26px; font-weight: bold; padding-bottom: 14px; margin-bottom: 14px; } #left_col_650 .article_list p { font-size: 14px; } #left_col_650 .article_list .author { float: left; width: 305px; font-weight: bold; } #left_col_650 .article_list .date { float: left; width: 305px; font-weight: bold; text-align: right; } #left_col_650 .article_list .tease { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/border.gif) no-repeat bottom left; padding-bottom: 14px; margin-bottom: 14px; } /* Wide Article Layout */ #left_col_650 { width: 610px; padding: 12px 20px 0px 20px; float: left; background: #ede6d5 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/left_col_650_bg.gif) no-repeat top; margin-right: 12px; display: inline; } #left_col_650_header { background: #ede6d5 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/left_col_650_header_bg.gif) no-repeat bottom center; padding: 20px 0px 0px 0px; width: 610px; float: left; } #left_col_650 .article_full { width: 610px; padding:0px; } #left_col_650 #switcher_icons { width: 305px; float: left; text-align: right; } #switcher_icons img {padding: 0px 2px;} #switcher_icons a {background: none;} #left_col_650 .article_full h5 { width: 305px; float: left; margin: 0px; padding: 0px 0px 14px 0px; height: 20px; } h5#club_scene_h5 {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/club_scene.gif) no-repeat left;} h5#music_scene_h5 {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/music_scene_sm.gif) no-repeat left;} #left_col_650 .article_full h2 { font-size: 22px; line-height: 26px; font-weight: bold; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/border_610.gif) no-repeat bottom left; padding-bottom: 8px; margin-bottom: 4px; } #left_col_650 .article_full h2.noLine { font-size: 22px; line-height: 26px; font-weight: bold; background: none; padding-bottom: 8px; margin-bottom: 4px; clear:both; } #left_col_650 .article_full h2.shortLine { font-size: 22px; line-height: 26px; font-weight: bold; background:none; /* background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/border.gif) no-repeat bottom left; */ padding-bottom: 8px; margin-bottom: 4px; } .story_break { padding-top: 18px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/story_break.gif) no-repeat 50% 0; } .article_full h3 { font-size: 18px; line-height: 26px; font-weight: bold; padding-bottom: 14px; margin-bottom: 14px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/border_610.gif) no-repeat bottom left; clear:both; } #left_col_650 .article_full h2#divider { font-size: 22px; line-height: 26px; font-weight: bold; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/border_410.gif) no-repeat bottom left; padding-bottom: 8px; margin-bottom: 4px; } .article_full p { font-size: 14px; line-height: 20px; } #left_col_650 .comment_block { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/comment_block_wide_top.gif) no-repeat top; padding-top: 10px; width: 610px; margin-bottom: 14px; } #left_col_650 .comment_block p { padding: 0px 10px 10px 10px; border: 2px solid #000; border-width: 0px 2px; } #left_col_650 .comment_block p.comment_author { border: 0px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/comment_block_wide_bottom.gif) no-repeat top; padding-top: 16px; } #left_col_650 .border_top { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/border_610.gif) no-repeat top left; padding-top: 16px; } .comments_form { padding-bottom: 40px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/spatter.gif) no-repeat bottom right; margin-bottom: 14px; } .comments_form input { padding: 1px 2px 1px 2px; width: 140px; font-size: 12px; font-family: Arial, Helvetica, sans-serif; border: 1px solid #ccc; color: #333; } .comments_form textarea { width: 300px; font-size: 12px; padding: 2px; height: 120px; font-family: Arial, Helvetica, sans-serif; border: 1px solid #ccc; color: #333; } .comments_form button { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/buttons/submit.gif) no-repeat; cursor: pointer; width: 82px; height: 21px; text-indent: -999em; border: 0px; text-indent: -999em; float: left; } .comments_form table { width: 100%; border-collapse: collapse; } .comments_form table td { padding: 4px 2px; vertical-align: top; font-size: 14px; } .comments_form table td .required { font-size: 11px; font-style: italic; } .related_narrow { width: 165px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/related_narrow_bg.gif) no-repeat top; float: right; margin: 0px 0px 10px 10px; } .related_narrow h4 { height: 26px; text-indent: -999em; margin-bottom: 4px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/related_narrow.gif) no-repeat top center; } .related_narrow dl { padding: 0px 6px 6px 6px; } .related_narrow dt { font-size: 13px; font-weight: bold; padding: 0px; text-transform: uppercase; } .related_narrow dd { font-size: 12px; line-height: 15px; font-weight: normal; } .related_narrow dd a {font-weight: bold;} .related_narrow a, .related_narrow a:link, .related_narrow a:visited { color: #7b391c; text-decoration: none; background: none; } .related_narrow a:hover {text-decoration: underline;} /* Headers */ #left_col_196 h4 { color: #fff; font-style: italic; text-align: center; /*background-color: #000;*/ font-size: 12px; line-height: 16px; font-style: italic; margin-bottom: 10px; } h4.h4_bg02 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/bg02.gif) no-repeat top; width: 196px; height: 27px; padding: 6px 0px 0px 0px; line-height: 26px; font-size: 14px; } /* These image headers need a second id for when they are at the top of the column. The second id has the same attributes as the default with the addition of a background color in order to blend into the body background. */ h4#club_guide_h4, h4#club_guide_top_h4 { height: 60px; text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/club_guide.gif) no-repeat; padding: 0px; } h4#club_guide_top_h4 {background: #dfd2b3 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/club_guide.gif) no-repeat;} h4#eats_h4 { height: 57px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/eats.gif) no-repeat; width: 154px; padding: 22px 0px 0px 42px; text-align: left; font-size: 18px; } h4#restaurant_guide_h4, h4#restaurant_guide_top_h4 { height: 71px; text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/restaurant_guide.gif) no-repeat; padding: 0px; } h4#restaurant_guide_top_h4 {background: #dfd2b3 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/restaurant_guide.gif) no-repeat;} h4#show_guide_h4, h4#show_guide_top_h4 { height: 96px; text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/show_guide.gif) no-repeat; padding: 0px; } h4#show_guide_top_h4 {background: #dfd2b3 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/show_guide.gif) no-repeat;} h4#band_guide_h4, h4#band_guide_top_h4 { height: 89px; text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/band_guide.gif) no-repeat; padding: 0px; } h4#band_guide_top_h4 {background: #dfd2b3 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/band_guide.gif) no-repeat;} h4#club_guide_h4, h4#club_guide_top_h4 { height: 60px; text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/club_guide.gif) no-repeat; padding: 0px; } h4#club_guide_top_h4 {background: #dfd2b3 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/club_guide.gif) no-repeat;} h4.h4_bg01, h4.h4_bg01_top { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/h4_bg01.gif) no-repeat top; width: 196px; height: 27px; padding: 10px 0px 0px 0px; line-height: 26px; font-size: 14px; } h4.h4_bg_movietimes { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/movietimes_196_header.jpg) no-repeat top; width: 196px; height: 40px; text-indent: -999em; padding: 10px 0px 0px 0px; line-height: 26px; font-size: 14px; } #movie-theater {padding-bottom:35px;} #movie-theater h2 {font-size:24px;} h4.h4_bg01_top {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/h4_bg01_top.gif) no-repeat top;} h4#ae_h4, h4#ae_top_h4 { height: 95px; text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/ae.gif) no-repeat; padding: 5px 0 0 0; } h4#ae_top_h4 {background: #dfd2b3 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/ae_top.gif) no-repeat;} /* Club Connector Module */ #connect_module { width: 196px; height: 144px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/connect_module_bg.gif) no-repeat; margin-bottom: 14px; padding-top: 16px; } h4#club_connector_h4 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/club_connector.gif) no-repeat; width: 196px; height: 24px; text-indent: -999em; margin: 0px; padding-bottom: 5px; } #connect_module p { font-size: 12px; font-weight: bold; color: #d9cba7; padding: 0px 8px 8px 8px; } #connect_module ul {list-style: none; padding: 0px 10px;width: 176px;} #connect_module li { font-weight: bold; font-size: 14px; } #connect_module ul li.facebook_li {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/facebook.gif) no-repeat;} #connect_module li a, #connect_module li a:link, #connect_module li a:visited, #connect_module li a:hover { background: none; display: block; width: 100px; padding-left: 76px; height: 46px; line-height: 46px; } #left_col_775_header h3 { height: 24px; text-indent: -999em; } h3#find_a_band {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/find_a_band.gif) no-repeat; width: 168px;} h3#find_a_club {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/find_a_club.gif) no-repeat; width: 159px;} h3#find_a_restaurant {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/find_a_restaurant.gif) no-repeat; width: 247px;} h3#find_a_pool {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/find_a_pool.gif) no-repeat; width: 157px;} h3#find_a_stripclub {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/find_a_stripclub.gif) no-repeat; width: 229px;} h3#find_a_dj {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/find_a_dj.gif) no-repeat; width: 128px;} #left_col_196 h4 a, #left_col_196 h4 a:link, #left_col_196 h4 a:visited { color: #fff; background: none; } #left_col_196 dl a, #left_col_196 dl a:link, #left_col_196 dl a:visited, #left_col_196 ol a, #left_col_196 ol a:link, #left_col_196 ol a:visited { color: #000; background: none; } #left_col_196 h4 a:hover, #left_col_196 dl a:hover, #left_col_196 ol a:hover {text-decoration: underline;} .more_link { text-align: right; text-transform: uppercase; font-weight: bold; clear: both; } .more_link a, .more_link a:link, .more_link a:visited { background: #bda566 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/icons/more_link.gif) no-repeat right; padding: 0px 12px 0px 3px; } #feed_links { width: 196px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/feed_links_bg.gif) no-repeat top; padding: 26px 0px 15px 0px; } #feed_links h4 { font-size: 16px; line-height: 16px; } #feed_links ul {list-style: none; padding: 0px 10px;width: 176px;} #feed_links li { font-weight: bold; font-size: 14px; } #feed_links li.ipod_li {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/ipod.gif) no-repeat;} #feed_links li.mobile_li {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/mobile.gif) no-repeat;} #feed_links li.feeds_li {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/feeds.gif) no-repeat;} #feed_links li.tv_li {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/tv.gif) no-repeat;} #feed_links li.email_li {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/email.gif) no-repeat;} #feed_links li.facebook_li {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/facebook.gif) no-repeat;} #feed_links li.igoogle_li {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/igoogle.gif) no-repeat;} #feed_links li.myyahoo_li {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/myyahoo.gif) no-repeat;} #feed_links li a, #feed_links li a:link, #feed_links li a:visited, #feed_links li a:hover { background: none; display: block; width: 100px; padding-left: 76px; height: 46px; line-height: 46px; } /* Ad containers */ .ad_160 { font-size: 11px; font-family: Arial, Helvetica, sans-serif; padding-bottom: 18px; text-align: center; } .ad_300 { width: 300px; margin: 0px auto 10px; text-align: center; font-family: Arial, Helvetica, sans-serif; font-size: 11px; } .ad_300 img { padding-bottom: 18px; } .flash_container { padding-bottom: 14px; } /* Center column posts */ /* The daily filter header has a unique id as it requires a background image and slightly different text placement. */ #daily_filter_header { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/daily_filter_bg.gif) no-repeat; padding-left: 160px; width: 256px; height: 50px; border-bottom: 1px solid #000; padding-top: 12px; margin-bottom: 4px; } #daily_filter_header h2 { text-indent: -999em; width: 220px; height: 29px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/daily_filter.gif) no-repeat top; } #center_content_header, #left_content_header { height: 50px; border-bottom: 1px solid #000; padding-top: 12px; margin-bottom: 4px; text-align: center; } #center_content_header h2, #left_content_header h2 { text-indent: -999em; height: 29px; background-repeat: no-repeat; background-position: top center; } #center_content_header h2#wht_h2 {background-image: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/whats_happening_tonight.gif);} #center_content_header h2#dining_out_h2 {background-image: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/dining_out.gif);} #center_content_header h2#show_business_h2 {background-image: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/show_business.gif);} #daily_filter_header p, #center_content_header p { font-style: italic; font-size: 11px; line-height: 13px; } #daily_filter_header a, #center_content_header a, #left_content_header a { color: #000; text-decoration: none; background: none; } #daily_filter_header a:hover, #center_content_header a:hover, #left_content_header a:hover {text-decoration: underline;} .article h3 { text-align: center; } .article h3 a, .article h3 a:link, .article h3 a:visited {background: none;} .article h3 a:hover {text-decoration: underline;} .article_details { width: 416px; height: 20px; line-height: 20px; font-size: 12px; position: relative; background-color: #000; color: #fff; margin-bottom: 12px; } .article_details .author { position: absolute; top: 0px; left: 70px; width: 276px; text-align: center; font-size: 14px; font-style: italic; font-weight: bold; } .article_details .date, .article_details .time { position: absolute; width: 65px; top: 0px; } .article_details .date { left: 5px; } .article_details .time { right: 5px; text-align: right; } .article_details a { color: #fff; background: none; } .author_link { font-weight: bold; padding: 0; } .tags a, .tags a:link, .tags a:visited {background: none;} .tags a:hover {text-decoration: underline;} .img_left { float: left; margin: 0px 6px 6px 0px; clear:left; } /* vertical lead art styles */ div#leadPhotoVertical{ width: 270px; float:left; clear:left; margin: 0px 6px 6px 0px; } /* div#leadPhotoVertical p.credit { font-size: 11px; padding: 3px 0px 0px 0px; text-align:left; } */ #leadPhotoHorizontal p { text-align: left; font-family: Arial, Helvetica, sans-serif; font-size: 11px; color: #333; line-height: 1.2em; padding-top: 3px; } #leadPhotoHorizontal p.caption { padding-bottom:5px; font-weight: bold;} #leadPhotoVertical p { text-align: left; font-family: Arial, Helvetica, sans-serif; font-size: 11px; color: #333; line-height: 1.2em; padding-top: 3px; } /* end vertical lead art styles */ .nopad { padding-bottom: 0px; } p.article_tools { clear: both; } .article_tools a, .article_tools a:link, .article_tools a:visited { margin: 0px 16px 0px 0px; padding: 0px 0px 0px 18px; } .article_tools a:hover { text-decoration: underline; } .article_tools a.link {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/icons/link.gif) no-repeat;} .article_tools a.comments {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/icons/comments.gif) no-repeat 0 2px;} .article_tools a.share {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/icons/share.gif) no-repeat 0 2px; padding-left: 22px;} .article_tools a.print {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/icons/print.gif) no-repeat 0 2px; padding-left: 22px;} .article_tools a.subscribe {background: url(http://media.lasvegasweekly.com/assets/images/icons/rss_article_tool.gif) no-repeat 0 2px; padding-left: 22px;} .page_nav { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/page_nav_bg.gif) right top no-repeat; text-align: right; font-family: Arial, Helvetica, sans-serif; text-transform: uppercase; font-weight: bold; line-height: 28px; width: auto; padding-right: 10px; } .page_nav a, .page_nav2 a, .page_nav a:link, .page_nav2 a:link, .page_nav a:visited, .page_nav2 a:visited { padding: 0px 3px; background: none; } .page_nav a:hover, .page_nav2 a:hover { text-decoration: underline; } .page_nav a.next {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/icons/right_arrow.gif) no-repeat right; padding-right: 14px;} .page_nav a.previous {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/icons/left_arrow.gif) no-repeat left; padding-left: 14px;} .page_nav2 a.next {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/icons/right_arrow2.gif) no-repeat right; padding-right: 14px;} /* Page nav without the background. This is also floated right. Shared styles are listed above. */ .page_nav2 { text-align: right; font-family: Arial, Helvetica, sans-serif; text-transform: uppercase; font-weight: bold; line-height: 28px; width: auto; padding-right: 10px; } #best_in_print { width: 430px; height: 500px; position: relative; margin-bottom: 14px; background: url(http://media.lasvegasweekly.com/assets/images/cover/best_in_print.gif) no-repeat; background-position: 40px 20px; } #best_in_print h3 { text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/best_in_print.gif) no-repeat; width: 277px; height: 40px; position: absolute; top: 30px; left: 0px; } #best_in_print h3 a { display: block; background: none; width: 277px; height: 40px; } #best_in_print #rack_locator { position: absolute; top: 182px; left: 176px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/rack_locator_bg.gif) no-repeat; width: 236px; height: 111px; padding: 16px 0px 0px 16px; color: #eae2cf; } #rack_locator h4 { text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/rack_locator.gif) no-repeat; width: 197px; height: 25px; margin-bottom: 8px; } #rack_locator p { padding-bottom: 8px; } #rack_locator form {float: left;} #rack_locator form .input { padding: 1px 2px 1px 2px; width: 140px; font-size: 12px; font-family: Arial, Helvetica, sans-serif; border: 1px solid #a0a1a1; float: left; color: #999; } #rack_locator button { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/buttons/find.gif) no-repeat; cursor: pointer; width: 52px; height: 21px; border: 0px; margin: 0px 0px 0px 7px; padding: 0px; text-indent: -999em; float: left; } #footer { clear: both; width: 1000px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/footer_bg.gif) no-repeat center top; text-align: center; padding: 60px 0px 30px 0px; } #footer a, #footer a:link, #footer a:visited, #footer a:hover { background: none; } #footer p { font-size: 12px; line-height: 15px; font-family: Arial, Helvetica, sans-serif; } #footer_search_container { margin-bottom: 14px; } #footer_search_container form .input { padding: 2px; width: 146px; font-size: 12px; font-family: Arial, Helvetica, sans-serif; border: 1px solid #a0a1a1; color: #999; } #footer_search_container button { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/buttons/go.gif) no-repeat; cursor: pointer; width: 34px; height: 21px; border: 0px; margin: 0px 0px 0px 7px; padding: 0px; text-indent: -999em; } /* Modules */ #cocktails { width: 316px; background: #000 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/cocktails_lg_bg.gif) no-repeat top; padding: 14px 7px 0px 7px; color: #fff; float: left; font-family: Arial, Helvetica, sans-serif; } #right_col_205 #cocktails { width: 191px; background: #000 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/cocktails_sm_bg.gif) no-repeat top; } #cocktails img {float: left;margin: 0px 12px 7px 18px;} #right_col_205 #cocktails img {margin: 0px 12px 7px 0px;} #cocktails h4 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/cocktail_week_lg.gif) no-repeat top; text-indent: -999em; width: 283px; height: 33px; margin-bottom: 6px; padding-bottom: 0px; } #right_col_205 #cocktails h4 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/cocktail_week_sm.gif) no-repeat top; width: 187px; height: 22px; } #cocktails h5 { font-size: 16px; font-weight: bold; line-height: 19px; } #right_col_205 #cocktails h5 { font-size: 14px; line-height: 17px; } #cocktails p { font-size: 12px; line-height: 16px; padding-bottom: 6px; } #cocktails a, #cocktails a:link, #cocktails a:visited, #cocktails a:hover { background: none; color: #fff; } #cocktails_bot { width: 330px; height: 34px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/cocktails_lg_bot_bg.gif) no-repeat top right; clear: both; margin-bottom: 14px; } #right_col_205 #cocktails_bot { width: 205px; } #cocktails_bot p { text-indent: -999em; padding: 0px; width: 166px; padding-left: 164px; height: 34px; } #right_col_205 #cocktails_bot p { padding-left: 39px; } #cocktails_bot a {display: block; height: 34px; float: left;} #cocktails_bot a.view_recipe { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/view_recipe.gif) no-repeat; width: 102px; } #cocktails_bot a.share { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/share.gif) no-repeat; width: 64px; } /* Xania's Hotspots */ #x_hot_spots { background: #81b3a7 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/x_hot_spots_bg.jpg) no-repeat top; width: 330px; padding: 12px 0px 0px 0px; margin-bottom: 14px; } #right_col_205 #x_hot_spots { background: #81b3a7 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/x_hot_spots_sm.gif) no-repeat top; width: 205px; padding-top: 20px; } #x_hot_spots h4 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/x_hot_spots.gif) no-repeat top; text-indent: -999em; width: 314px; height: 67px; margin-bottom: 5px; padding: 0px 8px; } #right_col_205 #x_hot_spots h4 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/x_hot_spots_sm.gif) no-repeat top; width: 101px; height: 74px; margin: 0px 0px 14px 12px; padding: 0px; } #x_hot_spots ul { list-style: none; padding: 4px 0px 0px 14px; } #x_hot_spots ul li { font-weight: bold; padding-bottom: 10px; font-size: 12px; line-height: 15px; } #x_hot_spots img { float: right; margin: 0px 8px 4px 4px; } #x_hot_spots a, #x_hot_spots a:link, #x_hot_spots a:visited, #x_hot_spots a:hover { background: none; color: #000; } #x_hot_spots .more_link { text-align: right; text-transform: uppercase; font-weight: bold; clear: both; width: 322px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/x_hot_spots_bot_bg.gif) no-repeat bottom; padding: 0px 8px 28px 0px; } #right_col_205 #x_hot_spots .more_link { width: 197px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/x_hot_spots_bot_bg_sm.gif) no-repeat bottom; padding: 0px 8px 28px 0px; } #x_hot_spots .more_link a, #x_hot_spots .more_link a:link, #x_hot_spots .more_link a:visited { background: #bda566 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/icons/more_link.gif) no-repeat right; padding: 0px 12px 0px 3px; } /* Top Banners */ #banner_container { float: left; width: 980px; margin: 0px 6px 15px 6px; } #banner_left { width: 245px; float: left; padding-right: 7px; } #banner_right { width: 728px; float: left; } /* Headers */ #banner_left h2 { text-indent: -999em; width: 245px; height: 90px; } #banner_left h2#music_scene_h2 {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/music_scene.gif) no-repeat;} #banner_left h2#club_guide_h2 {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/club_guide_h2.gif) no-repeat;} #banner_left h2#restaurant_guide_h2 {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/restaurant_guide_h2.gif) no-repeat;} h4#listed_by_venue_h4 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/listed_by_venue.gif) no-repeat; height: 21px; text-indent: -999em; } /* Secondary Search */ .secondary_search { margin-bottom: 14px; clear: both; } .secondary_search form {font-size: 11px;} .secondary_search form .input { padding: 1px 2px 1px 2px; width: 190px; font-size: 12px; font-family: Arial, Helvetica, sans-serif; border: 1px solid #a0a1a1; color: #333; margin-right: 10px; } .secondary_search button { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/buttons/search.gif) no-repeat; cursor: pointer; width: 82px; height: 21px; border: 0px; padding: 0px; text-indent: -999em; } .secondary_search .select { padding: 1px 2px 1px 2px; width: 190px; font-size: 12px; font-family: Arial, Helvetica, sans-serif; border: 1px solid #a0a1a1; color: #333; margin-right: 10px; } .secondary_search form .conjuction { padding-right: 10px; } /* Tasks - email, print, etc. */ #left_col_775_header h3 { width: 370px; float: left; } #left_col_775_header #tasks { width: 256px; float: left; padding-left: 114px; } #tasks {text-indent:-999em;} #tasks a {display: block; height: 24px; float: left;} #tasks a.send_task { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/send_to_phone.gif) no-repeat left; width: 115px; padding-right: 4px; } #tasks a.share_task { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/share2.gif) no-repeat; width: 47px; } #tasks a.email_task { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/email.gif) no-repeat; width: 44px; } #tasks a.print_task { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/print.gif) no-repeat; width: 46px; } /* Inner side-by-side columns */ .columns {float: left;} #inner_left_400 .inner_left, #inner_left_400 .inner_right {float: left; width: 180px; padding-right: 20px;} #inner_left_400 .inner_3col_left, #inner_left_400 .inner_3col_center, #inner_left_400 .inner_3col_right {float: left; width: 124px; padding-right: 14px;} #inner_left_400 .inner_3col_right { padding-right: 0px; } #inner_left_400 .inner_3col_left { width: 262px; } .module2 {clear: both;} .cc_icons img { padding-right: 4px; } dl.twitter_dl dt { font-weight: normal; clear: both; } dl.twitter_dl dt img { float: left; margin: 0px 8px 8px 0px; } dl.twitter_dl dd { font-size: 10px; } .reviews { clear: both; } .reviews .reviews_pic { float: left; width: 60px; } .reviews dl { float: left; width: 340px; } .reviews dl dt { float: left; width: 250px; clear: none; } .reviews dl dd.stars { float: right; width: 90px; clear: none; } .reviews dl dd { clear: both; } /* Beautiful People Styles */ #content_black { width: 1000px; float: left; padding: 0px 0px 20px 0px; background: #000 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/content_black_bg.gif) no-repeat bottom; color: #fff; } #banner_container_black { background: #000 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/banner_black_bg.gif) no-repeat top; text-align: center; padding: 20px 0px 16px 0px; } #bp_header { position: relative; width: 1000px; height: 77px; padding-bottom: 20px; } h2#beautiful_people_h2 { text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/beautiful_people.jpg) no-repeat; width: 600px; height: 77px; position: absolute; top: 0px; left: 178px; } #bp_left { float: left; width: 474px; padding: 0px 20px 0px 24px; } #bp_right { float: left; width: 430px; } .club_listing { margin-bottom: 14px; border: 0px; border-collapse: collapse; width: 100%; clear: both; } .club_listing thead tr { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/header_bar_bg.gif) no-repeat top; height: 28px; } .club_listing td, .club_listing th { vertical-align: top; padding: 8px 10px; } .club_listing th { text-align: left; font-weight: bold; line-height: 24px; padding: 0px 10px; } .club_listing tr.alt { background-color: #e3d9bf; } /* Generic 2 column containers */ .float_left, .float_right { float: left; width: 50%; } /* Google Ads */ #google_ads { float: left; width: 992px; padding: 0px 4px; clear: both; } #google_ads h5 { text-indent: -999em; height: 12px; padding-bottom: 10px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/ads_by_google.gif) no-repeat; } #google_ads #google1, #google_ads #google2, #google_ads #google3, #google_ads #google4 { width: 230px; float: left; padding: 0px 18px 18px 0px; } #google_ads a, #google_ads a:link, #google_ads a:visited, #google_ads a:hover { background: none; } #google_ads p { font-family: Arial, Helvetica, sans-serif; padding: 0px; } p.ad_title { font-size: 16px; font-weight: bold; } p.ad_title a, p.ad_title a:link, p.ad_title a:visited { color: #560e0e; } a.googleLine3, a.googleLine3:link, a.googleLine3:visited { color: #619389; text-decoration: none; } a.googleLine3:hover {text-decoration: underline;} /* mobile updates */ #mobile_updates { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/mobile_updates_bg.gif) no-repeat top left; height: 78px; width: 326px; position: relative; margin-bottom: 14px; } div#right_col_330 #mobile_updates a { text-indent: -5000px; width: 326px; height: 78px; display: block; background-color: transparent; } #mobile_updates h2 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/mobile_updates.gif) no-repeat top left; height: 14px; width: 118px; text-indent: -999em; position: absolute; top: 15px; left: 15px; } #mobile_more { width: 66px; height: 10px; text-indent: -999em; background: transparent url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/learn_more.gif) no-repeat top left; position: absolute; top: 15px; right: 15px; } #mobile_more a { display: block; width: 68px; height: 12px; background: none; } #mobile_updates form { width: 300px; position: absolute; top: 36px; left: 15px; } #mobile_phone { border: 1px solid #888; color: #888; display: block; float: left; width: 208px; } #mobile_signup { background: transparent url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/sign_up.gif) no-repeat top left; border: 0px; cursor: pointer; display: block; float: left; height: 21px; margin: 0px 0px 0px 7px; padding: 0px; text-indent: -999em; width: 81px; } /* datebook outer frame */ #datebook_frame { background: transparent url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/datebook_bg.gif) no-repeat top left; overflow: hidden; position: relative; width: 326px; } #datebook_frame h4 { line-height: 1.0; margin: 0px; padding: 0px; } #datebook_frame p { margin: .4em 0px 1em 0px; padding: 0px; } #datebook_frame a { background: none; } #datebook_loading { text-align: center; } #datebook_loading img { padding-top: 50px; } /* datebook header */ #datebook_header { width:120px; } #datebook_header h2 { /*background: transparent url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/date_book.gif) no-repeat top left;*/ font: bold 1.25em Georgia, "Times New Roman", Times, serif; height: 30px; margin-left: 3px; position: relative; /*text-indent: -1000em; */ width: 107px; } #datebook_nav { position: absolute; top: 0px; left: 150px; height: 15px; padding: 0px; text-indent: -1000em; width: 170px; } #datebook_nav a { display: block; float: left; height: 15px; } #datebook_nav a#datebook_nav_prev { background: transparent url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/previous.gif) no-repeat top left; display: none; left: 5px; position: absolute; top: 5px; width: 68px; } #datebook_nav a#datebook_nav_next { background: transparent url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/next.gif) no-repeat top left; left: 125px; position: absolute; top: 5px; width: 44px; } /* datebook content */ #datebook_content { margin: 0px 0px 0px 0px; width: 990px; } #datebook_content .vevent { border-left: 1px solid #d9cba7; padding:5px; } #datebook_content .vevent .dtweekstart { display:none; } #datebook_content .datebook_column .vevent .dtstart { display:none; } #datebook_content .description { display:none; } #datebook_content .first-event .dtweekstart { display:block !important; } #datebook_content .more-events { border-left: 1px solid #d9cba7; padding:0px 0px 5px 5px; } #datebook_content .datebook_column { float: left; list-style: none; padding-right: 5px; text-align: left; width: 104px; } #datebook_content .datebook_column h3 { font: bold 14px Georgia, "Times New Roman", Times, serif; text-transform: uppercase; } #datebook_content .datebook_column h4 { font-size: 12px; text-transform: uppercase; } #datebook_content .datebook_column .datebook_date { color: #555; font-size: 11px; } #datebook_content .datebook_column a, #datebook_content .datebook_column a:link, #datebook_content .datebook_column a:visited { background: none; color: #7b391c; text-decoration: none; } #datebook_content .datebook_column a:hover { text-decoration: underline; } #datebook_content .datebook_column a.more, #datebook_content .datebook_column a.more:link, #datebook_content .datebook_column a.more:visited { background: #d9cba7; color: #000; font-size: 12px; font-weight: bold; text-decoration: none; white-space: nowrap; } #datebook_content .datebook_column a.more:hover { background: none; } /* date picker */ #date_picker .calendar { background: url('http://media.lasvegasweekly.com/assets/images/lvwtemp/calendar/icons/date_picker.gif') transparent; } #date_picker button.calendar { border:0px none; height:16px; width:21px; } div.calendar { font-family:Arial,Helvetica,sans-serif; } .calendar table { background:#CCCCCC none repeat scroll 0%; font-size:100%; text-align:center; color:#FFFFFF; width:185px; } .calendar caption { font-size:80%; font-weight:bold; letter-spacing:1px; background:#000000 none repeat scroll 0%; padding:2px 0px; color:#FFFFFF; } .calendar caption a, .calendar caption a.link { background:#000000 none repeat scroll 0%; color:#FFFFFF; } .calendar thead { background:#777777 none repeat scroll 0%; color:#FFFFFF; } .calendar tbody .valid { background:#EEEEEE none repeat scroll 0%; } .calendar tbody .active { background:#777777 none repeat scroll 0%; color:#FFFFFF; } .calendar tbody { color:#666666; } #date_picker { height: 16px; margin: 0px; padding: 0px; position: absolute; top: 0px !important; left: 125px; width: 21px; } #date_picker_input { border: 0px; height: 0px; margin: 0px; padding: 0px; width: 0px; } /* misc elements */ .img_right { float: right; margin: 0px 0px 1em 1em; } /* page header elements */ body#calendar_page #header { height: 178px; } body#calendar_page #header h1 { background: transparent url(http://media.lasvegasweekly.com/assets/images/lvwtemp/logo_calendar.png) no-repeat top left; height: 88px; } body#calendar_page #header h1 a { width: 331px; height: 88px; } #sponsored_vegas { background: transparent url(http://media.lasvegasweekly.com/assets/images/lvwtemp/graphics/sponsored_by_vegas.gif) no-repeat top right; display: block; float: left; height: 41px; margin: -15px 0px 0px 195px; text-indent: -999em; width: 175px; } h3#search_calendar { background: transparent url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/search_calendar.gif) no-repeat top left; } /* calendar lower section */ #calendar_lower { clear: both; padding-top: 8px; width: 742px; min-height: 170px; } #calendar_lower h3 { height: 75px; text-indent: -999em; width: 203px; } #calendar_lower h4 { font: bold 12px Georgia, "Times New Roman", Times, serif; margin: 0px; padding: 0px; text-transform: uppercase; } #calendar_lower ol { margin: .5em 0px 1em 2em; } #calendar_lower dt { font: bold 14px Arial, Helvetica, Geneva, Verdana, sans-serif; } #calendar_lower dd .more { font-weight: bold; } #calendar_lower_left { float: left; margin-right: 2px; width: 203px; } #calendar_lower_left h3 { background: transparent url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/box_office.gif) no-repeat top left; } #calendar_lower_center { float: left; margin-right: 4px; width: 203px; } #calendar_lower_center h3 { background: transparent url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/ticket_alert.gif) no-repeat top left; } #calendar_lower_right { float: left; width: 330px; } /* calendar outer frame */ #calendar_frame { background: transparent url(http://media.lasvegasweekly.com/assets/images/lvwtemp/calendar/table_hdr_bg.png) no-repeat 0px 5px; font: normal 11px Arial, Helvetica, Geneva, Verdana, sans-serif; height:83px; padding-top:5px; width:742px; min-height: 605px; } #calendar_frame .datebook_column { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/calendar/open.png) no-repeat 5px 5px; float: left; list-style: none; text-align: left; width: 85px; } #calendar_frame a, #calendar_frame a:link, #calendar_frame a:visited { background: none; color: #000000; font-size:1em; font-weight:bold; text-decoration: none; } #calendar_frame .active a, #calendar_frame .active a:link, #calendar_frame .active a:visited { background: none; color: #000000; font-size:1.25em; font-weight:bold; text-decoration: none; } #calendar_frame a:hover { text-decoration: underline; } #calendar_frame a.more, #calendar_frame a.more:link, #calendar_frame a.more:visited { background: #d9cba7; color: #000000; font-size:1em; font-weight:normal; text-decoration: none; white-space: nowrap; } #calendar_frame a.more:hover { text-decoration: underline; } #calendar_frame .vevent { border-left: 1px solid #000000; border-top: 1px solid #CFC8B8; height:145px; min-height:145px; overflow:hidden; padding:0px 1px 0px 2px; } #calendar_frame .vevent .category { font-family:Georgia,"Times New Roman",Times,serif; font-size:12px; font-style:normal; font-variant:normal; font-weight:bold; line-height:normal; overflow:hidden; padding:8px 0px; text-transform:uppercase; word-wrap:break-word; } #calendar_frame .vevent .dtweekstart { display:none; } #calendar_frame .vevent .dtstart { display:none; } #calendar_frame .vevent .dtshortstart { display:none; } #calendar_frame .vevent .dtweekstart { display:none; } #calendar_frame .vevent .description { display:none; padding:0px; } #calendar_frame .vevent .more { display:none; } #calendar_frame .vevent .photo { float:right; } #calendar_frame .vevent .summary { padding:4px 0px 0px 0px; } #calendar_frame .more-events { border-left: 1px solid #000000; border-top: 1px solid #CFC8B8; height:45px; padding:0px 0px 5px 5px; } #calendar_frame .first-event { border-top:0px; height:250px; min-height:250px; } #calendar_frame .first-event .dtweekstart { display:block !important; padding:24px 0px; font-size:2.25em; } #calendar_frame .first-event .category { padding:20px 0px 8px 0px; } #calendar_frame .active { background: none; width:205px; } #calendar_frame .active .description { display:block !important; } #calendar_frame .active .more { display:inline !important; } #calendar_frame .active .first-event .dtweekstart { padding-bottom:7px; } #calendar_frame .active .first-event .dtshortstart { display:block !important; font-size:2.0em; } #calendar_frame .active .first-event .category { padding:8px 0px; } #calendar_frame .first-column .vevent { border-left:0px; } #calendar_frame .first-column .more-events { border-left:0px; } /* Music Reviews Module */ .music_reviews_module, .noise_module, .soundcheck_module { width: 330px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/music_reviews_bg.gif) no-repeat bottom left; padding-bottom: 20px; margin-bottom: 14px; } .music_reviews_module h3, .noise_module h3, .soundcheck_module h3 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/music_reviews.gif) no-repeat top left; text-indent: -999em; height: 32px; padding: 0px; } .music_reviews_module dl, .noise_module dl, .soundcheck_module dl { width: 306px; padding: 12px 12px 0px 12px; background: #ede6d5; } .music_reviews_module dt, .noise_module dt, .soundcheck_module dt { font-size: 18px; line-height: 19px; padding-bottom: 4px; clear: both; } .music_reviews_module dt img, .noise_module dt img, .soundcheck_module img { float: left; margin: 0px 6px 15px 0px; } .music_reviews_module dd, .noise_module dd, .soundcheck_module dd { font-size: 12px; line-height: 14px; padding-bottom: 15px; } .noise_module .noise_header, .soundcheck_module .soundcheck_header { width: 330px; height: 69px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/noise_header_bg.gif) no-repeat; position: relative; } .noise_module h3 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/noise.gif) no-repeat top left; height: 69px; padding: 0px; } .noise_header .more, .soundcheck_header .more { text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/more.gif) no-repeat top left; width: 60px; height: 20px; position: absolute; top: 20px; right: 10px; } .noise_header .more a, .soundcheck_header .more a { display: block; width: 60px; height: 20px; background: none; } .soundcheck_module h3 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/soundcheck.gif) no-repeat top left; height: 69px; padding: 0px; } /* Featured Modules */ #feature_module, #feature_module_wide { width: 430px; height: 290px; margin-bottom: 14px; position: relative; } .dining_module {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/dining_module_bg.jpg) no-repeat;} .entertainment_module {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/entertainment_module_bg.jpg) no-repeat;} #feature_module_wide { width: 644px; height: 302px; } .dining_module_wide { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/dining_module_wide_bg.jpg) no-repeat; } #feature_module h2, #feature_module_wide h2 { position: absolute; top: 14px; left: 9px; text-indent: -999em; } .dining_module h2, .dining_module_wide h2 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/dining.png) no-repeat; width: 102px; height: 29px; } /* html .dining_module h2, * html .dining_module_wide h2 {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/dining.gif) no-repeat;} */ .entertainment_module h2, .entertainment_module_wide h2 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/entertainment.png) no-repeat; width: 222px; height: 24px; } /* html .entertainment_module h2, * html .entertainment_module_wide h2 {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/entertainment.gif) no-repeat;} */ #feature_module_wide h2 { top: 24px; left: 12px; text-indent: -999em; } #feature_module_inner { position: absolute; top: 62px; left: 10px; width: 160px; padding: 16px 16px 0px 16px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/feature_module_inner_bg.png) repeat; color: #fff; } #feature_module_wide #feature_module_inner { top: 148px; width: 592px; padding: 0px; background: none; } #feature_module_inner .column_wrapper { float: left; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/feature_module_inner_bg.png) repeat; padding: 12px 0px 12px 12px; width: 612px; } #feature_module_inner .column_wrapper .inner_column { width: 192px; padding-right: 12px; float: left; } #feature_module h3 { font-size: 18px; line-height: 19px; } #feature_module_wide h3 { font-size: 14px; line-height: 16px; padding-bottom: 6px; } #feature_module_wide img { float: left; margin: 0px 15px 6px 0px; } #feature_module_wide p { /*clear: both;*/ font-size: 11px; line-height: 14px; padding-bottom: 5px; } .music_reviews_module dt a, .noise_module dt a { background: none; } /* Gallery */ #left_col_650_header h3#more_photo_galleries { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/more_photo_galleries.gif) no-repeat top left; width: 305px; float: left; text-indent: -999em; } #left_col_650_header #header_right { width: 305px; float: left; text-align: right; font-size: 14px; font-weight: bold; color: #600; background: none; } h3#more_photo_galleries { background: transparent url("http://media.lasvegasweekly.com/assets/images/lvwtemp/text/more_photo_galleries.gif") no-repeat top left; } .gallery_table { width: 610px; border: 0px; border-collapse: collapse; } .gallery_table td { width: 120px; vertical-align: top; font-family: Arial, Helvetica, sans-serif; padding: 0px 32px 24px 0px; } .gallery_table dl {padding: 4px 0px 0px 0px;} .gallery_table dl dt {font-weight: normal;} .gallery_table dl dd {font-weight: bold; padding:0px;} /* Guides styles */ #left_col_435 { width: 410px; padding: 12px 13px 12px 12px; float: left; margin-right: 10px; background: #ede6d5 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/left_col_435_bg.gif) no-repeat bottom; } h3#featured_from_guides { text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/featured_from_guides.gif) no-repeat top left; height: 25px; } h3#featured_from_calendar { text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/featured_from_calendar.gif) no-repeat top left; height: 25px; } .guide_module {clear: both; padding-bottom: 16px;} .guide_module h3.event {color: #560E0E;} .guide_module h4 { font-size: 12px; font-weight: bold; text-transform: uppercase; color: #699; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/border_410.gif) no-repeat bottom left; padding-bottom: 6px; margin-bottom: 14px; font-family: Arial, Helvetica, sans-serif; } .guide_module dt { font-size: 20px; line-height: .8em; font-weight: bold; padding-bottom: 6px; clear: none; } .guide_module dt .smaller {font-size: 14px; line-height:14px; color: #000000;} .guide_module dd { font-family: Arial, Helvetica, sans-serif; padding-bottom: 8px; clear: none; } .guide_module dd.reviews { font-family: Georgia, "Times New Roman", Times, serif; color: #600; font-weight: bold; font-size: 14px; text-transform: uppercase; } .guide_module dd.more {font-weight: bold; text-transform: uppercase;} .guide_module img { float: right; padding: 0px 0px 14px 14px; } .eventImg { float:none; padding: 5px; } #eventDetailImg img{ float:none; padding: 5px; } dt.event { color: #560E0E; } ul.event{ margin-left: 1em; margin-top: .5em; padding:0; list-style-position: inside; } /* DJ of the Week */ #dj_week { background: #000 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/dj_week_bg.gif) no-repeat bottom; width: 205px; margin-bottom: 14px; color: #fff; } #dj_week h4 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/dj_week.gif) no-repeat top; text-indent: -999em; width: 205px; height: 54px; padding: 0px 0px 0px 5px; } #dj_week #dj_week_inner { width: 185px; padding: 0px 10px 10px 10px; } #dj_week p { font-size: 11px; line-height: 14px; } #dj_week dl {padding: 6px 0px 6px 0px;} #dj_week dt { height: 23px; padding: 0px; } #dj_week dd { height: 12px; padding: 0px; } #dj_week dt#dj_max {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/dj/dj_max.gif) no-repeat left;} #dj_week dd#rain {background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/dj/rain.gif) no-repeat left;} #dj_week #view_profile { text-indent: -999em; height: 11px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/view_profile.gif) no-repeat top left; } #dj_week #view_profile a {display: block; width: 73px; height: 11px; background: none;} #recent_user_reviews { width: 185px; padding: 10px 10px 0px 10px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/dark_wp_205.gif) no-repeat top; margin-bottom: 14px; } #recent_user_reviews h4 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/recent_user_reviews.gif) no-repeat top; text-indent: -999em; width: 185px; height: 50px; padding-bottom: 10px; } #recent_user_reviews dt {font-weight: normal; padding: 0px;} #recent_user_reviews dd {font-weight: bold; padding-bottom: 8px;} /* Tabs */ #tab_container { width: 650px; float: left; margin-bottom: 28px; } #tab_container #tab_top { width: 650px; float: left; } #tab_container #tab_bottom { clear: both; width: 630px; padding: 14px 10px 0px 10px; background: #efe9d9; } #tab_container #tab_bottom p { font-family: Arial, Helvetica, sans-serif; font-weight: bold; line-height: 18px; font-size: 16px; } /* Add gif to IE6 sheet */ .ui-tabs-hide {display: none;} .ui-tabs-nav {list-style: none;} #tab_top ul {list-style: none;} #tab_top li { height: 29px; float: left; /*margin-right: 6px;*/ } #tab_top li a, #tab_top li a:link, #tab_top li a:visited { display: block; height: 29px; text-indent: -999em; } #tab_container .ui-tabs-panel {padding: 0px 18px;} #tab_container .ui-tabs-loading em { padding: 0px 0px 0px 20px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/loading.gif) no-repeat 0 50%; } /* Guides Nav and Form */ #tab_container .secondary_search form .input {width: 280px;} .mootabs_title { height: 29px; list-style-image: none; list-style-type: none; } .mootabs_title li { background: transparent url(http://media.lasvegasweekly.com/assets/images/lvwtemp/tabs/tab_dark.png) no-repeat top right; cursor: pointer; float: left; font-family: Georgia,Lucida,Verdana,sans-serif; font-size: 0.9em; font-weight: bolder; height: 21px; margin: 0px; padding: 8px 16px 0px 8px; } .mootabs_title li.active { background: transparent url(http://media.lasvegasweekly.com/assets/images/lvwtemp/tabs/tab.png) no-repeat top right; } .mootabs_panel { background: #efe9d9; clear: both; overflow: visible; padding: 10px 10px 0px 10px; position: relative; text-align: left; width: 630px; } .mootabs_panel p { font-family: Arial, Helvetica, sans-serif; font-weight: bold; font-size: 16px; line-height: 18px; } .guides_nav a:hover {text-decoration: underline;} .guides_nav a, .guides_nav a:link, .guides_nav a:visited { padding: 0 5px 0 0; background: none; color: #699; font-size: 18px; font-weight: bold; } .guides_nav span { padding: 0 5px 0 0; font-size: 18px; font-weight: bold; } .mootabs_panel.active { display: block !important; } /* Best in Print inner page module */ #best_in_print_mod { width: 650px; height: 314px; margin-bottom: 8px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/best_in_print.gif) no-repeat top; position: relative; overflow: auto; } #best_in_print_mod .cover { width: 230px; height: 277px; position: absolute; top: 37px; left: 16px; z-index: 50; } #best_in_print_mod h3 { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/best_in_print2.gif) no-repeat; position: absolute; top: 18px; left: 12px; z-index: 40; text-indent: -999em; width: 220px; height: 30px; } #best_in_print_mod #datestamp { position: absolute; top: 22px; right: 22px; text-align: right; width: 250px; line-height: 20px; font-size: 14px; font-weight: bold; color: #fff; } #best_in_print_mod dl { position: absolute; top: 60px; left: 300px; width: 328px; } #best_in_print_mod dt {font-weight: bold; font-size: 16px; line-height: 19px; clear: both; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/border_dark_bg.gif) no-repeat top; padding-top: 12px;} #best_in_print_mod dt.first {background: none; padding: 0px;} #best_in_print_mod dd {font-size: 12px; line-height: 15px; padding-bottom: 8px;} #best_in_print_mod dt img {float: left; padding: 0px 12px 8px 0px;} /* Column : 430px */ #left_content_header h2#columns_h2 {background-image: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/columns.gif);} .toc_dl dt {font-size: 24px; line-height: 26px;} .toc_dl dd {font-size: 14px; font-weight: bold;} .toc_h4 {font-size: 14px; line-height: 16px;} #intersection_mod { background: #ede6d5 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/left_col_435_bg.gif) no-repeat bottom; width: 430px; margin-bottom: 14px; } #intersection_mod h2 { width: 430px; height: 72px; text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/the_intersection.gif) no-repeat top; margin-bottom: 10px; } #intersection_mod p.headline {padding: 0px 8px 0px 8px; font-weight: bold; font-size: 14px; line-height: 18px;} #intersection_mod p.blurb {padding: 0px 8px 3px 8px; font-weight: normal; font-size: 14px; line-height: 18px;} #intersection_mod span.comment_count, #nightlife_mod span.comment_count, #screen_mod span.comment_count, #taste_mod span.comment_count {padding: 0px 0px 0px 8px; font-weight: normal; font-size: 12px; line-height: 12px; font-style:italic;} #intersection_mod dl, #intersection_mod p, #nightlife_mod dl, #nightlife_mod p, #screen_mod dl, #screen_mod p, #taste_mod dl, #taste_mod p {padding: 0px 8px 14px 8px;} #intersection_mod dt, #nightlife_mod dt, #screen_mod dt, #taste_mod dt {font-size: 14px; line-height: 18px;} #intersection_mod dt img, #nightlife_mod dt img, #screen_mod dt img, #taste_mod dt img {padding-right: 6px; vertical-align:middle;} #intersection_mod dt a, #nightlife_mod dt a, #screen_mod dt a, #taste_mod dt a {background: none;} #intersection_mod p.more_link, #nightlife_mod p.more_link, #screen_mod p.more_link, #taste p.more_link {font-size: 12px;} #left_col_196 dl.small_12px dt {font-size: 12px; line-height: 14px;} #left_col_196 dl.small_12px dt a, #left_col_196 dl.small_12px dt a:link, #left_col_196 dl.small_12px dt a:visited { background: #d9cba7; } body#best_in_print_page #header {height: 178px;} body#best_in_print_page #header h1 { background: transparent url(http://media.lasvegasweekly.com/assets/images/lvwtemp/logo_best_in_print.png) no-repeat top left; height: 77px; width: 399px; top: 28px; } body#best_in_print_page #header h1 a { height: 77px; width: 399px; } /* Blog templates */ #blog_header {width: 610px;} #blog_header h2 { /*text-indent: -999em;*/ height: 29px; /* background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/daily_filter.gif) no-repeat top left;*/ margin-top: 8px; } /*#blog_header h2#leach_blog_h2 {background-image: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/leach_blog_h2.gif);}*/ #blog_header p { font-size: 11px; line-height: 13px; } #blog_header p.feedback { padding:10px 0px 0px 0px; } #blog_header a, #blog_header a, #blog_header a { color: #000; text-decoration: none; background: none; font-style: italic; } #blog_header a:hover {text-decoration: underline;} #blog_header dl {clear: both;} #blog_header dt { float: left; width: 125px; } #blog_header dd { float: left; width: 485px; } #blog_header #switcher_icons { float: right; text-align: right; width: 200px; } #blog_nav { width: 165px; float: left; padding-right: 15px; } #blog_nav .blog_module { background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/dark_wp.gif) repeat top; margin-bottom: 14px; } .blog_module dl, .blog_module ul { padding: 6px 10px 0px 10px; } .blog_module ul {list-style: none; padding-bottom: 8px;} .blog_module ul li {padding-bottom: 5px; font-weight: bold;} .blog_module dd { font-weight: bold; } .blog_module dd a, .blog_module li a { color: #7b391c; background: none; } #blog_nav h3 { width: 165px; height: 35px; text-indent: -999em; background: no-repeat top left; padding: 0px; } #blog_nav #most_popular_h3 {background-image: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/most_popular_h3.gif);} #blog_nav #recent_posts_h3 {background-image: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/recent_posts_h3.gif);} #blog_nav #archives_h3 {background-image: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/archives_h3.gif);} #blog_nav .ad_160 { width: 160px; padding-left: 3px; } #blog_content { width: 430px; float: left; } .blog_entry p { font-size: 14px; line-height: 20px; } .blog_entry .blog_details { line-height: 20px; font-size: 12px; background-color: #000; color: #fff; margin-bottom: 12px; padding: 0px; font-weight: bold; text-align: center; } .blog_details span {padding: 0px 6px;} .blog_entry h3 {font-size: 24px; padding-bottom:5px;} .blog_entry h3 a { background: none; } #left_col_650 #blog_content .comment_block { width: 430px; } /* end blog */ /* alerts */ .alerts dt {font-size:18px;} /* Sidebar Video Player */ .vid_module { width: 322px; height: 297px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/vid_module_bg.jpg) no-repeat; margin-bottom: 10px; position: relative; padding-top: 44px; padding-left: 4px; padding-right: 4px; } .vid_module h3 { width: 315px; height: 25px; position: absolute; top: 15px; left: 5px; text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/video_h3.gif) no-repeat; } .vid_module .vid_library_link { width: 79px; height: 11px; position: absolute; top: 16px; right: 22px; text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/video_library.gif) no-repeat; } .vid_module .vid_library_link a {display: block; width: 79px; height: 11px; background: none;} .vid_module .vid_player { top: 42px; left: 5px; } .vid_module p.caption { color: #fff; margin-top: 8px; } .vid_module .vid_scroll { position: absolute; top: 264px; left: 12px; } #cover a,#cover a:hover,#cover a:visited{ border:none; background:none; } #nightlife_mod { background: #ede6d5 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/left_col_435_bg.gif) no-repeat bottom; width: 430px; margin-bottom: 14px; } #nightlife_mod h2 { width: 430px; height: 72px; text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/headers/nightlife_430.gif) no-repeat top; margin-bottom: 10px; } #nightlife_mod p.headline {padding: 0px 8px 0px 8px; font-weight: bold; font-size: 14px; line-height: 18px;} #nightlife_mod p.blurb {padding: 0px 8px 3px 8px; font-weight: normal; font-size: 14px; line-height: 18px;} #nightlife_mod p.comment_count {padding: 0px 8px 8px 8px; font-weight: normal; font-size: 12px; line-height: 12px; font-style:italic;} #nightlife_mod p.more_link {font-size: 12px;} #taste_mod { background: #ede6d5 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/left_col_435_bg.gif) no-repeat bottom; width: 430px; margin-bottom: 14px; } #taste_mod h2 { width: 430px; height: 72px; text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/headers/taste_430.gif) no-repeat top; margin-bottom: 10px; } #taste_mod p.headline {padding: 0px 8px 0px 8px; font-weight: bold; font-size: 14px; line-height: 18px;} #taste_mod p.blurb {padding: 0px 8px 3px 8px; font-weight: normal; font-size: 14px; line-height: 18px;} #taste_mod p.comment_count {padding: 0px 8px 8px 8px; font-weight: normal; font-size: 12px; line-height: 12px; font-style:italic;} #taste_mod p.more_link {font-size: 12px;} #screen_mod { background: #ede6d5 url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/left_col_435_bg.gif) no-repeat bottom; width: 430px; margin-bottom: 14px; } #screen_mod h2 { width: 430px; height: 72px; text-indent: -999em; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/headers/screen_430.gif) no-repeat top; margin-bottom: 10px; } #screen_mod p.headline {padding: 0px 8px 0px 8px; font-weight: bold; font-size: 14px; line-height: 18px;} #screen_mod p.blurb {padding: 0px 8px 3px 8px; font-weight: normal; font-size: 14px; line-height: 18px;} #screen_mod p.comment_count {padding: 0px 8px 8px 8px; font-weight: normal; font-size: 12px; line-height: 12px; font-style:italic;} #screen_mod p.more_link {font-size: 12px;} ul.share { padding-bottom:8px; } ul.share li { margin-left: .8em; display: inline; } ul.share li img { margin-right: 4px; } ul.share li a { text-decoration: none; background:none; } ul.share li a:hover { text-decoration: none; } ul.share li strong { font-weight: normal; font-style: normal; } ul.share li a:hover strong { text-decoration: underline; } div.article div#shareLinks { /* display: block; */ /*text-align: right;*/ } div.article_full div#shareLinks { /* display: block; */ text-align: left; } .hidden { display:none; } .page_nav a.active{background:#F3EEE3;} /* INLINE STYLES */ /* photo enlargable */ div.inline.inline-photo.inline-left{ width: 180px; float: left; margin: 5px; clear:left; text-align:left; } div.inline.inline-photo.inline-right{ width: 180px; float: right; padding: 5px; clear:right; text-align:right; } div.inline.inline-photo.inline-left div.inline-content p.caption, div.inline.inline-photo.inline-left div.inline-content p.photo-byline{ font-size: 11px; padding: 3px 0px 0px 0px; text-align:left; } .blog_entry p.caption { font-size: 11px; padding: 3px 0px 0px 0px; } div.inline.inline-photo.inline-right div.inline-content p.caption, div.inline.inline-photo.inline-right div.inline-content p.photo-byline{ font-size: 11px; padding: 3px 0px 0px 0px; text-align:right; } div.inline-content p.photo-byline{ font-size: 11px; padding: 3px 0px 0px 0px; } /*inline gallery */ div.inline.inline-gallery.inline-left{ float: left; padding: 5px 10px 5px 0px; } div.inline.inline-gallery.inline-left h4.highlight{ display:inline; width:auto; } div.inline.inline-gallery.inline-left div.inline-content h5{ display:inline; width:auto !important; } div.inline.inline-gallery.inline-right{ float: right; padding: 5px 0px 5px 10px; } div.inline.inline-gallery.inline-right h4.highlight{ display:inline; width:auto; } div.inline.inline-gallery.inline-right div.inline-content h5{ display:inline; width:auto !important; } /* inline Text */ div.inline.text-inline.related_narrow.inline-left{ width: 165px; clear:left; float:left; margin: 3px 6px 6px 0px; } div.inline.text-inline.related_narrow.inline-right{ width: 165px; clear:right; float:right; margin: 3px 6px 6px 0px; } .inline-left { clear: left; } .inline-right { clear: right; } /* inline video */ div.inline.inline-left.inline-video{ width:322px; float:left; clear:left; margin: 3px 6px 6px 0px; } /* Related box now 30px wider and includes p, ul styles */ .related_narrow { width: 195px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/related_module_bg.gif) no-repeat top left; float: none; margin: 0; } .left_float { float: left; margin: 0 10px 10px 0; clear: left; } .inline-left { float: left; margin: 0 10px 10px 0; } .inline-right { float: right; margin: 0 10px 10px 10px; clear: right; } .right_float { float: right; margin: 0 0 10px 10px; } /*end mods by sean hellwig */ .related_narrow h4 { height: 26px; text-indent: -999em; margin-bottom: 4px; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/text/related.gif) no-repeat top left; } .related_narrow ul { padding: 0 6px; list-style: none; } .related_narrow li { font-size: 12px; line-height: 15px; font-weight: bold; padding-bottom: 10px; } /* Added a para entry just in case */ .related_narrow p { font-size: 12px; line-height: 15px; font-weight: bold; padding-bottom: 10px; } /* @group Photogalleries */ div#gallery_player { background-color: #000; width: 100%; display: block; overflow: hidden; margin-bottom: 1em; } div#gallery-block { width: 700px; float: left; padding: 8px; } div#gallery_player h3.headline { color: #fff; margin-bottom: .25em; padding: 0px; } div#gallery_player div#recent_galleries { width: 276px; float: right; padding-top: 8px; } div#gallery_player div#recent_galleries h3 { color: #fff; font-size: 1em; padding-bottom: .3em; } div#gallery_player div#recent_galleries h3 strong { color: #95330c; } div#gallery_player div#recent_galleries ul li { list-style-type: none; background-color: #333; padding: 3px; font-weight: bold; font-size: .9em; width: 100%; display: block; overflow: hidden; line-height: 1.2; margin-bottom: 3px; } div#gallery_player div#recent_galleries ul li:hover { background-color: #666; } div#gallery_player div#recent_galleries ul li span.date { display: block; font-weight: normal; font-style: normal; color: #fbcc69; font-size: .8em; } div#gallery_player div#recent_galleries ul li img { margin-right: 4px; float: left; border: 1px solid #999; } div#gallery_player div#recent_galleries ul li a { color: #fff; background-color: transparent; display: block; } div#gallery_player div#recent_galleries ul li a:hover { text-decoration: none; } div.gallery_table ul { width: 100%; display: block; overflow: hidden; clear: both; padding-bottom: 1em; padding-top: 1em; } div.gallery_table ul li { list-style-type: none; width: 117px; height: 11.5em; float: left; margin-right: 35px; padding-bottom: 8px; } ul.paginator.bottom { margin-bottom: .5em; } ul.paginator.bottom li { list-style-type: none; display: inline; font-weight: bold; } ul.paginator.bottom li a { padding: 4px; } ul.gallery_nav_thumbs { display: block; overflow: hidden; width: 110px; } ul.gallery_nav_thumbs li { list-style-type: none; position: relative; float: right; margin-left: 5px; } ul.gallery_nav_thumbs li img { padding: 1px; border: 1px solid #999; } ul.gallery_nav_thumbs li a:hover img { padding: 0px; border-width: 2px; border-color: #000; } ul.gallery_nav_thumbs li span.label { position: absolute; background-color: #333; width: 140px; color: #fff; padding: 5px; top: 2px; left: 2px; text-transform: uppercase; font-size: 1em; font-weight: bold; } div#gallery_detail h2 { font-size: 1.5em; margin-bottom: .3em; } div#gallery_detail { clear: both; width: 100%; display: block; overflow: hidden; padding-bottom: 1em; } div#gallery_detail div.photo img { border: 1px solid #333; margin-bottom: 4px; } div#gallery_detail ul.paginator { margin-bottom: .5em; display: block; width: 100%; list-style-type: none; overflow: hidden; } div#gallery_detail ul.paginator li.next { float: right; } div#gallery_detail div.photo { width: 500px; float: left; text-align: center; clear: both; } ul.gallery_nav_thumbs li.next span.label { text-align: right; } ul.gallery_nav_thumbs li a:hover span.label { background-color: #000; } div#gallery_photo_meta p.credit { text-align: right; margin-top: 3px; font-style: italic; } div#gallery_photo_meta p.caption { text-align: right; } /* @end */ #searchForm { background: #e1d7bf; padding:5px; } #searchForm h3 { color:#560e0e; } /* Tables with alternating rows */ .generic_w_rows { padding-bottom: 14px; border: 0; border-collapse: collapse; width: 100%; } .generic_w_rows th, .generic_w_rows td { font-size: 11px; font-family: Arial, Helvetica, sans-serif; padding: 3px 4px; font-weight: normal; border: 1px solid #d9cba7; vertical-align: middle; } .generic_w_rows th { font-weight: bold; font-size: 13px; text-align: left; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/dark_wp.gif) repeat; font-family: Georgia, "Times New Roman", Times, serif; } .generic_w_rows td a, .generic_w_rows td a:link, .generic_w_rows td a:visited { background: none; text-decoration: underline; } .generic_w_rows td a:hover {text-decoration: none;} .generic_w_rows tr.alt_row { background-color: #e1d7bf;} .comments_form input { width: auto; border: 0; padding: 0; } .comments_form input.input { padding: 1px 2px 1px 2px; width: 140px; font-size: 12px; font-family: Arial, Helvetica, sans-serif; border: 1px solid #ccc; color: #333; } #loginform table td, #loginform table th { font-size: 12px; } #loginform table.grid_table td, #loginform table.grid_table th { text-align: center; } #loginform table td.first { text-align: left; font-weight: bold; } div#multimediaContainer p.comments { text-align: right; font-style: italic; margin-right: 15px; } div#multimediaContainer p.comments a { padding: 4px; } div#multimediaContainer { background-color: #000; margin-bottom: 1em; padding-bottom: .3em; width: 100%; display: block; overflow: hidden; } div#multimediaContainer h2.headline { font-size: 1.8em; margin-bottom: .2em; color: #fff; background: url(http://media.lasvegasweekly.com/assets/images/lvwtemp/bg/1000_video.gif) no-repeat; padding-top: 12px; padding-left: 17px; } div#multimediaContainer h2.headline a { background-color: black; color: #fff; } div#multimediaContainer div#video_player { text-align: center; margin-bottom: 1em; } div#multimediaMeta p.byline { font-weight: bold; padding-bottom: .3em; } div#multimediaMeta p.bypubdate { font-style: italic; } div#multimediaMeta p.VideoCaption { font-size: .9em; line-height: 1.4; } div#multimediaMeta p.download { text-align: right; font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif; font-weight: bold; } form#advanced-search-form ul#limit_options li { list-style-type: none; display: inline; margin-right: 1em; } /* @group rssTOC */ div#rssTOC h2 { font-weight: bold; text-transform: uppercase; margin-bottom: .9em; font-size: .95em; border-top: 4px solid #999; padding-top: .2em; margin-top: 1.5em; } div#rssTOC table { width: 100%; margin-bottom: 2em; } div#rssTOC table tr.header { text-transform: uppercase; font: bold .8em "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif; color: #666; border-bottom: 1px solid #333; } div#rssTOC table tr.header th { padding-bottom: 1px; } div#rssTOC table tr.header th.feed { width: 200px; } div#rssTOC table tr.entry { color: #333; border-bottom: 1px solid #ccc; font-size: .8em; font-style: italic; } div#rssTOC table tr.entry td { padding-top: 2px; padding-bottom: 1px; } /* @end */ div.staffStoryList dt.headline { font-size: 1.3em; margin-bottom: .4em; } div.staffStoryList dd.subhead { margin-bottom: .2em; font-size: 1.1em; padding-bottom: .2em; font-weight: bold; font-style: italic; } div.staffStoryList dd.date { padding-bottom: .5em; } div.staffStoryList dd.tease { margin-bottom: 1em; border-bottom: 1px solid #c99968; }_Khttp://media.lasvegasweekly.com/assets/js/mootools-beta-1.2b2-compatible.jsO{bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver" &,-345QRSTUVWXYZ[\]^_`abcdefgklU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1!  '()$+WNS.base[NS.relative_Khttp://media.lasvegasweekly.com/assets/js/mootools-beta-1.2b2-compatible.js./01X$classesZ$classname12UNSURLXNSObject#A) 6789EWNS.keysZNS.objects:;<=>?@ABCD FGHIJKLMNOP]Last-ModifiedWExpires]Cache-Control]Accept-Ranges_Content-Encoding\Content-TypeVServer^Content-LengthTDateTEtagTVary_Thu, 29 May 2008 01:27:08 GMT_Wed, 04 Jun 2008 19:40:07 GMT\max-age=7200UbytesTgzip_text/javascriptTSpudU33020_Wed, 04 Jun 2008 17:40:07 GMT\"1191903983"_Accept-Encoding./hiij2_NSMutableDictionary\NSDictionary./mnno2_NSHTTPURLResponse]NSURLResponse)27:PRd  ^clwz &9FM\afk $(>KPUYmp{_text/javascriptO/* Script: Core.js MooTools - My Object Oriented JavaScript Tools. License: MIT-style license. Copyright: Copyright (c) 2006-2007 Valerio Proietti, Code & Documentation: The MooTools production team . Inspiration: - Class implementation inspired by Base.js Copyright (c) 2006 Dean Edwards, GNU Lesser General Public License - Some functionality inspired by Prototype.js Copyright (c) 2005-2007 Sam Stephenson, MIT License */ var MooTools = { 'version': '1.2dev', 'build': '1.2b2' }; var Native = function(options){ options = options || {}; var afterImplement = options.afterImplement || function(){}; var generics = options.generics; generics = (generics !== false); var legacy = options.legacy; var initialize = options.initialize; var protect = options.protect; var name = options.name; var object = initialize || legacy; object.constructor = Native; object.$family = {name: 'native'}; if (legacy && initialize) object.prototype = legacy.prototype; object.prototype.constructor = object; if (name){ var family = name.toLowerCase(); object.prototype.$family = {name: family}; Native.typize(object, family); } var add = function(obj, name, method, force){ if (!protect || force || !obj.prototype[name]) obj.prototype[name] = method; if (generics) Native.genericize(obj, name, protect); afterImplement.call(obj, name, method); return obj; }; object.implement = function(a1, a2, a3){ if (typeof a1 == 'string') return add(this, a1, a2, a3); for (var p in a1) add(this, p, a1[p], a2); return this; }; object.alias = function(existing, property, force){ existing = this.prototype[existing]; if (existing) add(this, property, existing, force); return this; }; return object; }; Native.implement = function(objects, properties){ for (var i = 0, l = objects.length; i < l; i++) objects[i].implement(properties); }; Native.genericize = function(object, property, check){ if ((!check || !object[property]) && typeof object.prototype[property] == 'function') object[property] = function(){ var args = Array.prototype.slice.call(arguments); return object.prototype[property].apply(args.shift(), args); }; }; Native.typize = function(object, family){ if (!object.type) object.type = function(item){ return ($type(item) === family); }; }; (function(objects){ for (var name in objects) Native.typize(objects[name], name.toLowerCase()); })({'Boolean': Boolean, 'Native': Native, 'Object': Object}); (function(objects){ for (var name in objects) new Native({name: name, initialize: objects[name], protect: true}); })({'String': String, 'Function': Function, 'Number': Number, 'Array': Array, 'RegExp': RegExp, 'Date': Date}); (function(object, methods){ for (var i = 0, l = methods.length; i < l; i++) Native.genericize(object, methods[i], true); return arguments.callee; }) (Array, ['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift', 'concat', 'join', 'slice', 'toString', 'valueOf', 'indexOf', 'lastIndexOf']) (String, ['charAt', 'charCodeAt', 'concat', 'indexOf', 'lastIndexOf', 'match', 'replace', 'search', 'slice', 'split', 'substr', 'substring', 'toLowerCase', 'toUpperCase', 'valueOf']); function $chk(obj){ return !!(obj || obj === 0); }; function $clear(timer){ clearTimeout(timer); clearInterval(timer); return null; }; function $defined(obj){ return (obj != undefined); }; function $empty(){}; function $arguments(i){ return function(){ return arguments[i]; }; }; function $lambda(value){ return (typeof value == 'function') ? value : function(){ return value; }; }; function $extend(original, extended){ for (var key in (extended || {})) original[key] = extended[key]; return original; }; function $unlink(object){ var unlinked = null; switch ($type(object)){ case 'object': unlinked = {}; for (var p in object) unlinked[p] = $unlink(object[p]); break; case 'array': unlinked = []; for (var i = 0, l = object.length; i < l; i++) unlinked[i] = $unlink(object[i]); break; default: return object; } return unlinked; }; function $merge(){ var mix = {}; for (var i = 0, l = arguments.length; i < l; i++){ var object = arguments[i]; if ($type(object) != 'object') continue; for (var key in object){ var op = object[key], mp = mix[key]; mix[key] = (mp && $type(op) == 'object' && $type(mp) == 'object') ? $merge(mp, op) : $unlink(op); } } return mix; }; function $pick(){ for (var i = 0, l = arguments.length; i < l; i++){ if ($defined(arguments[i])) return arguments[i]; } return null; }; function $random(min, max){ return Math.floor(Math.random() * (max - min + 1) + min); }; function $splat(obj){ var type = $type(obj); return (type) ? ((type != 'array' && type != 'arguments') ? [obj] : obj) : []; }; var $time = Date.now || function(){ return new Date().getTime(); }; function $try(fn, bind, args){ try { return fn.apply(bind, $splat(args)); } catch(e){ return false; } }; function $type(obj){ if (obj == undefined) return false; if (obj.$family) return (obj.$family.name == 'number' && !isFinite(obj)) ? false : obj.$family.name; if (obj.nodeName){ switch (obj.nodeType){ case 1: return 'element'; case 3: return (/\S/).test(obj.nodeValue) ? 'textnode' : 'whitespace'; } } else if (typeof obj.length == 'number'){ if (obj.callee) return 'arguments'; else if (obj.item) return 'collection'; } return typeof obj; }; var Hash = new Native({ name: 'Hash', initialize: function(object){ if ($type(object) == 'hash') object = $unlink(object.getClean()); for (var key in object){ if (!this[key]) this[key] = object[key]; } return this; } }); Hash.implement({ getLength: function(){ var length = 0; for (var key in this){ if (this.hasOwnProperty(key)) length++; } return length; }, forEach: function(fn, bind){ for (var key in this){ if (this.hasOwnProperty(key)) fn.call(bind, this[key], key, this); } }, getClean: function(){ var clean = {}; for (var key in this){ if (this.hasOwnProperty(key)) clean[key] = this[key]; } return clean; } }); Hash.alias('forEach', 'each'); function $H(object){ return new Hash(object); }; Array.implement({ forEach: function(fn, bind){ for (var i = 0, l = this.length; i < l; i++) fn.call(bind, this[i], i, this); } }); Array.alias('forEach', 'each'); function $A(iterable){ if ($type(iterable) == 'collection'){ var array = []; for (var i = 0, l = iterable.length; i < l; i++) array[i] = iterable[i]; return array; } return Array.prototype.slice.call(iterable); }; function $each(iterable, fn, bind){ var type = $type(iterable); ((type == 'arguments' || type == 'collection' || type == 'array') ? Array : Hash).each(iterable, fn, bind); }; $A = function(iterable, start, length){ if (Browser.Engine.trident && $type(iterable) == 'collection'){ start = start || 0; if (start < 0) start = iterable.length + start; length = length || (iterable.length - start); var array = []; for (var i = 0; i < length; i++) array[i] = iterable[start++]; return array; } start = (start || 0) + ((start < 0) ? iterable.length : 0); var end = ((!$chk(length)) ? iterable.length : length) + start; return Array.prototype.slice.call(iterable, start, end); }; (function(){ var natives = [Array, Function, String, RegExp, Number]; for (var i = 0, l = natives.length; i < l; i++) natives[i].extend = natives[i].implement; })(); /* Script: Browser.js The Browser Core. Contains Browser initialization, Window and Document, and the Browser Hash. License: MIT-style license. */ var Browser = new Hash({ Engine: {name: 'unknown', version: ''}, Platform: {name: (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase()}, Features: {xpath: !!(document.evaluate), air: !!(window.runtime)}, Plugins: {} }); if (window.opera) Browser.Engine = {name: 'presto', version: (document.getElementsByClassName) ? 950 : 925}; else if (window.ActiveXObject) Browser.Engine = {name: 'trident', version: (window.XMLHttpRequest) ? 5 : 4}; else if (!navigator.taintEnabled) Browser.Engine = {name: 'webkit', version: (Browser.Features.xpath) ? 420 : 419}; else if (document.getBoxObjectFor != null) Browser.Engine = {name: 'gecko', version: (document.getElementsByClassName) ? 19 : 18}; Browser.Engine[Browser.Engine.name] = Browser.Engine[Browser.Engine.name + Browser.Engine.version] = true; if (window.orientation != undefined) Browser.Platform.name = 'ipod'; Browser.Platform[Browser.Platform.name] = true; Browser.Request = function(){ return $try(function(){ return new XMLHttpRequest(); }, function(){ return new ActiveXObject('MSXML2.XMLHTTP'); }); }; Browser.Features.xhr = !!(Browser.Request()); Browser.Plugins.Flash = (function(){ var version = ($try(function(){ return navigator.plugins['Shockwave Flash'].description; }, function(){ return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version'); }) || '0 r0').match(/\d+/g); return {version: parseInt(version[0] || 0 + '.' + version[1] || 0), build: parseInt(version[2] || 0)}; })(); function $exec(text){ if (!text) return text; if (window.execScript){ window.execScript(text); } else { var script = document.createElement('script'); script.setAttribute('type', 'text/javascript'); script.text = text; document.head.appendChild(script); document.head.removeChild(script); } return text; }; Native.UID = 1; var $uid = (Browser.Engine.trident) ? function(item){ return (item.uid || (item.uid = [Native.UID++]))[0]; } : function(item){ return item.uid || (item.uid = Native.UID++); }; var Window = new Native({ name: 'Window', legacy: (Browser.Engine.trident) ? null: window.Window, initialize: function(win){ $uid(win); if (!win.Element){ win.Element = $empty; if (Browser.Engine.webkit) win.document.createElement("iframe"); //fixes safari 2 win.Element.prototype = (Browser.Engine.webkit) ? window["[[DOMElement.prototype]]"] : {}; } return $extend(win, Window.Prototype); }, afterImplement: function(property, value){ window[property] = Window.Prototype[property] = value; } }); Window.Prototype = {$family: {name: 'window'}}; new Window(window); var Document = new Native({ name: 'Document', legacy: (Browser.Engine.trident) ? null: window.Document, initialize: function(doc){ $uid(doc); doc.head = doc.getElementsByTagName('head')[0]; doc.html = doc.getElementsByTagName('html')[0]; doc.window = doc.defaultView || doc.parentWindow; if (Browser.Engine.trident4) $try(function(){ doc.execCommand("BackgroundImageCache", false, true); }); return $extend(doc, Document.Prototype); }, afterImplement: function(property, value){ document[property] = Document.Prototype[property] = value; } }); Document.Prototype = {$family: {name: 'document'}}; new Document(document); /* Script: Array.js Contains Array Prototypes like copy, each, contains, and remove. License: MIT-style license. */ Array.implement({ every: function(fn, bind){ for (var i = 0, l = this.length; i < l; i++){ if (!fn.call(bind, this[i], i, this)) return false; } return true; }, filter: function(fn, bind){ var results = []; for (var i = 0, l = this.length; i < l; i++){ if (fn.call(bind, this[i], i, this)) results.push(this[i]); } return results; }, clean: function() { return this.filter($arguments(0)); }, indexOf: function(item, from){ var len = this.length; for (var i = (from < 0) ? Math.max(0, len + from) : from || 0; i < len; i++){ if (this[i] === item) return i; } return -1; }, map: function(fn, bind){ var results = []; for (var i = 0, l = this.length; i < l; i++) results[i] = fn.call(bind, this[i], i, this); return results; }, some: function(fn, bind){ for (var i = 0, l = this.length; i < l; i++){ if (fn.call(bind, this[i], i, this)) return true; } return false; }, associate: function(keys){ var obj = {}, length = Math.min(this.length, keys.length); for (var i = 0; i < length; i++) obj[keys[i]] = this[i]; return obj; }, link: function(object){ var result = {}; for (var i = 0, l = this.length; i < l; i++){ for (var key in object){ if (object[key](this[i])){ result[key] = this[i]; delete object[key]; break; } } } return result; }, contains: function(item, from){ return this.indexOf(item, from) != -1; }, extend: function(array){ for (var i = 0, j = array.length; i < j; i++) this.push(array[i]); return this; }, getLast: function(){ return (this.length) ? this[this.length - 1] : null; }, getRandom: function(){ return (this.length) ? this[$random(0, this.length - 1)] : null; }, include: function(item){ if (!this.contains(item)) this.push(item); return this; }, merge: function(array){ for (var i = 0, l = array.length; i < l; i++) this.include(array[i]); return this; }, remove: function(item){ for (var i = this.length; i--; i){ if (this[i] === item) this.splice(i, 1); } return this; }, empty: function(){ this.length = 0; return this; }, flatten: function(){ var array = []; for (var i = 0, l = this.length; i < l; i++){ var type = $type(this[i]); if (!type) continue; array = array.concat((type == 'array' || type == 'collection' || type == 'arguments') ? Array.flatten(this[i]) : this[i]); } return array; }, hexToRgb: function(array){ if (this.length != 3) return null; var rgb = this.map(function(value){ if (value.length == 1) value += value; return value.toInt(16); }); return (array) ? rgb : 'rgb(' + rgb + ')'; }, rgbToHex: function(array){ if (this.length < 3) return null; if (this.length == 4 && this[3] == 0 && !array) return 'transparent'; var hex = []; for (var i = 0; i < 3; i++){ var bit = (this[i] - 0).toString(16); hex.push((bit.length == 1) ? '0' + bit : bit); } return (array) ? hex : '#' + hex.join(''); } }); Array.implement({ copy: function(start, length){ return $A(this, start, length); } }); /* Script: Function.js Contains Function Prototypes like create, bind, pass, and delay. License: MIT-style license. */ Function.implement({ extend: function(properties){ for (var property in properties) this[property] = properties[property]; return this; }, create: function(options){ var self = this; options = options || {}; return function(event){ var args = options.arguments; args = $defined(args) ? $splat(args) : Array.slice(arguments, (options.event) ? 1 : 0); if (options.event) args = [event || window.event].extend(args); var returns = function(){ return self.apply(options.bind || null, args); }; if (options.delay) return setTimeout(returns, options.delay); if (options.periodical) return setInterval(returns, options.periodical); if (options.attempt) return $try(returns); return returns(); }; }, pass: function(args, bind){ return this.create({'arguments': args, 'bind': bind}); }, attempt: function(args, bind){ return this.create({'arguments': args, 'bind': bind, 'attempt': true})(); }, bind: function(bind, args){ return this.create({'bind': bind, 'arguments': args}); }, bindWithEvent: function(bind, args){ return this.create({'bind': bind, 'event': true, 'arguments': args}); }, delay: function(delay, bind, args){ return this.create({'delay': delay, 'bind': bind, 'arguments': args})(); }, periodical: function(interval, bind, args){ return this.create({'periodical': interval, 'bind': bind, 'arguments': args})(); }, run: function(args, bind){ return this.apply(bind, $splat(args)); } }); Function.extend({ bindAsEventListener: function(bind, args){ return this.create({'bind': bind, 'event': true, 'arguments': args}); } }); Function.empty = $empty; /* Script: Number.js Contains Number Prototypes like limit, round, times, and ceil. License: MIT-style license. */ Number.implement({ limit: function(min, max){ return Math.min(max, Math.max(min, this)); }, round: function(precision){ precision = Math.pow(10, precision || 0); return Math.round(this * precision) / precision; }, times: function(fn, bind){ for (var i = 0; i < this; i++) fn.call(bind, i, this); }, toFloat: function(){ return parseFloat(this); }, toInt: function(base){ return parseInt(this, base || 10); } }); Number.alias('times', 'each'); (function(math){ var methods = {}; math.each(function(name){ if (!Number[name]) methods[name] = function(){ return Math[name].apply(null, [this].concat($A(arguments))); }; }); Number.implement(methods); })(['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor', 'log', 'max', 'min', 'pow', 'sin', 'sqrt', 'tan']); /* Script: String.js Contains String Prototypes like camelCase, capitalize, test, and toInt. License: MIT-style license. */ String.implement({ test: function(regex, params){ return ((typeof regex == 'string') ? new RegExp(regex, params) : regex).test(this); }, contains: function(string, separator){ return (separator) ? (separator + this + separator).indexOf(separator + string + separator) > -1 : this.indexOf(string) > -1; }, trim: function(){ return this.replace(/^\s+|\s+$/g, ''); }, clean: function(){ return this.replace(/\s+/g, ' ').trim(); }, camelCase: function(){ return this.replace(/-\D/g, function(match){ return match.charAt(1).toUpperCase(); }); }, hyphenate: function(){ return this.replace(/[A-Z]/g, function(match){ return ('-' + match.charAt(0).toLowerCase()); }); }, capitalize: function(){ return this.replace(/\b[a-z]/g, function(match){ return match.toUpperCase(); }); }, escapeRegExp: function(){ return this.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1'); }, toInt: function(base){ return parseInt(this, base || 10); }, toFloat: function(){ return parseFloat(this); }, hexToRgb: function(array){ var hex = this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/); return (hex) ? hex.slice(1).hexToRgb(array) : null; }, rgbToHex: function(array){ var rgb = this.match(/\d{1,3}/g); return (rgb) ? rgb.rgbToHex(array) : null; }, stripScripts: function(option){ var scripts = ''; var text = this.replace(/]*>([\s\S]*?)<\/script>/gi, function(){ scripts += arguments[1] + '\n'; return ''; }); if (option === true) $exec(scripts); else if ($type(option) == 'function') option(scripts, text); return text; }, substitute: function(object, regexp){ return this.replace(regexp || (/\\?\{([^}]+)\}/g), function(match, name){ if (match.charAt(0) == '\\') return match.slice(1); return (object[name] != undefined) ? object[name] : ''; }); } }); /* Script: Hash.js Contains Hash Prototypes. Provides a means for overcoming the JavaScript practical impossibility of extending native Objects. License: MIT-style license. */ Hash.implement({ has: Object.prototype.hasOwnProperty, keyOf: function(value){ for (var key in this){ if (this.hasOwnProperty(key) && this[key] === value) return key; } return null; }, hasValue: function(value){ return (Hash.keyOf(this, value) !== null); }, extend: function(properties){ Hash.each(properties, function(value, key){ Hash.set(this, key, value); }, this); return this; }, combine: function(properties){ Hash.each(properties, function(value, key){ Hash.include(this, key, value); }, this); return this; }, erase: function(key){ if (this.hasOwnProperty(key)) delete this[key]; return this; }, get: function(key){ return (this.hasOwnProperty(key)) ? this[key] : null; }, set: function(key, value){ if (!this[key] || this.hasOwnProperty(key)) this[key] = value; return this; }, empty: function(){ Hash.each(this, function(value, key){ delete this[key]; }, this); return this; }, include: function(key, value){ var k = this[key]; if (k == undefined) this[key] = value; return this; }, map: function(fn, bind){ var results = new Hash; Hash.each(this, function(value, key){ results.set(key, fn.call(bind, value, key, this)); }, this); return results; }, filter: function(fn, bind){ var results = new Hash; Hash.each(this, function(value, key){ if (fn.call(bind, value, key, this)) results.set(key, value); }, this); return results; }, every: function(fn, bind){ for (var key in this){ if (this.hasOwnProperty(key) && !fn.call(bind, this[key], key)) return false; } return true; }, some: function(fn, bind){ for (var key in this){ if (this.hasOwnProperty(key) && fn.call(bind, this[key], key)) return true; } return false; }, getKeys: function(){ var keys = []; Hash.each(this, function(value, key){ keys.push(key); }); return keys; }, getValues: function(){ var values = []; Hash.each(this, function(value){ values.push(value); }); return values; }, toQueryString: function(base){ var queryString = []; Hash.each(this, function(value, key){ if (base) key = base + '[' + key + ']'; var result; switch ($type(value)){ case 'object': result = Hash.toQueryString(value, key); break; case 'array': var qs = {}; value.each(function(val, i){ qs[i] = val; }); result = Hash.toQueryString(qs, key); break; default: result = key + '=' + encodeURIComponent(value); } if (value != undefined) queryString.push(result); }); return queryString.join('&'); } }); Hash.alias({keyOf: 'indexOf', hasValue: 'contains'}); /* Script: Event.js Contains the Event Native, to make the event object completely crossbrowser. License: MIT-style license. */ var Event = new Native({ name: 'Event', initialize: function(event, win){ win = win || window; event = event || win.event; if (event.$extended) return event; this.$extended = true; var type = event.type; var target = event.target || event.srcElement; while (target && target.nodeType == 3) target = target.parentNode; if (type.match(/DOMMouseScroll|mousewheel/)){ var wheel = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3; } else if (type.test(/key/)){ var code = event.which || event.keyCode; var key = Event.Keys.keyOf(code); if (type == 'keydown'){ var fKey = code - 111; if (fKey > 0 && fKey < 13) key = 'f' + fKey; } key = key || String.fromCharCode(code).toLowerCase(); } else if (type.match(/(click|mouse|menu)/i)){ var page = { x: event.pageX || event.clientX + win.document.documentElement.scrollLeft, y: event.pageY || event.clientY + win.document.documentElement.scrollTop }; var client = { x: event.pageX ? event.pageX - win.pageXOffset : event.clientX, y: event.pageY ? event.pageY - win.pageYOffset : event.clientY }; var rightClick = (event.which == 3) || (event.button == 2); var related = null; if (type.match(/over|out/)){ switch (type){ case 'mouseover': related = event.relatedTarget || event.fromElement; break; case 'mouseout': related = event.relatedTarget || event.toElement; } if ((function(){ while (related && related.nodeType == 3) related = related.parentNode; }).create({attempt: Browser.Engine.gecko})() === false) related = false; } } return $extend(this, { event: event, type: type, page: page, client: client, rightClick: rightClick, wheel: wheel, relatedTarget: related, target: target, code: code, key: key, shift: event.shiftKey, control: event.ctrlKey, alt: event.altKey, meta: event.metaKey }); } }); Event.Keys = new Hash({ 'enter': 13, 'up': 38, 'down': 40, 'left': 37, 'right': 39, 'esc': 27, 'space': 32, 'backspace': 8, 'tab': 9, 'delete': 46 }); Event.implement({ stop: function(){ return this.stopPropagation().preventDefault(); }, stopPropagation: function(){ if (this.event.stopPropagation) this.event.stopPropagation(); else this.event.cancelBubble = true; return this; }, preventDefault: function(){ if (this.event.preventDefault) this.event.preventDefault(); else this.event.returnValue = false; return this; } }); /* Script: Class.js Contains the Class Function for easily creating, extending, and implementing reusable Classes. License: MIT-style license. */ var Class = new Native({ name: 'Class', initialize: function(properties){ properties = properties || {}; var klass = function(empty){ for (var key in this) this[key] = $unlink(this[key]); for (var mutator in Class.Mutators){ if (!this[mutator]) continue; Class.Mutators[mutator](this, this[mutator]); delete this[mutator]; } this.constructor = klass; if (empty === $empty) return this; var self = (this.initialize) ? this.initialize.apply(this, arguments) : this; if (this.options && this.options.initialize) this.options.initialize.call(this); return self; }; $extend(klass, this); klass.constructor = Class; klass.prototype = properties; return klass; } }); Class.implement({ implement: function(){ Class.Mutators.Implements(this.prototype, Array.slice(arguments)); return this; } }); Class.Mutators = {}; Class.Mutators.Implements = function(self, klasses){ $splat(klasses).each(function(klass){ $extend(self, ($type(klass) == 'class') ? new klass($empty) : klass); }); }; Class.Mutators.Extends = function(self, klass){ var instance = new klass($empty); delete instance.parent; delete instance.parentOf; for (var key in instance){ var current = self[key], previous = instance[key]; if (current == undefined){ self[key] = previous; continue; } var ctype = $type(current), ptype = $type(previous); if (ctype != ptype) continue; switch (ctype){ case 'function': // opera does not support function.caller, so we replace the function code with brute force. Not pretty, but its just for opera. // if future opera versions will support function.caller, this code wont be executed anymore. // this code will be only executed if the current browser does not support function.caller (only opera). // there is also a fix for an opera bug where in the function string, parentheses around numbers are ignored, and an error is thrown. if (!arguments.callee.caller) self[key] = eval('(' + String(current).replace(/\bthis\.parent\(\s*(\))?/g, function(full, close){ return 'arguments.callee._parent_.call(this' + (close || ', '); }).replace(/(\d+)\.([A-Za-z_])/g, '($1).$2') + ')'); // end "opera" code self[key]._parent_ = previous; break; case 'object': self[key] = $merge(previous, current); } } self.parent = function(){ return arguments.callee.caller._parent_.apply(this, arguments); }; self.parentOf = function(descendant){ return descendant._parent_.apply(this, Array.slice(arguments, 1)); }; }; /* Script: Class.Extras.js Contains Utility Classes that can be implemented into your own Classes to ease the execution of many common tasks. License: MIT-style license. */ var Chain = new Class({ chain: function(){ this.$chain = (this.$chain || []).extend(arguments); return this; }, callChain: function(){ if (this.$chain && this.$chain.length) this.$chain.shift().apply(this, arguments); return this; }, clearChain: function(){ if (this.$chain) this.$chain.empty(); return this; } }); var Events = new Class({ addEvent: function(type, fn, internal){ if (fn != $empty){ this.$events = this.$events || {}; this.$events[type] = this.$events[type] || []; this.$events[type].include(fn); if (internal) fn.internal = true; } return this; }, addEvents: function(events){ for (var type in events) this.addEvent(type, events[type]); return this; }, fireEvent: function(type, args, delay){ if (!this.$events || !this.$events[type]) return this; this.$events[type].each(function(fn){ fn.create({'bind': this, 'delay': delay, 'arguments': args})(); }, this); return this; }, removeEvent: function(type, fn){ if (!this.$events || !this.$events[type]) return this; if (!fn.internal) this.$events[type].remove(fn); return this; }, removeEvents: function(type){ for (var e in this.$events){ if (type && type != e) continue; var fns = this.$events[e]; for (var i = fns.length; i--; i) this.removeEvent(e, fns[i]); } return this; } }); var Options = new Class({ setOptions: function(){ this.options = $merge.run([this.options].extend(arguments)); if (!this.addEvent) return this; for (var option in this.options){ if ($type(this.options[option]) != 'function' || !(/^on[A-Z]/).test(option)) continue; this.addEvent(option, this.options[option]); delete this.options[option]; } return this; } }); /* Script: Element.js One of the most important items in MooTools. Contains the dollar function, the dollars function, and an handful of cross-browser, time-saver methods to let you easily work with HTML Elements. License: MIT-style license. */ Document.implement({ newElement: function(tag, props){ if (Browser.Engine.trident && props){ ['name', 'type', 'checked'].each(function(attribute){ if (!props[attribute]) return; tag += ' ' + attribute + '="' + props[attribute] + '"'; if (attribute != 'checked') delete props[attribute]; }); tag = '<' + tag + '>'; } return $.element(this.createElement(tag)).set(props); }, newTextNode: function(text){ return this.createTextNode(text); }, getDocument: function(){ return this; }, getWindow: function(){ return this.defaultView || this.parentWindow; }, purge: function(){ var elements = this.getElementsByTagName('*'); for (var i = 0, l = elements.length; i < l; i++) Browser.freeMem(elements[i]); } }); var Element = new Native({ name: 'Element', legacy: window.Element, initialize: function(tag, props){ var konstructor = Element.Constructors.get(tag); if (konstructor) return konstructor(props); if (typeof tag == 'string') return document.newElement(tag, props); return $(tag).set(props); }, afterImplement: function(key, value){ if (!Array[key]) Elements.implement(key, Elements.multi(key)); Element.Prototype[key] = value; } }); Element.Prototype = {$family: {name: 'element'}}; Element.Constructors = new Hash; var IFrame = new Native({ name: 'IFrame', generics: false, initialize: function(){ var params = Array.link(arguments, {properties: Object.type, iframe: $defined}); var props = params.properties || {}; var iframe = $(params.iframe) || false; var onload = props.onload || $empty; delete props.onload; props.id = props.name = $pick(props.id, props.name, iframe.id, iframe.name, 'IFrame_' + $time()); iframe = new Element(iframe || 'iframe', props); var onFrameLoad = function(){ var host = $try(function(){ return iframe.contentWindow.location.host; }); if (host && host == window.location.host){ var win = new Window(iframe.contentWindow); var doc = new Document(iframe.contentWindow.document); $extend(win.Element.prototype, Element.Prototype); } onload.call(iframe.contentWindow, iframe.contentWindow.document); }; (!window.frames[props.id]) ? iframe.addListener('load', onFrameLoad) : onFrameLoad(); return iframe; } }); var Elements = new Native({ initialize: function(elements, options){ options = $extend({ddup: true, cash: true}, options); elements = elements || []; if (options.ddup || options.cash){ var uniques = {}, returned = []; for (var i = 0, l = elements.length; i < l; i++){ var el = $.element(elements[i], !options.cash); if (options.ddup){ if (uniques[el.uid]) continue; uniques[el.uid] = true; } returned.push(el); } elements = returned; } return (options.cash) ? $extend(elements, this) : elements; } }); Elements.implement({ filter: function(filter, bind){ if (!filter) return this; return new Elements(Array.filter(this, (typeof filter == 'string') ? function(item){ return item.match(filter); } : filter, bind)); } }); Elements.multi = function(property){ return function(){ var items = []; var elements = true; for (var i = 0, j = this.length; i < j; i++){ var returns = this[i][property].apply(this[i], arguments); items.push(returns); if (elements) elements = ($type(returns) == 'element'); } return (elements) ? new Elements(items) : items; }; }; Window.implement({ $: function(el, nocash){ if (el && el.$family && el.uid) return el; var type = $type(el); return ($[type]) ? $[type](el, nocash, this.document) : null; }, $$: function(selector){ if (arguments.length == 1 && typeof selector == 'string') return this.document.getElements(selector); var elements = []; var args = Array.flatten(arguments); for (var i = 0, l = args.length; i < l; i++){ var item = args[i]; switch ($type(item)){ case 'element': item = [item]; break; case 'string': item = this.document.getElements(item, true); break; default: item = false; } if (item) elements.extend(item); } return new Elements(elements); }, getDocument: function(){ return this.document; }, getWindow: function(){ return this; } }); $.string = function(id, nocash, doc){ id = doc.getElementById(id); return (id) ? $.element(id, nocash) : null; }; $.element = function(el, nocash){ $uid(el); if (!nocash && !el.$family && !(/^object|embed$/i).test(el.tagName)){ var proto = Element.Prototype; for (var p in proto) el[p] = proto[p]; }; return el; }; $.object = function(obj, nocash, doc){ if (obj.toElement) return $.element(obj.toElement(doc), nocash); return null; }; $.textnode = $.whitespace = $.window = $.document = $arguments(0); Native.implement([Element, Document], { getElement: function(selector, nocash){ return $(this.getElements(selector, true)[0] || null, nocash); }, getElements: function(tags, nocash){ tags = tags.split(','); var elements = []; var ddup = (tags.length > 1); tags.each(function(tag){ var partial = this.getElementsByTagName(tag.trim()); (ddup) ? elements.extend(partial) : elements = partial; }, this); return new Elements(elements, {ddup: ddup, cash: !nocash}); } }); Element.Storage = { get: function(uid){ return (this[uid] || (this[uid] = {})); } }; Element.Inserters = new Hash({ before: function(context, element){ if (element.parentNode) element.parentNode.insertBefore(context, element); }, after: function(context, element){ if (!element.parentNode) return; var next = element.nextSibling; (next) ? element.parentNode.insertBefore(context, next) : element.parentNode.appendChild(context); }, bottom: function(context, element){ element.appendChild(context); }, top: function(context, element){ var first = element.firstChild; (first) ? element.insertBefore(context, first) : element.appendChild(context); } }); Element.Inserters.inside = Element.Inserters.bottom; Element.Inserters.each(function(value, key){ var Key = key.capitalize(); Element.implement('inject' + Key, function(el){ value(this, $(el, true)); return this; }); Element.implement('grab' + Key, function(el){ value($(el, true), this); return this; }); }); Element.implement({ getDocument: function(){ return this.ownerDocument; }, getWindow: function(){ return this.ownerDocument.getWindow(); }, getElementById: function(id, nocash){ var el = this.ownerDocument.getElementById(id); if (!el) return null; for (var parent = el.parentNode; parent != this; parent = parent.parentNode){ if (!parent) return null; } return $.element(el, nocash); }, set: function(prop, value){ switch ($type(prop)){ case 'object': for (var p in prop) this.set(p, prop[p]); break; case 'string': var property = Element.Properties.get(prop); (property && property.set) ? property.set.apply(this, Array.slice(arguments, 1)) : this.setProperty(prop, value); } return this; }, get: function(prop){ var property = Element.Properties.get(prop); return (property && property.get) ? property.get.apply(this, Array.slice(arguments, 1)) : this.getProperty(prop); }, erase: function(prop){ var property = Element.Properties.get(prop); (property && property.erase) ? property.erase.apply(this, Array.slice(arguments, 1)) : this.removeProperty(prop); return this; }, match: function(tag){ return (!tag || Element.get(this, 'tag') == tag); }, inject: function(el, where){ Element.Inserters.get(where || 'bottom')(this, $(el, true)); return this; }, wraps: function(el, where){ el = $(el, true); return this.replaces(el).grab(el, where); }, grab: function(el, where){ Element.Inserters.get(where || 'bottom')($(el, true), this); return this; }, appendText: function(text, where){ return this.grab(this.getDocument().newTextNode(text), where); }, adopt: function(){ Array.flatten(arguments).each(function(element){ element = $(element, true); if (element) this.appendChild(element); }, this); return this; }, dispose: function(){ return (this.parentNode) ? this.parentNode.removeChild(this) : this; }, clone: function(contents, keepid){ switch ($type(this)){ case 'element': var attributes = {}; for (var j = 0, l = this.attributes.length; j < l; j++){ var attribute = this.attributes[j], key = attribute.nodeName.toLowerCase(); if (Browser.Engine.trident && (/input/i).test(this.tagName) && (/width|height/).test(key)) continue; var value = (key == 'style' && this.style) ? this.style.cssText : attribute.nodeValue; if (!$chk(value) || key == 'uid' || (key == 'id' && !keepid)) continue; if (value != 'inherit' && ['string', 'number'].contains($type(value))) attributes[key] = value; } var element = new Element(this.nodeName.toLowerCase(), attributes); if (contents !== false){ for (var i = 0, k = this.childNodes.length; i < k; i++){ var child = Element.clone(this.childNodes[i], true, keepid); if (child) element.grab(child); } } return element; case 'textnode': return document.newTextNode(this.nodeValue); } return null; }, replaces: function(el){ el = $(el, true); el.parentNode.replaceChild(this, el); return this; }, hasClass: function(className){ return this.className.contains(className, ' '); }, addClass: function(className){ if (!this.hasClass(className)) this.className = (this.className + ' ' + className).clean(); return this; }, removeClass: function(className){ this.className = this.className.replace(new RegExp('(^|\\s)' + className + '(?:\\s|$)'), '$1').clean(); return this; }, toggleClass: function(className){ return this.hasClass(className) ? this.removeClass(className) : this.addClass(className); }, getComputedStyle: function(property){ if (this.currentStyle) return this.currentStyle[property.camelCase()]; var computed = this.getWindow().getComputedStyle(this, null); return (computed) ? computed.getPropertyValue([property.hyphenate()]) : null; }, empty: function(){ $A(this.childNodes).each(function(node){ Browser.freeMem(node); Element.empty(node); Element.dispose(node); }, this); return this; }, destroy: function(){ Browser.freeMem(this.empty().dispose()); return null; }, getSelected: function(){ return new Elements($A(this.options).filter(function(option){ return option.selected; })); }, toQueryString: function(){ var queryString = []; this.getElements('input, select, textarea').each(function(el){ if (!el.name || el.disabled) return; var value = (el.tagName.toLowerCase() == 'select') ? Element.getSelected(el).map(function(opt){ return opt.value; }) : ((el.type == 'radio' || el.type == 'checkbox') && !el.checked) ? null : el.value; $splat(value).each(function(val){ if (val) queryString.push(el.name + '=' + encodeURIComponent(val)); }); }); return queryString.join('&'); }, getProperty: function(attribute){ var EA = Element.Attributes, key = EA.Props[attribute]; var value = (key) ? this[key] : this.getAttribute(attribute, 2); return (EA.Bools[attribute]) ? !!value : (key) ? value : value || null; }, getProperties: function(){ var args = $A(arguments); return args.map(function(attr){ return this.getProperty(attr); }, this).associate(args); }, setProperty: function(attribute, value){ var EA = Element.Attributes, key = EA.Props[attribute], hasValue = $defined(value); if (key && EA.Bools[attribute]) value = (value || !hasValue) ? true : false; else if (!hasValue) return this.removeProperty(attribute); (key) ? this[key] = value : this.setAttribute(attribute, value); return this; }, setProperties: function(attributes){ for (var attribute in attributes) this.setProperty(attribute, attributes[attribute]); return this; }, removeProperty: function(attribute){ var EA = Element.Attributes, key = EA.Props[attribute], isBool = (key && EA.Bools[attribute]); (key) ? this[key] = (isBool) ? false : '' : this.removeAttribute(attribute); return this; }, removeProperties: function(){ Array.each(arguments, this.removeProperty, this); return this; } }); (function(){ var walk = function(element, walk, start, match, all, nocash){ var el = element[start || walk]; var elements = []; while (el){ if (el.nodeType == 1 && (!match || Element.match(el, match))){ elements.push(el); if (!all) break; } el = el[walk]; } return (all) ? new Elements(elements, {ddup: false, cash: !nocash}) : $(elements[0], nocash); }; Element.implement({ getPrevious: function(match, nocash){ return walk(this, 'previousSibling', null, match, false, nocash); }, getAllPrevious: function(match, nocash){ return walk(this, 'previousSibling', null, match, true, nocash); }, getNext: function(match, nocash){ return walk(this, 'nextSibling', null, match, false, nocash); }, getAllNext: function(match, nocash){ return walk(this, 'nextSibling', null, match, true, nocash); }, getFirst: function(match, nocash){ return walk(this, 'nextSibling', 'firstChild', match, false, nocash); }, getLast: function(match, nocash){ return walk(this, 'previousSibling', 'lastChild', match, false, nocash); }, getParent: function(match, nocash){ return walk(this, 'parentNode', null, match, false, nocash); }, getParents: function(match, nocash){ return walk(this, 'parentNode', null, match, true, nocash); }, getChildren: function(match, nocash){ return walk(this, 'nextSibling', 'firstChild', match, true, nocash); }, hasChild: function(el){ el = $(el, true); return (!!el && $A(this.getElementsByTagName(el.tagName)).contains(el)); } }); })(); Element.Properties = new Hash; Element.Properties.style = { set: function(style){ this.style.cssText = style; }, get: function(){ return this.style.cssText; }, erase: function(){ this.style.cssText = ''; } }; Element.Properties.tag = {get: function(){ return this.tagName.toLowerCase(); }}; Element.Properties.href = {get: function(){ return (!this.href) ? null : this.href.replace(new RegExp('^' + document.location.protocol + '\/\/' + document.location.host), ''); }}; Element.Properties.html = {set: function(){ return this.innerHTML = Array.flatten(arguments).join(''); }}; Native.implement([Element, Window, Document], { addListener: function(type, fn){ if (this.addEventListener) this.addEventListener(type, fn, false); else this.attachEvent('on' + type, fn); return this; }, removeListener: function(type, fn){ if (this.removeEventListener) this.removeEventListener(type, fn, false); else this.detachEvent('on' + type, fn); return this; }, retrieve: function(property, dflt){ var storage = Element.Storage.get(this.uid); var prop = storage[property]; if ($defined(dflt) && !$defined(prop)) prop = storage[property] = dflt; return $pick(prop); }, store: function(property, value){ var storage = Element.Storage.get(this.uid); storage[property] = value; return this; }, eliminate: function(property){ var storage = Element.Storage.get(this.uid); delete storage[property]; return this; } }); Element.Attributes = new Hash({ Props: {'html': 'innerHTML', 'class': 'className', 'for': 'htmlFor', 'text': (Browser.Engine.trident) ? 'innerText' : 'textContent'}, Bools: ['compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked', 'disabled', 'readonly', 'multiple', 'selected', 'noresize', 'defer'], Camels: ['value', 'accessKey', 'cellPadding', 'cellSpacing', 'colSpan', 'frameBorder', 'maxLength', 'readOnly', 'rowSpan', 'tabIndex', 'useMap'] }); Browser.freeMem = function(item){ if (!item) return; if (Browser.Engine.trident && (/object/i).test(item.tagName)){ for (var p in item){ if (typeof item[p] == 'function') item[p] = $empty; } Element.dispose(item); } if (item.uid && item.removeEvents) item.removeEvents(); }; (function(EA){ var EAB = EA.Bools, EAC = EA.Camels; EA.Bools = EAB = EAB.associate(EAB); Hash.extend(Hash.combine(EA.Props, EAB), EAC.associate(EAC.map(function(v){ return v.toLowerCase(); }))); EA.erase('Camels'); })(Element.Attributes); window.addListener('unload', function(){ window.removeListener('unload', arguments.callee); document.purge(); if (Browser.Engine.trident) CollectGarbage(); }); /* Script: Element.Event.js Contains Element methods for dealing with events, and custom Events. License: MIT-style license. */ Element.Properties.events = {set: function(events){ this.addEvents(events); }}; Native.implement([Element, Window, Document], { addEvent: function(type, fn){ var events = this.retrieve('events', {}); events[type] = events[type] || {'keys': [], 'values': []}; if (events[type].keys.contains(fn)) return this; events[type].keys.push(fn); var realType = type, custom = Element.Events.get(type), condition = fn, self = this; if (custom){ if (custom.onAdd) custom.onAdd.call(this, fn); if (custom.condition){ condition = function(event){ if (custom.condition.call(this, event)) return fn.call(this, event); return false; }; } realType = custom.base || realType; } var defn = function(){ return fn.call(self); }; var nativeEvent = Element.NativeEvents[realType] || 0; if (nativeEvent){ if (nativeEvent == 2){ defn = function(event){ event = new Event(event, self.getWindow()); if (condition.call(self, event) === false) event.stop(); }; } this.addListener(realType, defn); } events[type].values.push(defn); return this; }, removeEvent: function(type, fn){ var events = this.retrieve('events'); if (!events || !events[type]) return this; var pos = events[type].keys.indexOf(fn); if (pos == -1) return this; var key = events[type].keys.splice(pos, 1)[0]; var value = events[type].values.splice(pos, 1)[0]; var custom = Element.Events.get(type); if (custom){ if (custom.onRemove) custom.onRemove.call(this, fn); type = custom.base || type; } return (Element.NativeEvents[type]) ? this.removeListener(type, value) : this; }, addEvents: function(events){ for (var event in events) this.addEvent(event, events[event]); return this; }, removeEvents: function(type){ var events = this.retrieve('events'); if (!events) return this; if (!type){ for (var evType in events) this.removeEvents(evType); events = null; } else if (events[type]){ while (events[type].keys[0]) this.removeEvent(type, events[type].keys[0]); events[type] = null; } return this; }, fireEvent: function(type, args, delay){ var events = this.retrieve('events'); if (!events || !events[type]) return this; events[type].keys.each(function(fn){ fn.create({'bind': this, 'delay': delay, 'arguments': args})(); }, this); return this; }, cloneEvents: function(from, type){ from = $(from); var fevents = from.retrieve('events'); if (!fevents) return this; if (!type){ for (var evType in fevents) this.cloneEvents(from, evType); } else if (fevents[type]){ fevents[type].keys.each(function(fn){ this.addEvent(type, fn); }, this); } return this; } }); Element.NativeEvents = { 'click': 2, 'dblclick': 2, 'mouseup': 2, 'mousedown': 2, 'contextmenu': 2, //mouse buttons 'mousewheel': 2, 'DOMMouseScroll': 2, //mouse wheel 'mouseover': 2, 'mouseout': 2, 'mousemove': 2, 'selectstart': 2, 'selectend': 2, //mouse movement 'keydown': 2, 'keypress': 2, 'keyup': 2, //keyboard 'focus': 2, 'blur': 2, 'change': 2, 'reset': 2, 'select': 2, 'submit': 2, //form elements 'load': 1, 'unload': 1, 'beforeunload': 1, 'resize': 1, 'move': 1, 'DOMContentLoaded': 1, 'readystatechange': 1, //window 'error': 1, 'abort': 1, 'scroll': 1 //misc }; (function(){ var checkRelatedTarget = function(event){ var related = event.relatedTarget; if (!related) return true; return ($type(this) != 'document' && related != this && related.prefix != 'xul' && !this.hasChild(related)); }; Element.Events = new Hash({ mouseenter: { base: 'mouseover', condition: checkRelatedTarget }, mouseleave: { base: 'mouseout', condition: checkRelatedTarget }, mousewheel: { base: (Browser.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel' } }); })(); Event.keys = Event.Keys; /* Script: Element.Style.js Contains methods for interacting with the styles of Elements in a fashionable way. License: MIT-style license. */ Element.Properties.styles = {set: function(styles){ this.setStyles(styles); }}; Element.Properties.opacity = { set: function(opacity, novisibility){ if (!novisibility){ if (opacity == 0){ if (this.style.visibility != 'hidden') this.style.visibility = 'hidden'; } else { if (this.style.visibility != 'visible') this.style.visibility = 'visible'; } } if (!this.currentStyle || !this.currentStyle.hasLayout) this.style.zoom = 1; if (Browser.Engine.trident) this.style.filter = (opacity == 1) ? '' : 'alpha(opacity=' + opacity * 100 + ')'; this.style.opacity = opacity; this.store('opacity', opacity); }, get: function(){ return this.retrieve('opacity', 1); } }; Element.implement({ setOpacity: function(value){ return this.set('opacity', value, true); }, getOpacity: function(){ return this.get('opacity'); }, setStyle: function(property, value){ switch (property){ case 'opacity': return this.set('opacity', parseFloat(value)); case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat'; } property = property.camelCase(); if ($type(value) != 'string'){ var map = (Element.Styles.get(property) || '@').split(' '); value = $splat(value).map(function(val, i){ if (!map[i]) return ''; return ($type(val) == 'number') ? map[i].replace('@', Math.round(val)) : val; }).join(' '); } else if (value == String(Number(value))){ value = Math.round(value); } this.style[property] = value; return this; }, getStyle: function(property){ switch (property){ case 'opacity': return this.get('opacity'); case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat'; } property = property.camelCase(); var result = this.style[property]; if (!$chk(result)){ result = []; for (var style in Element.ShortStyles){ if (property != style) continue; for (var s in Element.ShortStyles[style]) result.push(this.getStyle(s)); return result.join(' '); } result = this.getComputedStyle(property); } if (result){ result = String(result); var color = result.match(/rgba?\([\d\s,]+\)/); if (color) result = result.replace(color[0], color[0].rgbToHex()); } if (Browser.Engine.presto || (Browser.Engine.trident && !$chk(parseInt(result)))){ if (property.test(/^(height|width)$/)){ var values = (property == 'width') ? ['left', 'right'] : ['top', 'bottom'], size = 0; values.each(function(value){ size += this.getStyle('border-' + value + '-width').toInt() + this.getStyle('padding-' + value).toInt(); }, this); return this['offset' + property.capitalize()] - size + 'px'; } if (Browser.Engine.presto && String(result).test('px')) return result; if (property.test(/(border(.+)Width|margin|padding)/)) return '0px'; } return result; }, setStyles: function(styles){ for (var style in styles) this.setStyle(style, styles[style]); return this; }, getStyles: function(){ var result = {}; Array.each(arguments, function(key){ result[key] = this.getStyle(key); }, this); return result; } }); Element.Styles = new Hash({ left: '@px', top: '@px', bottom: '@px', right: '@px', width: '@px', height: '@px', maxWidth: '@px', maxHeight: '@px', minWidth: '@px', minHeight: '@px', backgroundColor: 'rgb(@, @, @)', backgroundPosition: '@px @px', color: 'rgb(@, @, @)', fontSize: '@px', letterSpacing: '@px', lineHeight: '@px', clip: 'rect(@px @px @px @px)', margin: '@px @px @px @px', padding: '@px @px @px @px', border: '@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)', borderWidth: '@px @px @px @px', borderStyle: '@ @ @ @', borderColor: 'rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)', zIndex: '@', 'zoom': '@', fontWeight: '@', textIndent: '@px', opacity: '@' }); Element.ShortStyles = {margin: {}, padding: {}, border: {}, borderWidth: {}, borderStyle: {}, borderColor: {}}; ['Top', 'Right', 'Bottom', 'Left'].each(function(direction){ var Short = Element.ShortStyles; var All = Element.Styles; ['margin', 'padding'].each(function(style){ var sd = style + direction; Short[style][sd] = All[sd] = '@px'; }); var bd = 'border' + direction; Short.border[bd] = All[bd] = '@px @ rgb(@, @, @)'; var bdw = bd + 'Width', bds = bd + 'Style', bdc = bd + 'Color'; Short[bd] = {}; Short.borderWidth[bdw] = Short[bd][bdw] = All[bdw] = '@px'; Short.borderStyle[bds] = Short[bd][bds] = All[bds] = '@'; Short.borderColor[bdc] = Short[bd][bdc] = All[bdc] = 'rgb(@, @, @)'; }); /* Script: Element.Dimensions.js Contains methods to work with size, scroll, or positioning of Elements and the window object. License: MIT-style license. Note: Dimensions requires an XHTML doctype. */ (function(){ function $body(el){ return el.tagName.toLowerCase() == 'body'; }; Element.implement({ positioned: function(){ if ($body(this)) return true; return (Element.getComputedStyle(this, 'position') != 'static'); }, getOffsetParent: function(){ if ($body(this)) return null; if (!Browser.Engine.trident) return $(this.offsetParent); var el = this; while ((el = el.parentNode)){ if (Element.positioned(el)) return $(el); } return null; }, getSize: function(){ if ($body(this)) return this.getWindow().getSize(); return {x: this.offsetWidth, y: this.offsetHeight}; }, getScrollSize: function(){ if ($body(this)) return this.getWindow().getScrollSize(); return {x: this.scrollWidth, y: this.scrollHeight}; }, getScroll: function(){ if ($body(this)) return this.getWindow().getScroll(); return {x: this.scrollLeft, y: this.scrollTop}; }, scrollTo: function(x, y){ if ($body(this)) return this.getWindow().scrollTo(x, y); this.scrollLeft = x; this.scrollTop = y; return this; }, getPosition: function(relative){ if ($body(this)) return {x: 0, y: 0}; var el = this, position = {x: 0, y: 0}; while (el){ position.x += el.offsetLeft; position.y += el.offsetTop; el = el.offsetParent; } var rpos = (relative) ? $(relative).getPosition() : {x: 0, y: 0}; return {x: position.x - rpos.x, y: position.y - rpos.y}; }, getCoordinates: function(element){ if ($body(this)) return this.getWindow().getCoordinates(); var position = this.getPosition(element), size = this.getSize(); var obj = {'top': position.y, 'left': position.x, 'width': size.x, 'height': size.y}; obj.right = obj.left + obj.width; obj.bottom = obj.top + obj.height; return obj; }, getRelativePosition: function(){ return this.getPosition(this.getOffsetParent()); }, computePosition: function(obj){ return { left: obj.x - (this.getComputedStyle('margin-left').toInt() || 0), top: obj.y - (this.getComputedStyle('margin-top').toInt() || 0) }; }, position: function(obj){ return this.setStyles(this.computePosition(obj)); } }); })(); Native.implement([Window, Document], { getSize: function(){ var body = this.getDocument().body, html = this.getDocument().documentElement; if (Browser.Engine.webkit419) return {x: this.innerWidth, y: this.innerHeight}; return {x: html.clientWidth, y: html.clientHeight}; }, getScroll: function(){ var html = this.getDocument().documentElement; return {x: $pick(this.pageXOffset, html.scrollLeft), y: $pick(this.pageYOffset, html.scrollTop)}; }, getScrollSize: function(){ var html = this.getDocument().documentElement, body = this.getDocument().body; if (Browser.Engine.trident) return {x: Math.max(html.clientWidth, html.scrollWidth), y: Math.max(html.clientHeight, html.scrollHeight)}; if (Browser.Engine.webkit) return {x: body.scrollWidth, y: body.scrollHeight}; return {x: html.scrollWidth, y: html.scrollHeight}; }, getPosition: function(){ return {x: 0, y: 0}; }, getCoordinates: function(){ var size = this.getSize(); return {top: 0, left: 0, height: size.y, width: size.x, bottom: size.y, right: size.x}; } }); Native.implement([Window, Document, Element], { getHeight: function(){ return this.getSize().y; }, getWidth: function(){ return this.getSize().x; }, getScrollTop: function(){ return this.getScroll().y; }, getScrollLeft: function(){ return this.getScroll().x; }, getScrollHeight: function(){ return this.getScrollSize().y; }, getScrollWidth: function(){ return this.getScrollSize().x; }, getTop: function(){ return this.getPosition().y; }, getLeft: function(){ return this.getPosition().x; } }); /* Script: Selectors.js Adds advanced CSS Querying capabilities for targeting elements. Also includes pseudoselectors support. License: MIT-style license. */ Native.implement([Document, Element], { getElements: function(expression, nocash){ expression = expression.split(','); var items, local = {}; for (var i = 0, l = expression.length; i < l; i++){ var selector = expression[i], elements = Selectors.Utils.search(this, selector, local); if (i != 0 && elements.item) elements = $A(elements); items = (i == 0) ? elements : (items.item) ? $A(items).concat(elements) : items.concat(elements); } return new Elements(items, {ddup: (expression.length > 1), cash: !nocash}); } }); Element.implement({ match: function(selector){ if (!selector) return true; var tagid = Selectors.Utils.parseTagAndID(selector); var tag = tagid[0], id = tagid[1]; if (!Selectors.Filters.byID(this, id) || !Selectors.Filters.byTag(this, tag)) return false; var parsed = Selectors.Utils.parseSelector(selector); return (parsed) ? Selectors.Utils.filter(this, parsed, {}) : true; } }); var Selectors = {Cache: {nth: {}, parsed: {}}}; Selectors.RegExps = { id: (/#([\w-]+)/), tag: (/^(\w+|\*)/), quick: (/^(\w+|\*)$/), splitter: (/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g), combined: (/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)["']?(.*?)["']?)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g) }; Selectors.Utils = { chk: function(item, uniques){ if (!uniques) return true; var uid = $uid(item); if (!uniques[uid]) return uniques[uid] = true; return false; }, parseNthArgument: function(argument){ if (Selectors.Cache.nth[argument]) return Selectors.Cache.nth[argument]; var parsed = argument.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/); if (!parsed) return false; var inta = parseInt(parsed[1]); var a = (inta || inta === 0) ? inta : 1; var special = parsed[2] || false; var b = parseInt(parsed[3]) || 0; if (a != 0){ b--; while (b < 1) b += a; while (b >= a) b -= a; } else { a = b; special = 'index'; } switch (special){ case 'n': parsed = {a: a, b: b, special: 'n'}; break; case 'odd': parsed = {a: 2, b: 0, special: 'n'}; break; case 'even': parsed = {a: 2, b: 1, special: 'n'}; break; case 'first': parsed = {a: 0, special: 'index'}; break; case 'last': parsed = {special: 'last-child'}; break; case 'only': parsed = {special: 'only-child'}; break; default: parsed = {a: (a - 1), special: 'index'}; } return Selectors.Cache.nth[argument] = parsed; }, parseSelector: function(selector){ if (Selectors.Cache.parsed[selector]) return Selectors.Cache.parsed[selector]; var m, parsed = {classes: [], pseudos: [], attributes: []}; while ((m = Selectors.RegExps.combined.exec(selector))){ var cn = m[1], an = m[2], ao = m[3], av = m[4], pn = m[5], pa = m[6]; if (cn){ parsed.classes.push(cn); } else if (pn){ var parser = Selectors.Pseudo.get(pn); if (parser) parsed.pseudos.push({parser: parser, argument: pa}); else parsed.attributes.push({name: pn, operator: '=', value: pa}); } else if (an){ parsed.attributes.push({name: an, operator: ao, value: av}); } } if (!parsed.classes.length) delete parsed.classes; if (!parsed.attributes.length) delete parsed.attributes; if (!parsed.pseudos.length) delete parsed.pseudos; if (!parsed.classes && !parsed.attributes && !parsed.pseudos) parsed = null; return Selectors.Cache.parsed[selector] = parsed; }, parseTagAndID: function(selector){ var tag = selector.match(Selectors.RegExps.tag); var id = selector.match(Selectors.RegExps.id); return [(tag) ? tag[1] : '*', (id) ? id[1] : false]; }, filter: function(item, parsed, local){ var i; if (parsed.classes){ for (i = parsed.classes.length; i--; i){ var cn = parsed.classes[i]; if (!Selectors.Filters.byClass(item, cn)) return false; } } if (parsed.attributes){ for (i = parsed.attributes.length; i--; i){ var att = parsed.attributes[i]; if (!Selectors.Filters.byAttribute(item, att.name, att.operator, att.value)) return false; } } if (parsed.pseudos){ for (i = parsed.pseudos.length; i--; i){ var psd = parsed.pseudos[i]; if (!Selectors.Filters.byPseudo(item, psd.parser, psd.argument, local)) return false; } } return true; }, getByTagAndID: function(ctx, tag, id){ if (id){ var item = (ctx.getElementById) ? ctx.getElementById(id, true) : Element.getElementById(ctx, id, true); return (item && Selectors.Filters.byTag(item, tag)) ? [item] : []; } else { return ctx.getElementsByTagName(tag); } }, search: function(self, expression, local){ var splitters = []; var selectors = expression.trim().replace(Selectors.RegExps.splitter, function(m0, m1, m2){ splitters.push(m1); return ':)' + m2; }).split(':)'); var items, match, filtered, item; for (var i = 0, l = selectors.length; i < l; i++){ var selector = selectors[i]; if (i == 0 && Selectors.RegExps.quick.test(selector)){ items = self.getElementsByTagName(selector); continue; } var splitter = splitters[i - 1]; var tagid = Selectors.Utils.parseTagAndID(selector); var tag = tagid[0], id = tagid[1]; if (i == 0){ items = Selectors.Utils.getByTagAndID(self, tag, id); } else { var uniques = {}, found = []; for (var j = 0, k = items.length; j < k; j++) found = Selectors.Getters[splitter](found, items[j], tag, id, uniques); items = found; } var parsed = Selectors.Utils.parseSelector(selector); if (parsed){ filtered = []; for (var m = 0, n = items.length; m < n; m++){ item = items[m]; if (Selectors.Utils.filter(item, parsed, local)) filtered.push(item); } items = filtered; } } return items; } }; Selectors.Getters = { ' ': function(found, self, tag, id, uniques){ var items = Selectors.Utils.getByTagAndID(self, tag, id); for (var i = 0, l = items.length; i < l; i++){ var item = items[i]; if (Selectors.Utils.chk(item, uniques)) found.push(item); } return found; }, '>': function(found, self, tag, id, uniques){ var children = Selectors.Utils.getByTagAndID(self, tag, id); for (var i = 0, l = children.length; i < l; i++){ var child = children[i]; if (child.parentNode == self && Selectors.Utils.chk(child, uniques)) found.push(child); } return found; }, '+': function(found, self, tag, id, uniques){ while ((self = self.nextSibling)){ if (self.nodeType == 1){ if (Selectors.Utils.chk(self, uniques) && Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self); break; } } return found; }, '~': function(found, self, tag, id, uniques){ while ((self = self.nextSibling)){ if (self.nodeType == 1){ if (!Selectors.Utils.chk(self, uniques)) break; if (Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self); } } return found; } }; Selectors.Filters = { byTag: function(self, tag){ return (tag == '*' || (self.tagName && self.tagName.toLowerCase() == tag)); }, byID: function(self, id){ return (!id || (self.id && self.id == id)); }, byClass: function(self, klass){ return (self.className && self.className.contains(klass, ' ')); }, byPseudo: function(self, parser, argument, local){ return parser.call(self, argument, local); }, byAttribute: function(self, name, operator, value){ var result = Element.prototype.getProperty.call(self, name); if (!result) return false; if (!operator || value == undefined) return true; switch (operator){ case '=': return (result == value); case '*=': return (result.contains(value)); case '^=': return (result.substr(0, value.length) == value); case '$=': return (result.substr(result.length - value.length) == value); case '!=': return (result != value); case '~=': return result.contains(value, ' '); case '|=': return result.contains(value, '-'); } return false; } }; Selectors.Pseudo = new Hash({ // w3c pseudo selectors empty: function(){ return !(this.innerText || this.textContent || '').length; }, not: function(selector){ return !Element.match(this, selector); }, contains: function(text){ return (this.innerText || this.textContent || '').contains(text); }, 'first-child': function(){ return Selectors.Pseudo.index.call(this, 0); }, 'last-child': function(){ var element = this; while ((element = element.nextSibling)){ if (element.nodeType == 1) return false; } return true; }, 'only-child': function(){ var prev = this; while ((prev = prev.previousSibling)){ if (prev.nodeType == 1) return false; } var next = this; while ((next = next.nextSibling)){ if (next.nodeType == 1) return false; } return true; }, 'nth-child': function(argument, local){ argument = (argument == undefined) ? 'n' : argument; var parsed = Selectors.Utils.parseNthArgument(argument); if (parsed.special != 'n') return Selectors.Pseudo[parsed.special].call(this, parsed.a, local); var count = 0; local.positions = local.positions || {}; var uid = $uid(this); if (!local.positions[uid]){ var self = this; while ((self = self.previousSibling)){ if (self.nodeType != 1) continue; count ++; var position = local.positions[$uid(self)]; if (position != undefined){ count = position + count; break; } } local.positions[uid] = count; } return (local.positions[uid] % parsed.a == parsed.b); }, // custom pseudo selectors index: function(index){ var element = this, count = 0; while ((element = element.previousSibling)){ if (element.nodeType == 1 && ++count > index) return false; } return (count == index); }, even: function(argument, local){ return Selectors.Pseudo['nth-child'].call(this, '2n+1', local); }, odd: function(argument, local){ return Selectors.Pseudo['nth-child'].call(this, '2n', local); } }); /* Script: Domready.js Contains the domready custom event. License: MIT-style license. */ Element.Events.domready = { onAdd: function(fn){ if (Browser.loaded) return fn.call(this); var self = this, win = this.getWindow(), doc = this.getDocument(); var domready = function(){ if (!arguments.callee.done){ arguments.callee.done = true; fn.call(self); }; return true; }; var states = (Browser.Engine.webkit) ? ['loaded', 'complete'] : 'complete'; var check = function(context){ if (states.contains(context.readyState)) return domready(); return false; }; if (doc.readyState && Browser.Engine.webkit){ (function(){ if (!check(doc)) arguments.callee.delay(50); })(); } else if (doc.readyState && Browser.Engine.trident){ var script = $('ie_domready'); if (!script){ var src = (win.location.protocol == 'https:') ? '//:' : 'javascript:void(0)'; doc.write(''); script = $('ie_domready'); } if (!check(script)) script.addEvent('readystatechange', check.pass(script)); } else { win.addEvent('load', domready); doc.addEvent('DOMContentLoaded', domready); } return null; } }; window.addEvent('domready', function(){ Browser.loaded = true; }); /* Script: JSON.js JSON encoder and decoder. License: MIT-style license. See Also: */ var JSON = new Hash({ encode: function(obj){ switch ($type(obj)){ case 'string': return '"' + obj.replace(/[\x00-\x1f\\"]/g, JSON.$replaceChars) + '"'; case 'array': return '[' + String(obj.map(JSON.encode).filter($defined)) + ']'; case 'object': case 'hash': var string = []; Hash.each(obj, function(value, key){ var json = JSON.encode(value); if (json) string.push(JSON.encode(key) + ':' + json); }); return '{' + String(string) + '}'; case 'number': case 'boolean': return String(obj); case false: return 'null'; } return null; }, $specialChars: {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\'}, $replaceChars: function(chr){ return JSON.$specialChars[chr] || '\\u00' + Math.floor(chr.charCodeAt() / 16).toString(16) + (chr.charCodeAt() % 16).toString(16); }, decode: function(string, secure){ if ($type(string) != 'string' || !string.length) return null; if (secure && !(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''))) return null; return eval('(' + string + ')'); } }); Native.implement([Hash, Array, String, Number], { toJSON: function(){ return JSON.encode(this); } }); var Json = JSON; JSON.toString = JSON.encode; JSON.evaluate = JSON.decode; /* Script: Cookie.js Class for creating, loading, and saving browser Cookies. License: MIT-style license. Credits: Based on the functions by Peter-Paul Koch (http://quirksmode.org). */ var Cookie = new Class({ Implements: Options, options: { path: false, domain: false, duration: false, secure: false, document: document }, initialize: function(key, options){ this.key = key; this.setOptions(options); }, write: function(value){ value = encodeURIComponent(value); if (this.options.domain) value += '; domain=' + this.options.domain; if (this.options.path) value += '; path=' + this.options.path; if (this.options.duration){ var date = new Date(); date.setTime(date.getTime() + this.options.duration * 24 * 60 * 60 * 1000); value += '; expires=' + date.toGMTString(); } if (this.options.secure) value += '; secure'; this.options.document.cookie = this.key + '=' + value; return this; }, read: function(){ var value = this.options.document.cookie.match('(?:^|;)\\s*' + this.key.escapeRegExp() + '=([^;]*)'); return value ? decodeURIComponent(value[1]) : null; }, erase: function(){ new Cookie(this.key, $merge(this.options, {duration: -1})).write(''); return this; } }); Cookie.set = function(key, value, options){ return new Cookie(key, options).write(value); }; Cookie.get = function(key){ return new Cookie(key).read(); }; Cookie.remove = function(key, options){ return new Cookie(key, options).erase(); }; /* Script: Color.js Class for creating and manipulating colors in JavaScript. Supports HSB -> RGB Conversions and vice versa. License: MIT-style license. */ var Color = new Native({ initialize: function(color, type){ if (arguments.length >= 3){ type = "rgb"; color = Array.slice(arguments, 0, 3); } else if (typeof color == 'string'){ if (color.match(/rgb/)) color = color.rgbToHex().hexToRgb(true); else if (color.match(/hsb/)) color = color.hsbToRgb(); else color = color.hexToRgb(true); } type = type || 'rgb'; switch (type){ case 'hsb': var old = color; color = color.hsbToRgb(); color.hsb = old; break; case 'hex': color = color.hexToRgb(true); break; } color.rgb = color.slice(0, 3); color.hsb = color.hsb || color.rgbToHsb(); color.hex = color.rgbToHex(); return $extend(color, this); } }); Color.implement({ mix: function(){ var colors = Array.slice(arguments); var alpha = ($type(colors.getLast()) == 'number') ? colors.pop() : 50; var rgb = this.slice(); colors.each(function(color){ color = new Color(color); for (var i = 0; i < 3; i++) rgb[i] = Math.round((rgb[i] / 100 * (100 - alpha)) + (color[i] / 100 * alpha)); }); return new Color(rgb, 'rgb'); }, invert: function(){ return new Color(this.map(function(value){ return 255 - value; })); }, setHue: function(value){ return new Color([value, this.hsb[1], this.hsb[2]], 'hsb'); }, setSaturation: function(percent){ return new Color([this.hsb[0], percent, this.hsb[2]], 'hsb'); }, setBrightness: function(percent){ return new Color([this.hsb[0], this.hsb[1], percent], 'hsb'); } }); function $RGB(r, g, b){ return new Color([r, g, b], 'rgb'); }; function $HSB(h, s, b){ return new Color([h, s, b], 'hsb'); }; function $HEX(hex){ return new Color(hex, 'hex'); }; Array.implement({ rgbToHsb: function(){ var red = this[0], green = this[1], blue = this[2]; var hue, saturation, brightness; var max = Math.max(red, green, blue), min = Math.min(red, green, blue); var delta = max - min; brightness = max / 255; saturation = (max != 0) ? delta / max : 0; if (saturation == 0){ hue = 0; } else { var rr = (max - red) / delta; var gr = (max - green) / delta; var br = (max - blue) / delta; if (red == max) hue = br - gr; else if (green == max) hue = 2 + rr - br; else hue = 4 + gr - rr; hue /= 6; if (hue < 0) hue++; } return [Math.round(hue * 360), Math.round(saturation * 100), Math.round(brightness * 100)]; }, hsbToRgb: function(){ var br = Math.round(this[2] / 100 * 255); if (this[1] == 0){ return [br, br, br]; } else { var hue = this[0] % 360; var f = hue % 60; var p = Math.round((this[2] * (100 - this[1])) / 10000 * 255); var q = Math.round((this[2] * (6000 - this[1] * f)) / 600000 * 255); var t = Math.round((this[2] * (6000 - this[1] * (60 - f))) / 600000 * 255); switch (Math.floor(hue / 60)){ case 0: return [br, t, p]; case 1: return [q, br, p]; case 2: return [p, br, t]; case 3: return [p, q, br]; case 4: return [t, p, br]; case 5: return [br, p, q]; } } return false; } }); String.implement({ rgbToHsb: function(){ var rgb = this.match(/\d{1,3}/g); return (rgb) ? hsb.rgbToHsb() : null; }, hsbToRgb: function(){ var hsb = this.match(/\d{1,3}/g); return (hsb) ? hsb.hsbToRgb() : null; } }); /* Script: Swiff.js Wrapper for embedding SWF movies. Supports (and fixes) External Interface Communication. License: MIT-style license. Credits: Flash detection & Internet Explorer + Flash Player 9 fix inspired by SWFObject. */ var Swiff = new Class({ Implements: [Options], options: { id: null, height: 1, width: 1, container: null, properties: {}, params: { quality: 'high', allowScriptAccess: 'always', wMode: 'window', swLiveConnect: true }, callBacks: {}, vars: {} }, toElement: function(){ return this.object; }, initialize: function(path, options){ this.instance = 'Swiff_' + $time(); this.setOptions(options); options = this.options; var id = this.id = options.id || this.instance; var container = $(options.container); Swiff.CallBacks[this.instance] = {}; var params = options.params, vars = options.vars, callBacks = options.callBacks; var properties = $extend({height: options.height, width: options.width}, options.properties); var self = this; for (var callBack in callBacks){ Swiff.CallBacks[this.instance][callBack] = (function(option){ return function(){ return option.apply(self.object, arguments); }; })(callBacks[callBack]); vars[callBack] = 'Swiff.CallBacks.' + this.instance + '.' + callBack; } params.flashVars = Hash.toQueryString(vars); if (Browser.Engine.trident){ properties.classid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'; params.movie = path; } else { properties.type = 'application/x-shockwave-flash'; properties.data = path; } var build = ''; } } } build += ''; this.object = ((container) ? container.empty() : new Element('div')).set('html', build).firstChild; }, replaces: function(element){ element = $(element, true); element.parentNode.replaceChild(this.toElement(), element); return this; }, inject: function(element){ $(element, true).appendChild(this.toElement()); return this; }, remote: function(){ return Swiff.remote.apply(Swiff, [this.toElement()].extend(arguments)); } }); Swiff.CallBacks = {}; Swiff.remote = function(obj, fn){ var rs = obj.CallFunction('' + __flash__argumentsToXML(arguments, 2) + ''); return eval(rs); }; /* Script: Group.js Class for monitoring collections of events License: MIT-style license. */ var Group = new Class({ initialize: function(){ this.instances = Array.flatten(arguments); this.events = {}; this.checker = {}; }, addEvent: function(type, fn){ this.checker[type] = this.checker[type] || {}; this.events[type] = this.events[type] || []; if (this.events[type].contains(fn)) return false; else this.events[type].push(fn); this.instances.each(function(instance, i){ instance.addEvent(type, this.check.bind(this, [type, instance, i])); }, this); return this; }, check: function(type, instance, i){ this.checker[type][i] = true; var every = this.instances.every(function(current, j){ return this.checker[type][j] || false; }, this); if (!every) return; this.checker[type] = {}; this.events[type].each(function(event){ event.call(this, this.instances, instance); }, this); } }); /* Script: Fx.js Contains the basic animation logic to be extended by all other Fx Classes. License: MIT-style license. */ var Fx = new Class({ Implements: [Chain, Events, Options], options: { /* onStart: $empty, onCancel: $empty, onComplete: $empty, */ fps: 50, unit: false, duration: 500, link: 'ignore', transition: function(p){ return -(Math.cos(Math.PI * p) - 1) / 2; } }, initialize: function(options){ this.subject = this.subject || this; this.setOptions(options); this.options.duration = Fx.Durations[this.options.duration] || this.options.duration.toInt(); var wait = this.options.wait; if (wait === false) this.options.link = 'cancel'; }, step: function(){ var time = $time(); if (time < this.time + this.options.duration){ var delta = this.options.transition((time - this.time) / this.options.duration); this.set(this.compute(this.from, this.to, delta)); } else { this.set(this.compute(this.from, this.to, 1)); this.complete(); } }, set: function(now){ return now; }, compute: function(from, to, delta){ return Fx.compute(from, to, delta); }, check: function(caller){ if (!this.timer) return true; switch (this.options.link){ case 'cancel': this.cancel(); return true; case 'chain': this.chain(caller.bind(this, Array.slice(arguments, 1))); return false; } return false; }, start: function(from, to){ if (!this.check(arguments.callee, from, to)) return this; this.from = from; this.to = to; this.time = 0; this.startTimer(); this.onStart(); return this; }, complete: function(){ if (this.stopTimer()) this.onComplete(); return this; }, cancel: function(){ if (this.stopTimer()) this.onCancel(); return this; }, onStart: function(){ this.fireEvent('start', this.subject); }, onComplete: function(){ this.fireEvent('complete', this.subject); if (!this.callChain()) this.fireEvent('chainComplete', this.subject); }, onCancel: function(){ this.fireEvent('cancel', this.subject).clearChain(); }, pause: function(){ this.stopTimer(); return this; }, resume: function(){ this.startTimer(); return this; }, stopTimer: function(){ if (!this.timer) return false; this.time = $time() - this.time; this.timer = $clear(this.timer); return true; }, startTimer: function(){ if (this.timer) return false; this.time = $time() - this.time; this.timer = this.step.periodical(Math.round(1000 / this.options.fps), this); return true; } }); Fx.compute = function(from, to, delta){ return (to - from) * delta + from; }; Fx.Durations = {'short': 250, 'normal': 500, 'long': 1000}; /* Script: Fx.CSS.js Contains the CSS animation logic. Used by Fx.Tween, Fx.Morph, Fx.Elements. License: MIT-style license. */ Fx.CSS = new Class({ Extends: Fx, //prepares the base from/to object prepare: function(element, property, values){ values = $splat(values); var values1 = values[1]; if (!$chk(values1)){ values[1] = values[0]; values[0] = element.getStyle(property); } var parsed = values.map(this.parse); return {from: parsed[0], to: parsed[1]}; }, //parses a value into an array parse: function(value){ value = $lambda(value)(); value = (typeof value == 'string') ? value.split(' ') : $splat(value); return value.map(function(val){ val = String(val); var found = false; Fx.CSS.Parsers.each(function(parser, key){ if (found) return; var parsed = parser.parse(val); if ($chk(parsed)) found = {value: parsed, parser: parser}; }); found = found || {value: val, parser: Fx.CSS.Parsers.String}; return found; }); }, //computes by a from and to prepared objects, using their parsers. compute: function(from, to, delta){ var computed = []; (Math.min(from.length, to.length)).times(function(i){ computed.push({value: from[i].parser.compute(from[i].value, to[i].value, delta), parser: from[i].parser}); }); computed.$family = {name: 'fx:css:value'}; return computed; }, //serves the value as settable serve: function(value, unit){ if ($type(value) != 'fx:css:value') value = this.parse(value); var returned = []; value.each(function(bit){ returned = returned.concat(bit.parser.serve(bit.value, unit)); }); return returned; }, //renders the change to an element render: function(element, property, value, unit){ element.setStyle(property, this.serve(value, unit)); }, //searches inside the page css to find the values for a selector search: function(selector){ if (Fx.CSS.Cache[selector]) return Fx.CSS.Cache[selector]; var to = {}; Array.each(document.styleSheets, function(sheet, j){ var href = sheet.href; if (href && href.contains('://') && !href.contains(document.domain)) return; var rules = sheet.rules || sheet.cssRules; Array.each(rules, function(rule, i){ if (!rule.style) return; var selectorText = (rule.selectorText) ? rule.selectorText.replace(/^\w+/, function(m){ return m.toLowerCase(); }) : null; if (!selectorText || !selectorText.test('^' + selector + '$')) return; Element.Styles.each(function(value, style){ if (!rule.style[style] || Element.ShortStyles[style]) return; value = String(rule.style[style]); to[style] = (value.test(/^rgb/)) ? value.rgbToHex() : value; }); }); }); return Fx.CSS.Cache[selector] = to; } }); Fx.CSS.Cache = {}; Fx.CSS.Parsers = new Hash({ Color: { parse: function(value){ if (value.match(/^#[0-9a-f]{3,6}$/i)) return value.hexToRgb(true); return ((value = value.match(/(\d+),\s*(\d+),\s*(\d+)/))) ? [value[1], value[2], value[3]] : false; }, compute: function(from, to, delta){ return from.map(function(value, i){ return Math.round(Fx.compute(from[i], to[i], delta)); }); }, serve: function(value){ return value.map(Number); } }, Number: { parse: parseFloat, compute: Fx.compute, serve: function(value, unit){ return (unit) ? value + unit : value; } }, String: { parse: $lambda(false), compute: $arguments(1), serve: $arguments(0) } }); /* Script: Fx.Tween.js Formerly Fx.Style, effect to transition any CSS property for an element. License: MIT-style license. */ Fx.Tween = new Class({ Extends: Fx.CSS, initialize: function(element, options){ this.element = this.subject = $(element); this.parent(options); }, set: function(property, now){ if (arguments.length == 1){ now = property; property = this.property || this.options.property; } this.render(this.element, property, now, this.options.unit); return this; }, start: function(property, from, to){ if (!this.check(arguments.callee, property, from, to)) return this; var args = Array.flatten(arguments); this.property = this.options.property || args.shift(); var parsed = this.prepare(this.element, this.property, args); return this.parent(parsed.from, parsed.to); } }); Element.Properties.tween = { set: function(options){ var tween = this.retrieve('tween'); if (tween) tween.cancel(); return this.eliminate('tween').store('tween:options', $extend({link: 'cancel'}, options)); }, get: function(options){ if (options || !this.retrieve('tween')){ if (options || !this.retrieve('tween:options')) this.set('tween', options); this.store('tween', new Fx.Tween(this, this.retrieve('tween:options'))); } return this.retrieve('tween'); } }; Element.implement({ tween: function(property, from, to){ this.get('tween').start(arguments); return this; }, fade: function(how){ var fade = this.get('tween'), o = 'opacity', toggle; how = $pick(how, 'toggle'); switch (how){ case 'in': fade.start(o, 1); break; case 'out': fade.start(o, 0); break; case 'show': fade.set(o, 1); break; case 'hide': fade.set(o, 0); break; case 'toggle': var flag = this.retrieve('fade:flag', this.get('opacity') == 1); fade.start(o, (flag) ? 0 : 1); this.store('fade:flag', !flag); toggle = true; break; default: fade.start(o, arguments); } if (!toggle) this.eliminate('fade:flag'); return this; }, highlight: function(start, end){ if (!end){ end = this.retrieve('highlight:original', this.getStyle('background-color')); end = (end == 'transparent') ? '#fff' : end; } var tween = this.get('tween'); tween.start('background-color', start || '#ffff88', end).chain(function(){ this.setStyle('background-color', this.retrieve('highlight:original')); tween.callChain(); }.bind(this)); return this; } }); /* Script: Fx.Morph.js Formerly Fx.Styles, effect to transition any number of CSS properties for an element using an object of rules, or CSS based selector rules. License: MIT-style license. */ Fx.Morph = new Class({ Extends: Fx.CSS, initialize: function(element, options){ this.element = this.subject = $(element); this.parent(options); }, set: function(now){ if (typeof now == 'string') now = this.search(now); for (var p in now) this.render(this.element, p, now[p], this.options.unit); return this; }, compute: function(from, to, delta){ var now = {}; for (var p in from) now[p] = this.parent(from[p], to[p], delta); return now; }, start: function(properties){ if (!this.check(arguments.callee, properties)) return this; if (typeof properties == 'string') properties = this.search(properties); var from = {}, to = {}; for (var p in properties){ var parsed = this.prepare(this.element, p, properties[p]); from[p] = parsed.from; to[p] = parsed.to; } return this.parent(from, to); } }); Element.Properties.morph = { set: function(options){ var morph = this.retrieve('morph'); if (morph) morph.cancel(); return this.eliminate('morph').store('morph:options', $extend({link: 'cancel'}, options)); }, get: function(options){ if (options || !this.retrieve('morph')){ if (options || !this.retrieve('morph:options')) this.set('morph', options); this.store('morph', new Fx.Morph(this, this.retrieve('morph:options'))); } return this.retrieve('morph'); } }; Element.implement({ morph: function(props){ this.get('morph').start(props); return this; } }); /* Script: Fx.Slide.js Effect to slide an element in and out of view. License: MIT-style license. */ Fx.Slide = new Class({ Extends: Fx, options: { mode: 'vertical' }, initialize: function(element, options){ this.addEvent('complete', function(){ this.open = (this.wrapper['offset' + this.layout.capitalize()] != 0); if (this.open && Browser.Engine.webkit419) this.element.dispose().inject(this.wrapper); }, true); this.element = this.subject = $(element); this.parent(options); var wrapper = this.element.retrieve('wrapper'); this.wrapper = wrapper || new Element('div', { styles: $extend(this.element.getStyles('margin', 'position'), {'overflow': 'hidden'}) }).wraps(this.element); this.element.store('wrapper', this.wrapper).setStyle('margin', 0); this.now = []; this.open = true; }, vertical: function(){ this.margin = 'margin-top'; this.layout = 'height'; this.offset = this.element.offsetHeight; }, horizontal: function(){ this.margin = 'margin-left'; this.layout = 'width'; this.offset = this.element.offsetWidth; }, set: function(now){ this.element.setStyle(this.margin, now[0]); this.wrapper.setStyle(this.layout, now[1]); return this; }, compute: function(from, to, delta){ var now = []; var x = 2; x.times(function(i){ now[i] = Fx.compute(from[i], to[i], delta); }); return now; }, start: function(how, mode){ if (!this.check(arguments.callee, how, mode)) return this; this[mode || this.options.mode](); var margin = this.element.getStyle(this.margin).toInt(); var layout = this.wrapper.getStyle(this.layout).toInt(); var caseIn = [[margin, layout], [0, this.offset]]; var caseOut = [[margin, layout], [-this.offset, 0]]; var start; switch (how){ case 'in': start = caseIn; break; case 'out': start = caseOut; break; case 'toggle': start = (this.wrapper['offset' + this.layout.capitalize()] == 0) ? caseIn : caseOut; } return this.parent(start[0], start[1]); }, slideIn: function(mode){ return this.start('in', mode); }, slideOut: function(mode){ return this.start('out', mode); }, hide: function(mode){ this[mode || this.options.mode](); this.open = false; return this.set([-this.offset, 0]); }, show: function(mode){ this[mode || this.options.mode](); this.open = true; return this.set([0, this.offset]); }, toggle: function(mode){ return this.start('toggle', mode); } }); Element.Properties.slide = { set: function(options){ var slide = this.retrieve('slide'); if (slide) slide.cancel(); return this.eliminate('slide').store('slide:options', $extend({link: 'cancel'}, options)); }, get: function(options){ if (options || !this.retrieve('slide')){ if (options || !this.retrieve('slide:options')) this.set('slide', options); this.store('slide', new Fx.Slide(this, this.retrieve('slide:options'))); } return this.retrieve('slide'); } }; Element.implement({ slide: function(how, mode){ how = how || 'toggle'; var slide = this.get('slide'), toggle; switch (how){ case 'hide': slide.hide(mode); break; case 'show': slide.show(mode); break; case 'toggle': var flag = this.retrieve('slide:flag', slide.open); slide[(flag) ? 'slideOut' : 'slideIn'](mode); this.store('slide:flag', !flag); toggle = true; break; default: slide.start(how, mode); } if (!toggle) this.eliminate('slide:flag'); return this; } }); /* Script: Fx.Scroll.js Effect to smoothly scroll any element, including the window. License: MIT-style license. */ Fx.Scroll = new Class({ Extends: Fx, options: { offset: {'x': 0, 'y': 0}, wheelStops: true }, initialize: function(element, options){ this.element = this.subject = $(element); this.parent(options); var cancel = this.cancel.bind(this, false); if ($type(this.element) != 'element') this.element = $(this.element.getDocument().body); var stopper = this.element; if (this.options.wheelStops){ this.addEvent('start', function(){ stopper.addEvent('mousewheel', cancel); }, true); this.addEvent('complete', function(){ stopper.removeEvent('mousewheel', cancel); }, true); } }, set: function(){ var now = Array.flatten(arguments); this.element.scrollTo(now[0], now[1]); }, compute: function(from, to, delta){ var now = []; var x = 2; x.times(function(i){ now.push(Fx.compute(from[i], to[i], delta)); }); return now; }, start: function(x, y){ if (!this.check(arguments.callee, x, y)) return this; var offsetSize = this.element.getSize(), scrollSize = this.element.getScrollSize(); var scroll = this.element.getScroll(), values = {x: x, y: y}; for (var z in values){ var max = scrollSize[z] - offsetSize[z]; if ($chk(values[z])) values[z] = ($type(values[z]) == 'number') ? values[z].limit(0, max) : max; else values[z] = scroll[z]; values[z] += this.options.offset[z]; } return this.parent([scroll.x, scroll.y], [values.x, values.y]); }, toTop: function(){ return this.start(false, 0); }, toLeft: function(){ return this.start(0, false); }, toRight: function(){ return this.start('right', false); }, toBottom: function(){ return this.start(false, 'bottom'); }, toElement: function(el){ var position = $(el).getPosition(this.element); return this.start(position.x, position.y); } }); /* Script: Fx.Transitions.js Contains a set of advanced transitions to be used with any of the Fx Classes. License: MIT-style license. Credits: Easing Equations by Robert Penner, , modified and optimized to be used with MooTools. */ (function(){ var old = Fx.prototype.initialize; Fx.prototype.initialize = function(options){ old.call(this, options); var trans = this.options.transition; if (typeof trans == 'string' && (trans = trans.split(':'))){ var base = Fx.Transitions; base = base[trans[0]] || base[trans[0].capitalize()]; if (trans[1]) base = base['ease' + trans[1].capitalize() + (trans[2] ? trans[2].capitalize() : '')]; this.options.transition = base; } }; })(); Fx.Transition = function(transition, params){ params = $splat(params); return $extend(transition, { easeIn: function(pos){ return transition(pos, params); }, easeOut: function(pos){ return 1 - transition(1 - pos, params); }, easeInOut: function(pos){ return (pos <= 0.5) ? transition(2 * pos, params) / 2 : (2 - transition(2 * (1 - pos), params)) / 2; } }); }; Fx.Transitions = new Hash({ linear: $arguments(0) }); Fx.Transitions.extend = function(transitions){ for (var transition in transitions) Fx.Transitions[transition] = new Fx.Transition(transitions[transition]); }; Fx.Transitions.extend({ Pow: function(p, x){ return Math.pow(p, x[0] || 6); }, Expo: function(p){ return Math.pow(2, 8 * (p - 1)); }, Circ: function(p){ return 1 - Math.sin(Math.acos(p)); }, Sine: function(p){ return 1 - Math.sin((1 - p) * Math.PI / 2); }, Back: function(p, x){ x = x[0] || 1.618; return Math.pow(p, 2) * ((x + 1) * p - x); }, Bounce: function(p){ var value; for (var a = 0, b = 1; 1; a += b, b /= 2){ if (p >= (7 - 4 * a) / 11){ value = - Math.pow((11 - 6 * a - 11 * p) / 4, 2) + b * b; break; } } return value; }, Elastic: function(p, x){ return Math.pow(2, 10 * --p) * Math.cos(20 * p * Math.PI * (x[0] || 1) / 3); } }); ['Quad', 'Cubic', 'Quart', 'Quint'].each(function(transition, i){ Fx.Transitions[transition] = new Fx.Transition(function(p){ return Math.pow(p, [i + 2]); }); }); /* Script: Request.js Powerful all purpose Request Class. Uses XMLHTTPRequest. License: MIT-style license. */ var Request = new Class({ Implements: [Chain, Events, Options], options: {/* onRequest: $empty, onSuccess: $empty, onFailure: $empty, onException: $empty,*/ url: '', data: '', headers: {}, async: true, method: 'post', link: 'ignore', isSuccess: null, emulation: true, urlEncoded: true, encoding: 'utf-8', evalScripts: false, evalResponse: false }, getXHR: function(){ return (window.XMLHttpRequest) ? new XMLHttpRequest() : ((window.ActiveXObject) ? new ActiveXObject('Microsoft.XMLHTTP') : false); }, initialize: function(options){ if (!(this.xhr = this.getXHR())) return; this.setOptions(options); this.options.isSuccess = this.options.isSuccess || this.isSuccess; this.headers = new Hash(this.options.headers).extend({ 'X-Requested-With': 'XMLHttpRequest', 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }); }, onStateChange: function(){ if (this.xhr.readyState != 4 || !this.running) return; this.running = false; this.status = 0; $try(function(){ this.status = this.xhr.status; }, this); if (this.options.isSuccess.call(this, this.status)){ this.response = {text: this.xhr.responseText, xml: this.xhr.responseXML}; this.success(this.response.text, this.response.xml); } else { this.response = {text: null, xml: null}; this.failure(); } this.xhr.onreadystatechange = $empty; }, isSuccess: function(){ return ((this.status >= 200) && (this.status < 300)); }, processScripts: function(text){ if (this.options.evalResponse || (/(ecma|java)script/).test(this.getHeader('Content-type'))) return $exec(text); return text.stripScripts(this.options.evalScripts); }, success: function(text, xml){ this.onSuccess(this.processScripts(text), xml); }, onSuccess: function(){ this.fireEvent('onComplete', arguments).fireEvent('onSuccess', arguments).callChain(); }, failure: function(){ this.onFailure(); }, onFailure: function(){ this.fireEvent('onComplete').fireEvent('onFailure', this.xhr); }, setHeader: function(name, value){ this.headers.set(name, value); return this; }, getHeader: function(name){ return $try(function(){ return this.getResponseHeader(name); }, this.xhr) || null; }, check: function(){ if (!this.running) return true; switch (this.options.link){ case 'cancel': this.cancel(); return true; case 'chain': this.chain(this.send.bind(this, arguments)); return false; } return false; }, send: function(options){ if (!this.check(options)) return this; this.running = true; var type = $type(options); if (type == 'string' || type == 'element') options = {data: options}; var old = this.options; options = $extend({data: old.data, url: old.url, method: old.method}, options); var data = options.data, url = options.url, method = options.method; switch($type(data)){ case 'element': data = $(data).toQueryString(); break; case 'object': case 'hash': data = Hash.toQueryString(data); } if (this.options.emulation && ['put', 'delete'].contains(method)){ var _method = '_method=' + method; data = (data) ? _method + '&' + data : _method; method = 'post'; } if (this.options.urlEncoded && method == 'post'){ var encoding = (this.options.encoding) ? '; charset=' + this.options.encoding : ''; this.headers.set('Content-type', 'application/x-www-form-urlencoded' + encoding); } if (data && method == 'get'){ url = url + (url.contains('?') ? '&' : '?') + data; data = null; } this.xhr.open(method.toUpperCase(), url, this.options.async); this.xhr.onreadystatechange = this.onStateChange.bind(this); this.headers.each(function(value, key){ try{ this.xhr.setRequestHeader(key, value); } catch(e){ this.fireEvent('onException', [e, key, value]); } }, this); this.fireEvent('onRequest'); this.xhr.send(data); if (!this.options.async) this.onStateChange(); return this; }, cancel: function(){ if (!this.running) return this; this.running = false; this.xhr.abort(); this.xhr.onreadystatechange = $empty; this.xhr = this.getXHR(); this.fireEvent('onCancel'); return this; } }); (function(){ var methods = {}; ['get', 'post', 'GET', 'POST', 'PUT', 'DELETE'].each(function(method){ methods[method] = function(){ var params = Array.link(arguments, {url: String.type, data: $defined}); return this.send($extend(params, {method: method.toLowerCase()})); }; }); Request.implement(methods); })(); Element.Properties.send = { get: function(options){ if (options || !this.retrieve('send')) this.set('send', options); return this.retrieve('send'); }, set: function(options){ var send = this.retrieve('send'); if (send) send.cancel(); return this.store('send', new Request($extend({ data: this, link: 'cancel', method: this.get('method') || 'post', url: this.get('action') }, options))); } }; Element.implement({ send: function(url){ var sender = this.get('send'); sender.send({data: this, url: url || sender.options.url}); return this; } }); Object.toQueryString = Hash.toQueryString; var XHR = new Class({ Extends: Request, options: { update: false }, initialize: function(url, options){ arguments.callee.parent(options); this.url = url; }, request: function(data){ return this.send(this.url, data || this.options.data); }, send: function(url, data){ if (!this.check(url, data)) return this; return arguments.callee.parent({url: url, data: data}); }, success: function(text, xml){ text = this.processScripts(text); if (this.options.update) $(this.options.update).empty().set('html', text); this.onSuccess(text, xml); }, failure: function(){ this.fireEvent('onFailure', this.xhr); } }); var Ajax = XHR; /* Script: Request.HTML.js Extends the basic Request Class with additional methods for interacting with HTML responses. License: MIT-style license. */ Request.HTML = new Class({ Extends: Request, options: { update: false, evalScripts: true, filter: false }, processHTML: function(text){ var match = text.match(/]*>([\s\S]*?)<\/body>/i); return (match) ? match[1] : text; }, success: function(text){ var opts = this.options, res = this.response; res.html = this.processHTML(text).stripScripts(function(script){ res.javascript = script; }); var node = new Element('div', {html: res.html}); res.elements = node.getElements('*'); res.tree = (opts.filter) ? res.elements.filterBy(opts.filter) : $A(node.childNodes).filter(function(el){ return ($type(el) != 'whitespace'); }); if (opts.update) $(opts.update).empty().adopt(res.tree); if (opts.evalScripts) $exec(res.javascript); this.onSuccess(res.tree, res.elements, res.html, res.javascript); } }); Element.Properties.load = { get: function(options){ if (options || !this.retrieve('load')) this.set('load', options); return this.retrieve('load'); }, set: function(options){ var load = this.retrieve('load'); if (load) load.cancel(); return this.store('load', new Request.HTML($extend({link: 'cancel', update: this, method: 'get'}, options))); } }; Element.implement({ load: function(){ this.get('load').send(Array.link(arguments, {data: Object.type, url: String.type})); return this; } }); /* Script: Request.JSON.js Extends the basic Request Class with additional methods for sending and receiving JSON data. License: MIT-style license. */ Request.JSON = new Class({ Extends: Request, options: { secure: true }, initialize: function(options){ arguments.callee.parent(options); this.headers.extend({'Accept': 'application/json', 'X-Request': 'JSON'}); }, success: function(text){ this.response.json = JSON.decode(text, this.options.secure); this.onSuccess(this.response.json, text); } }); JSON.Remote = new Class({ options: { key: 'json' }, Extends: Request.JSON, initialize: function(url, options){ arguments.callee.parent(options); this.onComplete = $empty; this.url = url; }, send: function(data){ if (!this.check(data)) return this; return arguments.callee.parent({url: this.url, data: {json: Json.encode(data)}}); }, failure: function(){ this.fireEvent('onFailure', this.xhr); } }); /* Script: Drag.js The base Drag Class. Can be used to drag and resize Elements using mouse events. License: MIT-style license. */ var Drag = new Class({ Implements: [Events, Options], options: {/* onBeforeStart: $empty, onStart: $empty, onDrag: $empty, onCancel: $empty, onComplete: $empty,*/ snap: 6, unit: 'px', grid: false, style: true, limit: false, handle: false, invert: false, preventDefault: false, modifiers: {x: 'left', y: 'top'} }, initialize: function(){ var params = Array.link(arguments, {'options': Object.type, 'element': $defined}); this.element = $(params.element); this.document = this.element.getDocument(); this.setOptions(params.options || {}); var htype = $type(this.options.handle); this.handles = (htype == 'array' || htype == 'collection') ? $$(this.options.handle) : $(this.options.handle) || this.element; this.mouse = {'now': {}, 'pos': {}}; this.value = {'start': {}, 'now': {}}; this.selection = (Browser.Engine.trident) ? 'selectstart' : 'mousedown'; this.bound = { start: this.start.bind(this), check: this.check.bind(this), drag: this.drag.bind(this), stop: this.stop.bind(this), cancel: this.cancel.bind(this), eventStop: $lambda(false) }; this.attach(); }, attach: function(){ this.handles.addEvent('mousedown', this.bound.start); return this; }, detach: function(){ this.handles.removeEvent('mousedown', this.bound.start); return this; }, start: function(event){ if (this.options.preventDefault) event.preventDefault(); this.fireEvent('beforeStart', this.element); this.mouse.start = event.page; var limit = this.options.limit; this.limit = {'x': [], 'y': []}; for (var z in this.options.modifiers){ if (!this.options.modifiers[z]) continue; if (this.options.style) this.value.now[z] = this.element.getStyle(this.options.modifiers[z]).toInt(); else this.value.now[z] = this.element[this.options.modifiers[z]]; if (this.options.invert) this.value.now[z] *= -1; this.mouse.pos[z] = event.page[z] - this.value.now[z]; if (limit && limit[z]){ for (var i = 2; i--; i){ if ($chk(limit[z][i])) this.limit[z][i] = $lambda(limit[z][i])(); } } } if ($type(this.options.grid) == 'number') this.options.grid = {'x': this.options.grid, 'y': this.options.grid}; this.document.addEvents({mousemove: this.bound.check, mouseup: this.bound.cancel}); this.document.addEvent(this.selection, this.bound.eventStop); }, check: function(event){ if (this.options.preventDefault) event.preventDefault(); var distance = Math.round(Math.sqrt(Math.pow(event.page.x - this.mouse.start.x, 2) + Math.pow(event.page.y - this.mouse.start.y, 2))); if (distance > this.options.snap){ this.cancel(); this.document.addEvents({ mousemove: this.bound.drag, mouseup: this.bound.stop }); this.fireEvent('start', this.element).fireEvent('snap', this.element); } }, drag: function(event){ if (this.options.preventDefault) event.preventDefault(); this.mouse.now = event.page; for (var z in this.options.modifiers){ if (!this.options.modifiers[z]) continue; this.value.now[z] = this.mouse.now[z] - this.mouse.pos[z]; if (this.options.invert) this.value.now[z] *= -1; if (this.options.limit && this.limit[z]){ if ($chk(this.limit[z][1]) && (this.value.now[z] > this.limit[z][1])){ this.value.now[z] = this.limit[z][1]; } else if ($chk(this.limit[z][0]) && (this.value.now[z] < this.limit[z][0])){ this.value.now[z] = this.limit[z][0]; } } if (this.options.grid[z]) this.value.now[z] -= (this.value.now[z] % this.options.grid[z]); if (this.options.style) this.element.setStyle(this.options.modifiers[z], this.value.now[z] + this.options.unit); else this.element[this.options.modifiers[z]] = this.value.now[z]; } this.fireEvent('drag', this.element); }, cancel: function(event){ this.document.removeEvent('mousemove', this.bound.check); this.document.removeEvent('mouseup', this.bound.cancel); if (event){ this.document.removeEvent(this.selection, this.bound.eventStop); this.fireEvent('cancel', this.element); } }, stop: function(event){ this.document.removeEvent(this.selection, this.bound.eventStop); this.document.removeEvent('mousemove', this.bound.drag); this.document.removeEvent('mouseup', this.bound.stop); if (event) this.fireEvent('complete', this.element); } }); Element.implement({ makeResizable: function(options){ return new Drag(this, $merge({modifiers: {'x': 'width', 'y': 'height'}}, options)); } }); /* Script: Drag.Move.js A Drag extension that provides support for the constraining of draggables to containers and droppables. License: MIT-style license. */ Drag.Move = new Class({ Extends: Drag, options: { droppables: [], container: false }, initialize: function(element, options){ this.parent(element, options); this.droppables = $$(this.options.droppables); this.container = $(this.options.container); if (this.container && $type(this.container) != 'element') this.container = $(this.container.getDocument().body); element = this.element; var current = element.getStyle('position'); var position = (current != 'static') ? current : 'absolute'; if (element.getStyle('left') == 'auto' || element.getStyle('top') == 'auto') element.position(element.getPosition(element.offsetParent)); element.setStyle('position', position); this.addEvent('start', function(){ this.checkDroppables(); }, true); }, start: function(event){ if (this.container){ var el = this.element, cont = this.container, ccoo = cont.getCoordinates(el.offsetParent), cps = {}, ems = {}; ['top', 'right', 'bottom', 'left'].each(function(pad){ cps[pad] = cont.getStyle('padding-' + pad).toInt(); ems[pad] = el.getStyle('margin-' + pad).toInt(); }, this); var width = el.offsetWidth + ems.left + ems.right, height = el.offsetHeight + ems.top + ems.bottom; var x = [ccoo.left + cps.left, ccoo.right - cps.right - width]; var y = [ccoo.top + cps.top, ccoo.bottom - cps.bottom - height]; this.options.limit = {x: x, y: y}; } this.parent(event); }, checkAgainst: function(el){ el = el.getCoordinates(); var now = this.mouse.now; return (now.x > el.left && now.x < el.right && now.y < el.bottom && now.y > el.top); }, checkDroppables: function(){ var overed = this.droppables.filter(this.checkAgainst, this).getLast(); if (this.overed != overed){ if (this.overed) this.fireEvent('leave', [this.element, this.overed]); if (overed){ this.overed = overed; this.fireEvent('enter', [this.element, overed]); } else { this.overed = null; } } }, drag: function(event){ this.parent(event); if (this.droppables.length) this.checkDroppables(); }, stop: function(event){ this.checkDroppables(); this.fireEvent('drop', [this.element, this.overed]); this.overed = null; return this.parent(event); } }); Element.implement({ makeDraggable: function(options){ return new Drag.Move(this, options); } }); /* Script: Sortables.js Class for creating a drag and drop sorting interface for lists of items. License: MIT-style license. Note: Sortables requires an XHTML doctype. */ var Sortables = new Class({ Implements: [Events, Options], options: {/* onSort: $empty, onStart: $empty, onComplete: $empty,*/ snap: 4, handle: false, revert: false, constrain: false, cloneOpacity: 0.7, elementOpacity: 0.3 }, initialize: function(lists, options){ this.setOptions(options); this.elements = []; this.lists = []; this.idle = true; this.addLists($$($(lists) || lists)); if (this.options.revert) this.effect = new Fx.Morph(null, $merge({duration: 250, link: 'cancel'}, this.options.revert)); }, attach: function(){ this.addLists(this.lists); return this; }, detach: function(){ this.lists = this.removeLists(this.lists); return this; }, addItems: function(){ Array.flatten(arguments).each(function(element){ this.elements.push(element); var start = element.retrieve('sortables:start', this.start.bindWithEvent(this, element)); var insert = element.retrieve('sortables:insert', this.insert.bind(this, element)); (this.options.handle ? element.getElement(this.options.handle) || element : element).addEvent('mousedown', start); element.addEvent('over', insert); }, this); return this; }, addLists: function(){ Array.flatten(arguments).each(function(list){ this.lists.push(list); this.addItems(list.getChildren()); list.addEvent('over', list.retrieve('sortables:insert', this.insert.bind(this, [list, 'inside']))); }, this); return this; }, removeItems: function(){ var elements = []; Array.flatten(arguments).each(function(element){ elements.push(element); this.elements.remove(element); var start = element.retrieve('sortables:start'); var insert = element.retrieve('sortables:insert'); (this.options.handle ? element.getElement(this.options.handle) || element : element).removeEvent('mousedown', start); element.removeEvent('over', insert); }, this); return elements; }, removeLists: function(){ var lists = []; Array.flatten(arguments).each(function(list){ lists.push(list); this.lists.remove(list); this.removeItems(list.getChildren()); list.removeEvent('over', list.retrieve('sortables:insert')); }, this); return lists; }, getClone: function(element){ return element.clone(true).setStyles({ 'margin': '0px', 'position': 'absolute', 'visibility': 'hidden' }).inject(this.list).position(element.getRelativePosition()); }, getDroppables: function(){ var droppables = this.list.getChildren(); if (!this.options.constrain) droppables = this.lists.concat(droppables).remove(this.list); return droppables.remove(this.clone).remove(this.element); }, insert: function(element, where){ if (where) { this.list = element; this.drag.droppables = this.getDroppables(); } where = where || (this.element.getAllPrevious().contains(element) ? 'before' : 'after'); this.element.inject(element, where); this.fireEvent('onSort', [this.element, this.clone]); }, start: function(event, element){ if (!this.idle) return; this.idle = false; this.element = element; this.opacity = element.get('opacity'); this.list = element.getParent(); this.clone = this.getClone(element); this.drag = this.clone.makeDraggable({ snap: this.options.snap, container: this.options.constrain && this.clone.getParent(), droppables: this.getDroppables(), onStart: function(){ event.stop(); this.clone.set('opacity', this.options.cloneOpacity); this.element.set('opacity', this.options.elementOpacity); this.fireEvent('onStart', [this.element, this.clone]); }.bind(this), onCancel: this.reset.bind(this), onComplete: this.end.bind(this) }); this.drag.start(event); }, end: function(){ this.element.set('opacity', this.opacity); this.drag.detach(); if (this.effect){ var dim = this.element.getStyles('width', 'height'); var pos = this.clone.computePosition(this.element.getPosition(this.clone.offsetParent), this.clone.getParent().positioned()); this.effect.element = this.clone; this.effect.start({ 'top': pos.top, 'left': pos.left, 'width': dim.width, 'height': dim.height, 'opacity': 0.25 }).chain(this.reset.bind(this)); } else { this.reset(); } }, reset: function(){ this.idle = true; this.clone.destroy(); this.fireEvent('onComplete', this.element); }, serialize: function(index, modifier){ var serial = this.lists.map(function(list){ return list.getChildren().map(modifier || function(element, index){ return element.get('id'); }, this); }, this); if (this.lists.length == 1) index = 0; return $chk(index) && index >= 0 && index < this.lists.length ? serial[index] : serial; } }); /* Script: Fx.Elements.js Effect to change any number of CSS properties of any number of Elements. License: MIT-style license. */ Fx.Elements = new Class({ Extends: Fx.CSS, initialize: function(elements, options){ this.elements = this.subject = $$(elements); this.parent(options); }, compute: function(from, to, delta){ var now = {}; for (var i in from){ var iFrom = from[i], iTo = to[i], iNow = now[i] = {}; for (var p in iFrom) iNow[p] = this.parent(iFrom[p], iTo[p], delta); } return now; }, set: function(now){ for (var i in now){ var iNow = now[i]; for (var p in iNow) this.render(this.elements[i], p, iNow[p], this.options.unit); } return this; }, start: function(obj){ if (!this.check(arguments.callee, obj)) return this; var from = {}, to = {}; for (var i in obj){ var iProps = obj[i], iFrom = from[i] = {}, iTo = to[i] = {}; for (var p in iProps){ var parsed = this.prepare(this.elements[i], p, iProps[p]); iFrom[p] = parsed.from; iTo[p] = parsed.to; } } return this.parent(from, to); } }); /* Script: Accordion.js An Fx.Elements extension which allows you to easily create accordion type controls. License: MIT-style license. */ var Accordion = new Class({ Extends: Fx.Elements, options: {/* onActive: $empty, onBackground: $empty,*/ display: 0, show: false, height: true, width: false, opacity: true, fixedHeight: false, fixedWidth: false, wait: false, alwaysHide: false }, initialize: function(){ var params = Array.link(arguments, {'container': Element.type, 'options': Object.type, 'togglers': $defined, 'elements': $defined}); this.parent(params.elements, params.options); this.togglers = $$(params.togglers); this.container = $(params.container); this.previous = -1; if (this.options.alwaysHide) this.options.wait = true; if ($chk(this.options.show)){ this.options.display = false; this.previous = this.options.show; } if (this.options.start){ this.options.display = false; this.options.show = false; } this.effects = {}; if (this.options.opacity) this.effects.opacity = 'fullOpacity'; if (this.options.width) this.effects.width = this.options.fixedWidth ? 'fullWidth' : 'offsetWidth'; if (this.options.height) this.effects.height = this.options.fixedHeight ? 'fullHeight' : 'scrollHeight'; for (var i = 0, l = this.togglers.length; i < l; i++) this.addSection(this.togglers[i], this.elements[i]); this.elements.each(function(el, i){ if (this.options.show === i){ this.fireEvent('active', [this.togglers[i], el]); } else { for (var fx in this.effects) el.setStyle(fx, 0); } }, this); if ($chk(this.options.display)) this.display(this.options.display); }, addSection: function(toggler, element, pos){ toggler = $(toggler); element = $(element); var test = this.togglers.contains(toggler); var len = this.togglers.length; this.togglers.include(toggler); this.elements.include(element); if (len && (!test || pos)){ pos = $pick(pos, len - 1); toggler.inject(this.togglers[pos], 'before'); element.inject(toggler, 'after'); } else if (this.container && !test){ toggler.inject(this.container); element.inject(this.container); } var idx = this.togglers.indexOf(toggler); toggler.addEvent('click', this.display.bind(this, idx)); if (this.options.height) element.setStyles({'padding-top': 0, 'border-top': 'none', 'padding-bottom': 0, 'border-bottom': 'none'}); if (this.options.width) element.setStyles({'padding-left': 0, 'border-left': 'none', 'padding-right': 0, 'border-right': 'none'}); element.fullOpacity = 1; if (this.options.fixedWidth) element.fullWidth = this.options.fixedWidth; if (this.options.fixedHeight) element.fullHeight = this.options.fixedHeight; element.setStyle('overflow', 'hidden'); if (!test){ for (var fx in this.effects) element.setStyle(fx, 0); } return this; }, display: function(index){ index = ($type(index) == 'element') ? this.elements.indexOf(index) : index; if ((this.timer && this.options.wait) || (index === this.previous && !this.options.alwaysHide)) return this; this.previous = index; var obj = {}; this.elements.each(function(el, i){ obj[i] = {}; var hide = (i != index) || (this.options.alwaysHide && (el.offsetHeight > 0)); this.fireEvent(hide ? 'background' : 'active', [this.togglers[i], el]); for (var fx in this.effects) obj[i][fx] = hide ? 0 : el[this.effects[fx]]; }, this); return this.start(obj); } }); /* Script: Assets.js Provides methods to dynamically load JavaScript, CSS, and Image files into the document. License: MIT-style license. */ var Asset = new Hash({ javascript: function(source, properties){ properties = $extend({ onload: $empty, document: document, check: $lambda(true) }, properties); var script = new Element('script', {'src': source, 'type': 'text/javascript'}); var load = properties.onload.bind(script), check = properties.check, doc = properties.document; delete properties.onload; delete properties.check; delete properties.document; script.addEvents({ load: load, readystatechange: function(){ if (['loaded', 'complete'].contains(this.readyState)) load(); } }).setProperties(properties); if (Browser.Engine.webkit419) var checker = (function(){ if (!$try(check)) return; $clear(checker); load(); }).periodical(50); return script.inject(doc.head); }, css: function(source, properties){ return new Element('link', $merge({ 'rel': 'stylesheet', 'media': 'screen', 'type': 'text/css', 'href': source }, properties)).inject(document.head); }, image: function(source, properties){ properties = $merge({ 'onload': $empty, 'onabort': $empty, 'onerror': $empty }, properties); var image = new Image(); var element = $(image) || new Element('img'); ['load', 'abort', 'error'].each(function(name){ var type = 'on' + name; var event = properties[type]; delete properties[type]; image[type] = function(){ if (!image) return; if (!element.parentNode){ element.width = image.width; element.height = image.height; } image = image.onload = image.onabort = image.onerror = null; event.delay(1, element, element); element.fireEvent(name, element, 1); }; }); image.src = element.src = source; if (image && image.complete) image.onload.delay(1); return element.setProperties(properties); }, images: function(sources, options){ options = $merge({ onComplete: $empty, onProgress: $empty }, options); if (!sources.push) sources = [sources]; var images = []; var counter = 0; sources.each(function(source){ var img = new Asset.image(source, { 'onload': function(){ options.onProgress.call(this, counter, sources.indexOf(source)); counter++; if (counter == sources.length) options.onComplete(); } }); images.push(img); }); return new Elements(images); } }); /* Script: Scroller.js Class which scrolls the contents of any Element (including the window) when the mouse reaches the Element's boundaries. License: MIT-style license. */ var Scroller = new Class({ Implements: [Events, Options], options: { area: 20, velocity: 1, onChange: function(x, y){ this.element.scrollTo(x, y); } }, initialize: function(element, options){ this.setOptions(options); this.element = $(element); this.listener = ($type(this.element) != 'element') ? $(this.element.getDocument().body) : this.element; this.timer = null; this.coord = this.getCoords.bind(this); }, start: function(){ this.listener.addEvent('mousemove', this.coord); }, stop: function(){ this.listener.removeEvent('mousemove', this.coord); this.timer = $clear(this.timer); }, getCoords: function(event){ this.page = (this.listener.get('tag') == 'body') ? event.client : event.page; if (!this.timer) this.timer = this.scroll.periodical(50, this); }, scroll: function(){ var size = this.element.getSize(), scroll = this.element.getScroll(), pos = this.element.getPosition(), change = {'x': 0, 'y': 0}; for (var z in this.page){ if (this.page[z] < (this.options.area + pos[z]) && scroll[z] != 0) change[z] = (this.page[z] - this.options.area - pos[z]) * this.options.velocity; else if (this.page[z] + this.options.area > (size[z] + pos[z]) && size[z] + size[z] != scroll[z]) change[z] = (this.page[z] - size[z] + this.options.area - pos[z]) * this.options.velocity; } if (change.y || change.x) this.fireEvent('change', [scroll.x + change.x, scroll.y + change.y]); } }); _8http://media.lasvegasweekly.com/assets/js/mootabs1.2b.jsOdbplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver" &,-345QRSTUVWXYZ[\]^_`abcdefgklU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1!  '()$+WNS.base[NS.relative_8http://media.lasvegasweekly.com/assets/js/mootabs1.2b.js./01X$classesZ$classname12UNSURLXNSObject#A˰ 6789EWNS.keysZNS.objects:;<=>?@ABCD FGHIJKLMNOP]Last-ModifiedWExpires]Cache-Control]Accept-Ranges_Content-Encoding\Content-TypeVServer^Content-LengthTDateTEtagTVary_Thu, 29 May 2008 01:27:08 GMT_Wed, 04 Jun 2008 19:40:07 GMT\max-age=7200UbytesTgzip_text/javascriptTSpudT1370_Wed, 04 Jun 2008 17:40:07 GMT["286857917"_Accept-Encoding./hiij2_NSMutableDictionary\NSDictionary./mnno2_NSHTTPURLResponse]NSURLResponse)27:PRd  KPYdgmv&3:INSXx )69>BVpdOvar mootabs = new Class({ options: { width: '300px', height: '200px', changeTransition: 'none', //Fx.Transitions.Bounce.easeOut, duration: 1000, mouseOverClass: 'active', activateOnLoad: 'first', useAjax: false, ajaxUrl: '', ajaxOptions: {method:'get'}, ajaxLoadingText: 'Loading...' }, initialize: function(element, options) { this.setOptions(options); this.el = $(element); this.elid = element; if(this.options.changeTransition != 'none'){ this.el.setStyles({ height: this.options.height, width: this.options.width }); } this.titles = $$('#' + this.elid + ' ul li'); this.panelHeight = this.el.getSize().y - (this.titles[0].getSize().y + 4); this.panels = $$('#' + this.elid + ' .mootabs_panel'); if(this.options.changeTransition != 'none'){ this.panels.setStyle('height', this.panelHeight); } this.titles.each(function(item) { item.addEvent('click', function(){ item.removeClass(this.options.mouseOverClass); this.activate(item); }.bind(this)); item.addEvent('mouseover', function() { if(item != this.activeTitle) { item.addClass(this.options.mouseOverClass); } }.bind(this)); item.addEvent('mouseout', function() { if(item != this.activeTitle) { item.removeClass(this.options.mouseOverClass); } }.bind(this)); }.bind(this)); if(this.options.activateOnLoad != 'none'){ if(this.options.activateOnLoad != 'first'){ this.activate(this.options.activateOnLoad, true); } else { this.activate(this.titles[0], true); } } }, activate: function(tab, skipAnim){ if(! $defined(skipAnim)) { skipAnim = false; } if($type(tab) == 'string') { myTab = $$('#' + this.elid + ' ul li').filter('[title=' + tab + ']')[0]; tab = myTab; } if($type(tab) == 'element') { var newTab = tab.getProperty('title'); this.panels.removeClass('active'); this.activePanel = this.panels.filter('#' + newTab)[0]; this.activePanel.addClass('active'); if(this.options.changeTransition != 'none' && skipAnim==false) { this.panels.filterById(newTab).setStyle('height', 0); var changeEffect = new Fx.Elements(this.panels.filterById(newTab), {duration: this.options.duration, transition: this.options.changeTransition}); changeEffect.start({ '0': {'height': [0, this.panelHeight]} }); } this.titles.removeClass('active'); tab.addClass('active'); this.activeTitle = tab; if(this.options.useAjax) { this._getContent(); } } }, _getContent: function(){ this.activePanel.setHTML(this.options.ajaxLoadingText); var newOptions = {update: this.activePanel.getProperty('id')}; this.options.ajaxOptions = Object.extend(this.options.ajaxOptions, newOptions || {}); var tabRequest = new Ajax(this.options.ajaxUrl + '?tab=' + this.activeTitle.getProperty('title'), this.options.ajaxOptions); tabRequest.request(); }, addTab: function(title, label, content){ //the new title var newTitle = new Element('li', { 'title': title }); newTitle.appendText(label); this.titles.include(newTitle); $$('#' + this.elid + ' ul').adopt(newTitle); newTitle.addEvent('click', function() { this.activate(newTitle); }.bind(this)); newTitle.addEvent('mouseover', function() { if(newTitle != this.activeTitle) { newTitle.addClass(this.options.mouseOverClass); } }.bind(this)); newTitle.addEvent('mouseout', function() { if(newTitle != this.activeTitle) { newTitle.removeClass(this.options.mouseOverClass); } }.bind(this)); //the new panel var newPanel = new Element('div', { 'style': {'height': this.options.panelHeight}, 'id': title, 'class': 'mootabs_panel' }); if(!this.options.useAjax) { newPanel.setHTML(content); } this.panels.include(newPanel); this.el.adopt(newPanel); }, removeTab: function(title){ if(this.activeTitle.title == title) { this.activate(this.titles[0]); } $$('#' + this.elid + ' ul li').filter('[title=' + title + ']')[0].remove(); $$('#' + this.elid + ' .mootabs_panel').filter('#' + title)[0].remove(); }, next: function(){ var nextTab = this.activeTitle.getNext(); if(!nextTab) { nextTab = this.titles[0]; } this.activate(nextTab); }, previous: function(){ var previousTab = this.activeTitle.getPrevious(); if(!previousTab) { previousTab = this.titles[this.titles.length - 1]; } this.activate(previousTab); } }); mootabs.implement(new Options); !_9http://media.lasvegasweekly.com/assets/js/calendar.rc4.jsOfbplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver" &,-345QRSTUVWXYZ[\]^_`abcdefgklU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1!  '()$+WNS.base[NS.relative_9http://media.lasvegasweekly.com/assets/js/calendar.rc4.js./01X$classesZ$classname12UNSURLXNSObject#A: 6789EWNS.keysZNS.objects:;<=>?@ABCD FGHIJKLMNOP]Last-ModifiedWExpires]Cache-Control]Accept-Ranges_Content-Encoding\Content-TypeVServer^Content-LengthTDateTEtagTVary_Thu, 29 May 2008 09:05:01 GMT_Wed, 04 Jun 2008 19:40:07 GMT\max-age=7200UbytesTgzip_text/javascriptTSpudT9164_Wed, 04 Jun 2008 17:40:07 GMT\"1065132249"_Accept-Encoding./hiij2_NSMutableDictionary\NSDictionary*./mnno2_NSHTTPURLResponse]NSURLResponse)27:PRd  LQZehnw'4;JOTYy +8;@DXpfO*// Calendar: a Javascript class for Mootools that adds accessible and unobtrusive date pickers to your form elements // Calendar RC4, Copyright (c) 2007 Aeron Glemann , MIT Style License. var Calendar = new Class({ Implements: [Events,Options], options: { blocked: [], // blocked dates classes: { calendar:'calendar', prev:'prev', next:'next', month:'month', year:'year', today:'today', invalid:'invalid', valid:'valid', inactive:'inactive', active:'active', hover:'hover', hilite:'hilite' }, days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], // days of the week starting at sunday direction: 0, // -1 past, 0 past + future, 1 future draggable: true, months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], navigation: 1, // 0 = no nav; 1 = single nav for month; 2 = dual nav for month and year offset: 0, // first day of the week: 0 = sunday, 1 = monday, etc.. onHideStart: $empty, onHideComplete: $empty, onShowStart: $empty, onShowComplete: $empty, pad: 1, // padding between multiple calendars tweak: {x: 0, y: 0}, // tweak calendar positioning relocate: $empty }, // initialize: calendar constructor // @param obj (obj) a js object containing the form elements and format strings { id: 'format', id: 'format' etc } // @param props (obj) optional properties initialize: function(obj, options) { // basic error checking if (!obj) { return false; } this.setOptions(options); this.classes = this.options.classes; // create cal element with css styles required for proper cal functioning this.calendar = new Element('div', { 'class':this.classes.calendar, 'styles': { left: '-1000px', opacity: 0, position: 'absolute', top: '-1000px', zIndex: 1000 } }).inject(document.body); this.calendar.coord = this.calendar.getCoordinates(); // iex 6 needs a transparent iframe underneath the calendar in order to not allow select elements to render through if (Browser.Engine.trident4) { this.iframe = new IFrame({ 'styles': { height: this.calendar.coord.height + 'px', left: '-1000px', position: 'absolute', top: '-1000px', width: this.calendar.coord.width + 'px', zIndex: 999 } }).inject(document.body); this.iframe.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)'; } // initialize fade method this.fx = new Fx.Tween(this.calendar,'opacity', { onStart: function() { if (this.calendar.getStyle('opacity') == 0) { // show if (Browser.Engine.trident4) { this.iframe.setStyle('display', 'block'); } this.calendar.setStyle('display', 'block'); this.fireEvent('onShowStart', this.element); } else { // hide this.fireEvent('onHideStart', this.element); } }.bind(this), onComplete: function() { if (this.calendar.getStyle('opacity') == 0) { // hidden this.calendar.setStyle('display', 'none'); if (Browser.Engine.trident4) { this.iframe.setStyle('display', 'none'); } this.fireEvent('onHideComplete', this.element); } else { // shown this.fireEvent('onShowComplete', this.element); } }.bind(this) }); // initialize drag method if (window.Drag && this.options.draggable) { this.drag = new Drag.Move(this.calendar, { onDrag: function() { if (Browser.Engine.trident4) { this.iframe.setStyles({ left: this.calendar.getStyle('left'), top: this.calendar.getStyle('top') }); } }.bind(this) }); } // create calendars array this.calendars = []; var id = 0; var d = new Date(); // today d.setDate(d.getDate() + this.options.direction.toInt()); // correct today for directional offset for (var i in obj) { var cal = { button: new Element('button', { 'type': 'button' }), el: $(i), els: [], id: id++, month: d.getMonth(), visible: false, year: d.getFullYear() }; // fix for bad element (naughty, naughty element!) if (!this.element(i, obj[i], cal)) { continue; } cal.el.addClass(this.classes.calendar); // create cal button cal.button.addClass(this.classes.calendar).addEvent('click', function(cal) { this.toggle(cal); }.pass(cal, this)).inject(cal.el,'after'); // read in default value cal.val = this.read(cal); $extend(cal, this.bounds(cal)); // abs bounds of calendar $extend(cal, this.values(cal)); // valid days, months, years this.rebuild(cal); this.calendars.push(cal); // add to cals array } }, // blocked: returns an array of blocked days for the month / year // @param cal (obj) // @returns blocked days (array) blocked: function(cal) { var blocked = []; var offset = new Date(cal.year, cal.month, 1).getDay(); // day of the week (offset) var last = new Date(cal.year, cal.month + 1, 0).getDate(); // last day of this month this.options.blocked.each(function(date) { var values = date.split(' '); for (var i = 0; i < 3; i++) { if (!values[i]) { values[i] = '*'; } // make sure blocked date contains values for at least d, m and y values[i] = values[i].contains(',') ? values[i].split(',') : new Array(values[i]); // split multiple values } if (values[2].contains(cal.year + '') || values[2].contains('*')) { if (values[1].contains(cal.month + 1 + '') || values[1].contains('*')) { values[0].each(function(val) { // if blocked value indicates this month / year if (val > 0) { blocked.push(val.toInt()); } // add date to blocked array }); if (values[3]) { // optional value for day of week values[3] = values[3].contains(',') ? values[3].split(',') : new Array(values[3]); for (var i = 0; i < last; i++) { var day = (i + offset) % 7; if (values[3].contains(day + '')) { blocked.push(i + 1); // add every date that corresponds to the blocked day of the week to the blocked array } } } } } }, this); return blocked; }, // bounds: returns the start / end bounds of the calendar // @param cal (obj) // @returns obj bounds: function(cal) { // 1. first we assume the calendar has no bounds (or a thousand years in either direction) // by default the calendar will accept a millennium in either direction var start = new Date(1000, 0, 1); // jan 1, 1000 var end = new Date(2999, 11, 31); // dec 31, 2999 // 2. but if the cal is one directional we adjust accordingly var date = new Date().getDate() + this.options.direction.toInt(); if (this.options.direction > 0) { start = new Date(); start.setDate(date + this.options.pad * cal.id); } if (this.options.direction < 0) { end = new Date(); end.setDate(date - this.options.pad * (this.calendars.length - cal.id - 1)); } // 3. then we can further filter the limits by using the pre-existing values in the selects cal.els.each(function(el) { if (el.get('tag') == 'select') { if (el.retrieve('format').test('(y|Y)')) { // search for a year select var years = []; el.getChildren().each(function(option) { // get options var values = this.unformat(option.get('value'), el.retrieve('format')); if (!years.contains(values[0])) { years.push(values[0]); } // add to years array }, this); years.sort(this.sort); if (years[0] > start.getFullYear()) { d = new Date(years[0], start.getMonth() + 1, 0); // last day of new month if (start.getDate() > d.getDate()) { start.setDate(d.getDate()); } start.setYear(years[0]); } if (years.getLast() < end.getFullYear()) { d = new Date(years.getLast(), end.getMonth() + 1, 0); // last day of new month if (end.getDate() > d.getDate()) { end.setDate(d.getDate()); } end.setYear(years.getLast()); } } if (el.retrieve('format').test('(F|m|M|n)')) { // search for a month select var months_start = []; var months_end = []; el.getChildren().each(function(option) { // get options var values = this.unformat(option.get('value'), el.retrieve('format')); if ($type(values[0]) != 'number' || values[0] == years[0]) { // if it's a year / month combo for curr year, or simply a month select if (!months_start.contains(values[1])) { months_start.push(values[1]); } // add to months array } if ($type(values[0]) != 'number' || values[0] == years.getLast()) { // if it's a year / month combo for curr year, or simply a month select if (!months_end.contains(values[1])) { months_end.push(values[1]); } // add to months array } }, this); months_start.sort(this.sort); months_end.sort(this.sort); if (months_start[0] > start.getMonth()) { d = new Date(start.getFullYear(), months_start[0] + 1, 0); // last day of new month if (start.getDate() > d.getDate()) { start.setDate(d.getDate()); } start.setMonth(months_start[0]); } if (months_end.getLast() < end.getMonth()) { d = new Date(start.getFullYear(), months_end.getLast() + 1, 0); // last day of new month if (end.getDate() > d.getDate()) { end.setDate(d.getDate()); } end.setMonth(months_end.getLast()); } } } }, this); return { 'start': start, 'end': end }; }, // caption: returns the caption element with header and navigation // @param cal (obj) // @returns caption (element) caption: function(cal) { // start by assuming navigation is allowed var navigation = { prev: { 'month': true, 'year': true }, next: { 'month': true, 'year': true } }; // if we're in an out of bounds year if (cal.year == cal.start.getFullYear()) { navigation.prev.year = false; if (cal.month == cal.start.getMonth() && this.options.navigation == 1) { navigation.prev.month = false; } } if (cal.year == cal.end.getFullYear()) { navigation.next.year = false; if (cal.month == cal.end.getMonth() && this.options.navigation == 1) { navigation.next.month = false; } } // special case of improved navigation but months array with only 1 month we can disable all month navigation if ($type(cal.months) == 'array') { if (cal.months.length == 1 && this.options.navigation == 2) { navigation.prev.month = navigation.next.month = false; } } var caption = new Element('caption'); var prev = new Element('a').addClass(this.classes.prev).appendText('\x3c'); // < var next = new Element('a').addClass(this.classes.next).appendText('\x3e'); // > if (this.options.navigation == 2) { var month = new Element('span').addClass(this.classes.month).inject(caption); if (navigation.prev.month) { prev.clone().addEvent('click', function(cal) { this.navigate(cal, 'm', -1); }.pass(cal, this)).inject(month); } month.adopt(new Element('span').appendText(this.options.months[cal.month])); if (navigation.next.month) { next.clone().addEvent('click', function(cal) { this.navigate(cal, 'm', 1); }.pass(cal, this)).inject(month); } var year = new Element('span').addClass(this.classes.year).inject(caption); if (navigation.prev.year) { prev.clone().addEvent('click', function(cal) { this.navigate(cal, 'y', -1); }.pass(cal, this)).inject(year); } year.adopt(new Element('span').appendText(cal.year)); if (navigation.next.year) { next.clone().addEvent('click', function(cal) { this.navigate(cal, 'y', 1); }.pass(cal, this)).inject(year); } } else { // 1 or 0 if (navigation.prev.month && this.options.navigation) { prev.clone().addEvent('click', function(cal) { this.navigate(cal, 'm', -1); }.pass(cal, this)).inject(caption); } caption.adopt(new Element('span').addClass(this.classes.month).appendText(this.options.months[cal.month])); caption.adopt(new Element('span').addClass(this.classes.year).appendText(cal.year)); if (navigation.next.month && this.options.navigation) { next.clone().addEvent('click', function(cal) { this.navigate(cal, 'm', 1); }.pass(cal, this)).inject(caption); } } return caption; }, // changed: run when a select value is changed // @param cal (obj) changed: function(cal) { cal.val = this.read(cal); // update calendar val from inputs $extend(cal, this.values(cal)); // update bounds - based on curr month this.rebuild(cal); // rebuild days select if (!cal.val) { return; } // in case the same date was clicked the cal has no set date we should exit if (cal.val.getDate() < cal.days[0]) { cal.val.setDate(cal.days[0]); } if (cal.val.getDate() > cal.days.getLast()) { cal.val.setDate(cal.days.getLast()); } cal.els.each(function(el) { // then we can set the value to the field el.set('value',this.format(cal.val, el.retrieve('format'))); }, this); this.check(cal); // checks other cals this.calendars.each(function(kal) { // update cal graphic if visible if (kal.visible) { this.display(kal); } }, this); }, // check: checks other calendars to make sure no overlapping values // @param cal (obj) check: function(cal) { this.calendars.each(function(kal, i) { if (kal.val) { // if calendar has value set var change = false; if (i < cal.id) { // preceding calendar var bound = new Date(Date.parse(cal.val)); bound.setDate(bound.getDate() - (this.options.pad * (cal.id - i))); if (bound < kal.val) { change = true; } } if (i > cal.id) { // following calendar var bound = new Date(Date.parse(cal.val)); bound.setDate(bound.getDate() + (this.options.pad * (i - cal.id))); if (bound > kal.val) { change = true; } } if (change) { if (kal.start > bound) { bound = kal.start; } if (kal.end < bound) { bound = kal.end; } kal.month = bound.getMonth(); kal.year = bound.getFullYear(); $extend(kal, this.values(kal)); // TODO - IN THE CASE OF SELECT MOVE TO NEAREST VALID VALUE // IN THE CASE OF INPUT DISABLE // if new date is not valid better unset cal value // otherwise it would mean incrementally checking to find the nearest valid date which could be months / years away kal.val = kal.days.contains(bound.getDate()) ? bound : null; this.write(kal); if (kal.visible) { this.display(kal); } // update cal graphic if visible } } }, this); }, // clicked: run when a valid day is clicked in the calendar // @param cal (obj) clicked: function(td, day, cal) { cal.val = (this.value(cal) == day) ? null : new Date(cal.year, cal.month, day); // set new value - if same then disable this.write(cal); // ok - in the special case that it's all selects and there's always a date no matter what (at least as far as the form is concerned) // we can't let the calendar undo a date selection - it's just not possible!! if (!cal.val) { cal.val = this.read(cal); } if (cal.val) { this.check(cal); // checks other cals this.toggle(cal); // hide cal } else { // remove active class and replace with valid td.addClass(this.classes.valid); td.removeClass(this.classes.active); } }, // display: create calendar element // @param cal (obj) display: function(cal) { // 1. header and navigation this.calendar.empty(); // init div this.calendar.className = this.classes.calendar + ' ' + this.options.months[cal.month].toLowerCase(); var div = new Element('div').inject(this.calendar); // a wrapper div to help correct browser css problems with the caption element var table = new Element('table').inject(div).adopt(this.caption(cal)); // 2. day names var thead = new Element('thead').inject(table); var tr = new Element('tr').inject(thead); for (var i = 0; i <= 6; i++) { var th = this.options.days[(i + this.options.offset) % 7]; tr.adopt(new Element('th', { 'title': th }).appendText(th.substr(0, 1))); } // 3. day numbers var tbody = new Element('tbody').inject(table); var tr = new Element('tr').inject(tbody); var d = new Date(cal.year, cal.month, 1); var offset = ((d.getDay() - this.options.offset) + 7) % 7; // day of the week (offset) var last = new Date(cal.year, cal.month + 1, 0).getDate(); // last day of this month var prev = new Date(cal.year, cal.month, 0).getDate(); // last day of previous month var active = this.value(cal); // active date (if set and within curr month) var valid = cal.days; // valid days for curr month var inactive = []; // active dates set by other calendars var hilited = []; this.calendars.each(function(kal, i) { if (kal != cal && kal.val) { if (cal.year == kal.val.getFullYear() && cal.month == kal.val.getMonth()) { inactive.push(kal.val.getDate()); } if (cal.val) { for (var day = 1; day <= last; day++) { d.setDate(day); if ((i < cal.id && d > kal.val && d < cal.val) || (i > cal.id && d > cal.val && d < kal.val)) { if (!hilited.contains(day)) { hilited.push(day); } } } } } }, this); var d = new Date(); var today = new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime(); // today obv for (var i = 1; i < 43; i++) { // 1 to 42 (6 x 7 or 6 weeks) if ((i - 1) % 7 == 0) { tr = new Element('tr').inject(tbody); } // each week is it's own table row var td = new Element('td').inject(tr); var day = i - offset; var date = new Date(cal.year, cal.month, day); var cls = ''; if (day === active) { cls = this.classes.active; } // active else if (inactive.contains(day)) { cls = this.classes.inactive; } // inactive else if (valid.contains(day)) { cls = this.classes.valid; } // valid else if (day >= 1 && day <= last) { cls = this.classes.invalid; } // invalid if (date.getTime() == today) { cls = cls + ' ' + this.classes.today; } // adds class for today if (hilited.contains(day)) { cls = cls + ' ' + this.classes.hilite; } // adds class if hilited td.addClass(cls); if (valid.contains(day)) { // if it's a valid - clickable - day we add interaction td.set('title', this.format(date, 'D M jS Y')); td.addEvents({ 'click': function(td, day, cal) { this.clicked(td, day, cal); }.pass([td, day, cal], this), 'mouseover': function(td, cls) { td.addClass(cls); }.pass([td, this.classes.hover]), 'mouseout': function(td, cls) { td.removeClass(cls); }.pass([td, this.classes.hover]) }); } // pad calendar with last days of prev month and first days of next month if (day < 1) { day = prev + day; } else if (day > last) { day = day - last; } td.appendText(day); } }, // element: helper function // @param el (string) element id // @param f (string) format string // @param cal (obj) element: function(el, f, cal) { if ($type(f) == 'object') { // in the case of multiple inputs per calendar for (var i in f) { if (!this.element(i, f[i], cal)) { return false; } } return true; } el = $(el); if (!el) { return false; } el.store('format',f); if (el.get('tag') == 'select') { // select elements allow the user to manually set the date via select option el.addEvent('change', function(cal) { this.changed(cal); }.pass(cal, this)); } else { // input (type text) elements restrict the user to only setting the date via the calendar el.set('readonly','readonly'); el.addEvent('focus', function(cal) { this.toggle(cal); }.pass(cal, this)); } cal.els.push(el); return true; }, // format: formats a date object according to passed in instructions // @param date (obj) // @param f (string) any combination of punctuation / separators and d, j, D, l, S, m, n, F, M, y, Y // @returns string format: function(date, f) { var g = ''; if (date) { var d = date.getDate(); // 1 - 31 var day = this.options.days[date.getDay()]; // Sunday - Saturday var m = date.getMonth() + 1; // 1 - 12 var month = this.options.months[date.getMonth()]; // January - December var y = date.getFullYear() + ''; // 19xx - 20xx for (var i = 0; i < f.length; i++) { var c = f.charAt(i); // format char switch(c) { // year cases case 'y': // xx - xx y = y.substr(2); case 'Y': // 19xx - 20xx g += y; break; // month cases case 'm': // 01 - 12 if (m < 10) { m = '0' + m; } case 'n': // 1 - 12 g += m; break; case 'h': // Jan - Dec month = month.substr(0, 3).toLowerCase(); case 'M': // Jan - Dec month = month.substr(0, 3); case 'F': // January - December g += month; break; // day cases case 'd': // 01 - 31 if (d < 10) { d = '0' + d; } case 'j': // 1 - 31 g += d; break; case 'D': // Sun - Sat day = day.substr(0, 3); case 'l': // Sunday - Saturday g += day; break; case 'S': // st, nd, rd or th (works well with j) if (d % 10 == 1 && d != '11') { g += 'st'; } else if (d % 10 == 2 && d != '12') { g += 'nd'; } else if (d % 10 == 3 && d != '13') { g += 'rd'; } else { g += 'th'; } break; default: g += c; } } } return g; // return format with values replaced }, // navigate: calendar navigation // @param cal (obj) // @param type (str) m or y for month or year // @param n (int) + or - for next or prev navigate: function(cal, type, n) { switch (type) { case 'm': // month if ($type(cal.months) == 'array') { var i = cal.months.indexOf(cal.month) + n; // index of current month if (i < 0 || i == cal.months.length) { // out of range if (this.options.navigation == 1) { // if type 1 nav we'll need to increment the year this.navigate(cal, 'y', n); } i = (i < 0) ? cal.months.length - 1 : 0; } cal.month = cal.months[i]; } else { var i = cal.month + n; if (i < 0 || i == 12) { if (this.options.navigation == 1) { this.navigate(cal, 'y', n); } i = (i < 0) ? 11 : 0; } cal.month = i; } break; case 'y': // year if ($type(cal.years) == 'array') { var i = cal.years.indexOf(cal.year) + n; cal.year = cal.years[i]; } else { cal.year += n; } break; } $extend(cal, this.values(cal)); if ($type(cal.months) == 'array') { // if the calendar has a months select var i = cal.months.indexOf(cal.month); // and make sure the curr months exists for the new year if (i < 0) { cal.month = cal.months[0]; } // otherwise we'll reset the month } this.display(cal); }, // read: compiles cal value based on array of inputs passed in // @param cal (obj) // @returns date (obj) or (null) read: function(cal) { var arr = [null, null, null]; cal.els.each(function(el) { // returns an array which may contain empty values var values = this.unformat(el.get('value'), el.retrieve('format')); values.each(function(val, i) { if ($type(val) == 'number') { arr[i] = val; } }); }, this); // we can update the cals month and year values if ($type(arr[0]) == 'number') { cal.year = arr[0]; } if ($type(arr[1]) == 'number') { cal.month = arr[1]; } var val = null; if (arr.every(function(i) { return $type(i) == 'number'; })) { // if valid date var last = new Date(arr[0], arr[1] + 1, 0).getDate(); // last day of month if (arr[2] > last) { arr[2] = last; } // make sure we stay within the month (ex in case default day of select is 31 and month is feb) val = new Date(arr[0], arr[1], arr[2]); } return (cal.val == val) ? null : val; // if new date matches old return null (same date clicked twice = disable) }, // rebuild: rebuilds days + months selects // @param cal (obj) rebuild: function(cal) { cal.els.each(function(el) { /* if (el.getTag() == 'select' && el.format.test('^(F|m|M|n)$')) { // special case for months-only select if (!cal.options) { cal.options = el.clone(); } // clone a copy of months select var val = (cal.val) ? cal.val.getMonth() : el.value.toInt(); el.empty(); // initialize select cal.months.each(function(month) { // create an option element var option = new Element('option', { 'selected': (val == month), 'value': this.format(new Date(1, month, 1), el.format); }).appendText(day).injectInside(el); }, this); } */ if (el.get('tag') == 'select' && el.retrieve('format').test('^(d|j)$')) { // special case for days-only select var d = this.value(cal); if (!d) { d = el.get('value').toInt(); } // if the calendar doesn't have a set value, try to use value from select el.empty(); // initialize select cal.days.each(function(day) { // create an option element var option = new Element('option', { 'value': ((el.retrieve('format') == 'd' && day < 10) ? '0' + day : day) }).appendText(day).inject(el); if(d == day){ option.set('selected','selected'); } }, this); } }, this); }, // sort: helper function for numerical sorting sort: function(a, b) { return a - b; }, // toggle: show / hide calendar // @param cal (obj) toggle: function(cal) { document.removeEvent('mousedown', this.fn); // always remove the current mousedown script first if (cal.visible) { // simply hide curr cal cal.visible = false; cal.button.removeClass(this.classes.active); // active this.fx.start('opacity', 0); //*RAL - Fx.Tween.start([property], from, [to]) } else { // otherwise show (may have to hide others) // hide cal on out-of-bounds click this.fn = function(e, cal) { var event = new Event(e); var el = $(event.target); var stop = false; while (el != document.body && el.nodeType == 1) { if (el == this.calendar) { stop = true; } this.calendars.each(function(kal) { if (kal.button == el || kal.els.contains(el)) { stop = true; } }); if (stop) { e.stop(); return false; } else { el = el.getParent(); } } this.toggle(cal); }.create({ 'arguments': cal, 'bind': this, 'event': true }); document.addEvent('mousedown', this.fn); this.calendars.each(function(kal) { if (kal == cal) { kal.visible = true; kal.button.addClass(this.classes.active); // css c-icon-active } else { kal.visible = false; kal.button.removeClass(this.classes.active); // css c-icon-active } }, this); var size = window.getScrollSize(); var coord = cal.button.getCoordinates(); var x = coord.right + this.options.tweak.x; var y = coord.top + this.options.tweak.y; // make sure the calendar doesn't open off screen (does't work in safari!?) if (x + this.calendar.coord.width > size.x) { x -= (x + this.calendar.coord.width - size.x); } if (y + this.calendar.coord.height > size.y) { y -= (y + this.calendar.coord.height - size.y); } this.calendar.setStyles({ left: x + 'px', top: y + 'px' }); if (Browser.Engine.trident4) { this.iframe.setStyles({ left: x + 'px', top: y + 'px' }); } this.display(cal); this.fx.start('opacity', 1); //*RAL - Fx.Tween.start([property], from, [to]) } }, // unformat: takes a value from an input and parses the d, m and y elements // @param val (string) // @param f (string) any combination of punctuation / separators and d, j, D, l, S, m, n, F, M, y, Y // @returns array unformat: function(val, f) { f = f.escapeRegExp(); var re = { d: '([0-9]{2})', j: '([0-9]{1,2})', D: '(' + this.options.days.map(function(day) { return day.substr(0, 3); }).join('|') + ')', l: '(' + this.options.days.join('|') + ')', S: '(st|nd|rd|th)', F: '(' + this.options.months.join('|') + ')', m: '([0-9]{2})', M: '(' + this.options.months.map(function(month) { return month.substr(0, 3); }).join('|') + ')', N: '([0-9]{1,2})', n: '([0-9]{1,2})', Y: '([0-9]{4})', y: '([0-9]{2})' }; var arr = []; // array of indexes var g = ''; // convert our format string to regexp for (var i = 0; i < f.length; i++) { var c = f.charAt(i); if (re[c]) { arr.push(c); g += re[c]; } else { g += c; } } // match against date var matches = val.match('^' + g + '$'); var dates = new Array(3); if (matches) { matches = matches.slice(1); // remove first match which is the date arr.each(function(c, i) { i = matches[i]; switch(c) { // year cases case 'y': i = '19' + i; // 2 digit year assumes 19th century (same as JS) case 'Y': dates[0] = i.toInt(); break; // month cases case 'F': i = i.substr(0, 3); case 'M': i = this.options.months.map(function(month) { return month.substr(0, 3); }).indexOf(i) + 1; case 'm': case 'n': dates[1] = i.toInt() - 1; break; // day cases case 'd': case 'j': dates[2] = i.toInt(); break; } }, this); } return dates; }, // value: returns day value of calendar if set // @param cal (obj) // @returns day (int) or null value: function(cal) { var day = null; if (cal.val) { if (cal.year == cal.val.getFullYear() && cal.month == cal.val.getMonth()) { day = cal.val.getDate(); } } return day; }, // values: returns the years, months (for curr year) and days (for curr month and year) for the calendar // @param cal (obj) // @returns obj values: function(cal) { var years, months, days; cal.els.each(function(el) { if (el.get('tag') == 'select') { if (el.retrieve('format').test('(y|Y)')) { // search for a year select years = []; el.getChildren().each(function(option) { // get options var values = this.unformat(option.get('value'), el.retrieve('format')); if (!years.contains(values[0])) { years.push(values[0]); } // add to years array }, this); years.sort(this.sort); } if (el.retrieve('format').test('(F|m|M|n|N)')) { // search for a month select months = []; // 0 - 11 should be el.getChildren().each(function(option) { // get options var values = this.unformat(option.get('value'), el.retrieve('format')); if ($type(values[0]) != 'number' || values[0] == cal.year) { // if it's a year / month combo for curr year, or simply a month select if (!months.contains(values[1])) { months.push(values[1]); } // add to months array } }, this); months.sort(this.sort); } if (el.retrieve('format').test('(d|j)') && !el.retrieve('format').test('^(d|j)$')) { // search for a day select, but NOT a days only select days = []; // 1 - 31 el.getChildren().each(function(option) { // get options var values = this.unformat(option.get('value'), el.retrieve('format')); // in the special case of days we dont want the value if its a days only select // otherwise that will screw up the options rebuilding // we will take the values if they are exact dates though if (values[0] == cal.year && values[1] == cal.month) { if (!days.contains(values[2])) { days.push(values[2]); } // add to days array } }, this); } } }, this); // we start with what would be the first and last days were there no restrictions var first = 1; var last = new Date(cal.year, cal.month + 1, 0).getDate(); // last day of the month // if we're in an out of bounds year if (cal.year == cal.start.getFullYear()) { // in the special case of improved navigation but no months array, we'll need to construct one if (months == null && this.options.navigation == 2) { months = []; for (var i = 0; i < 12; i ++) { if (i >= cal.start.getMonth()) { months.push(i); } } } // if we're in an out of bounds month if (cal.month == cal.start.getMonth()) { first = cal.start.getDate(); // first day equals day of bound } } if (cal.year == cal.end.getFullYear()) { // in the special case of improved navigation but no months array, we'll need to construct one if (months == null && this.options.navigation == 2) { months = []; for (var i = 0; i < 12; i ++) { if (i <= cal.end.getMonth()) { months.push(i); } } } if (cal.month == cal.end.getMonth()) { last = cal.end.getDate(); // last day equals day of bound } } // let's get our invalid days var blocked = this.blocked(cal); // finally we can prepare all the valid days in a neat little array if ($type(days) == 'array') { // somewhere there was a days select days = days.filter(function(day) { if (day >= first && day <= last && !blocked.contains(day)) { return day; } }); } else { // no days select we'll need to construct a valid days array days = []; for (var i = first; i <= last; i++) { if (!blocked.contains(i)) { days.push(i); } } } days.sort(this.sort); // sorting our days will give us first and last of month return { 'days': days, 'months': months, 'years': years }; }, // write: sets calendars value to form elements // @param cal (obj) write: function(cal) { this.rebuild(cal); // in the case of options, we'll need to make sure we have the correct number of days available cal.els.each(function(el) { // then we can set the value to the field el.set('value',this.format(cal.val, el.retrieve('format'))); if (this.options.relocate) { window.location = this.options.relocate + this.format(cal.val, el.retrieve('format')); } }, this); } });#$%_6http://media.lasvegasweekly.com/assets/js/swfobject.jsOcbplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver" &,-345QRSTUVWXYZ[\]^_`abcdefgklU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1!  '()$+WNS.base[NS.relative_6http://media.lasvegasweekly.com/assets/js/swfobject.js./01X$classesZ$classname12UNSURLXNSObject#A* 6789EWNS.keysZNS.objects:;<=>?@ABCD FGHIJKLMNOP]Last-ModifiedWExpires]Cache-Control]Accept-Ranges_Content-Encoding\Content-TypeVServer^Content-LengthTDateTEtagTVary_Thu, 29 May 2008 01:27:08 GMT_Wed, 04 Jun 2008 19:40:07 GMT\max-age=7200UbytesTgzip_text/javascriptTSpudT2242_Wed, 04 Jun 2008 17:40:07 GMT\"4044948021"_Accept-Encoding./hiij2_NSMutableDictionary\NSDictionaryf./mnno2_NSHTTPURLResponse]NSURLResponse)27:PRd  INWbekt}$18GLQVv (58=AUpcOf/** * SWFObject v1.5.1: Flash Player detection and embed - http://blog.deconcept.com/swfobject/ * * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License: * http://www.opensource.org/licenses/mit-license.php * */ if(typeof deconcept=="undefined"){var deconcept={};}if(typeof deconcept.util=="undefined"){deconcept.util={};}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil={};}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params={};this.variables={};this.attributes=[];if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10]||"";},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15]||"";},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=[];var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="";_19+="";var _1d=this.getParams();for(var key in _1d){_19+="";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="";}_19+="";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.majorfv.major){return true;}if(this.minorfv.minor){return true;}if(this.rev=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;'()_7http://media.lasvegasweekly.com/assets/js/swfaddress.jsOdbplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver" &,-345QRSTUVWXYZ[\]^_`abcdefgklU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1!  '()$+WNS.base[NS.relative_7http://media.lasvegasweekly.com/assets/js/swfaddress.js./01X$classesZ$classname12UNSURLXNSObject#AV 6789EWNS.keysZNS.objects:;<=>?@ABCD FGHIJKLMNOP]Last-ModifiedWExpires]Cache-Control]Accept-Ranges_Content-Encoding\Content-TypeVServer^Content-LengthTDateTEtagTVary_Thu, 29 May 2008 01:27:08 GMT_Wed, 04 Jun 2008 19:40:08 GMT\max-age=7200UbytesTgzip_text/javascriptTSpudT4168_Wed, 04 Jun 2008 17:40:08 GMT\"1630022639"_Accept-Encoding./hiij2_NSMutableDictionary\NSDictionary3./mnno2_NSHTTPURLResponse]NSURLResponse)27:PRd  JOXcflu~%29HMRWw )69>BVpdO3/** * SWFAddress 2.0: Deep linking for Flash and Ajax - http://www.asual.com/swfaddress/ * * SWFAddress is (c) 2006-2007 Rostislav Hristov and is released under the MIT License: * http://www.opensource.org/licenses/mit-license.php * */ if(typeof com=="undefined"){var com={};}if(typeof com.asual=="undefined"){com.asual={};}if(typeof com.asual.util=="undefined"){com.asual.util={};}com.asual.util.Browser=new function(){var _1=false;var _2=-1;var _3=navigator.userAgent;var _4=false;var _5=false;var _6=false;var _7=false;var _8=false;if(/MSIE/.test(_3)){_4=true;_2=parseFloat(_3.substring(_3.indexOf("MSIE")+4));_1=_2>=6;}else{if(/AppleWebKit/.test(_3)){_6=true;_2=parseFloat(_3.substring(_3.indexOf("Safari")+7));_1=_2>=312;}else{if(/Opera/.test(_3)){_7=true;_2=parseFloat(navigator.appVersion);_1=_2>=9.02;}else{if(/Camino/.test(_3)){_5=true;_2=parseFloat(_3.substring(_3.indexOf("Camino")+7));_1=_2>=1;}else{if(/Firefox/.test(_3)){_8=true;_2=parseFloat(_3.substring(_3.indexOf("Firefox")+8));_1=_2>=1;}else{if(/Netscape/.test(_3)){_8=true;_2=parseFloat(_3.substring(_3.indexOf("Netscape")+9));_1=_2>=8;}else{if(/Mozilla/.test(_3)&&/rv:/.test(_3)){_8=true;_2=parseFloat(_3.substring(_3.indexOf("rv:")+3));_1=_2>=1.8;}}}}}}}this.isSupported=function(){return _1;};this.getVersion=function(){return _2;};this.isIE=function(){return _4;};this.isSafari=function(){return _6;};this.isOpera=function(){return _7;};this.isCamino=function(){return _5;};this.isMozilla=function(){return _8;};};com.asual.util.Events=new function(){var _9=[];var _a=com.asual.util.Browser;var _b="DOMContentLoaded";if(_a.isIE()||_a.isSafari()){(function(){try{if(_a.isIE()||!/loaded|complete/.test(document.readyState)){document.documentElement.doScroll("left");}}catch(e){return setTimeout(arguments.callee,0);}for(var i=0,e;e=_9[i];i++){if(e.t==_b){e.l.call(null);}}})();}this.addListener=function(_e,_f,_10){_9.push({o:_e,t:_f,l:_10});if(_f==_b&&(_a.isIE()||_a.isSafari())){return;}if(_e.addEventListener){_e.addEventListener(_f,_10,false);}else{if(_e.attachEvent){_e.attachEvent("on"+_f,_10);}}};this.removeListener=function(obj,_12,_13){for(var i=0,e;e=_9[i];i++){if(e.o==obj&&e.t==_12&&e.l==_13){_9.splice(i,1);break;}}if(_12==_b&&(_a.isIE()||_a.isSafari())){return;}if(obj.removeEventListener){obj.removeEventListener(_12,_13,false);}else{if(obj.detachEvent){obj.detachEvent("on"+_12,_13);}}};var _16=function(){for(var i=0,evt;evt=_9[i];i++){if(evt.t!=_b){com.asual.util.Events.removeListener(evt.o,evt.t,evt.l);}}};this.addListener(window,"unload",_16);};SWFAddressEvent=function(_19){this.toString=function(){return "[object SWFAddressEvent]";};this.type=_19;this.target=[SWFAddress][0];this.value=SWFAddress.getValue();this.path=SWFAddress.getPath();this.parameters={};var _1a=SWFAddress.getParameterNames();for(var i=0,n;n=_1a[i];i++){this.parameters[n]=SWFAddress.getParameter(n);}};SWFAddressEvent.INIT="init";SWFAddressEvent.CHANGE="change";SWFAddress=new function(){var _1d=com.asual.util.Browser;var _1e=_1d.isSupported();var _d=top.document;var _h=top.history;var _l=top.location;var _22,_23,_24,_js="swfaddress.js";var _26=_d.title;var _27=_h.length;var _28=false;var _29={};var _2a=[];var _2b=[];var _2c=[];_2c["history"]=true;_2c["html"]=false;_2c["strict"]=true;_2c["tracker"]="urchinTracker";if((!_1e&&_l.href.indexOf("#")!=-1)||(_1d.isSafari()&&_1d.getVersion()<412&&_l.href.indexOf("#")!=-1&&_l.search!="")){_d.open();_d.write("");_d.close();}var _2d=function(){var _2e=_l.href.indexOf("#");if(_2e!=-1){return _l.href.substring(_2e).replace(/^#/g,"");}return "";};var _2f=_2d();var _30=function(_31,_32){if(_2c["strict"]){if(_32){if(_31.substr(0,1)!="/"){_31="/"+_31;}_31=_31.replace(/^([^\?.]*[^\/])(\?|$)/,"$1/$2").replace(/\/\//,"/");}else{if(_31==""){_31="/";}}}return _31;};var _33=function(){if(_1d.isIE()&&_d.title!=_26){SWFAddress.setTitle(_26);}};var _34=function(){if(!_28){if(_1d.isIE()){if(_2f!=_2d()){if(_1d.getVersion()<7){_l.reload();}else{SWFAddress.setValue(_2d());}}}else{if(_1d.isSafari()){if(_27!=_h.length){_27=_h.length;if(typeof _2a[_27-1]!="undefined"){_2f=_2a[_27-1];}_35();}}else{if(_2f!=_2d()){_2f=_2d();_35();}}}_33();}};var _36=function(_37){if(SWFAddress.hasEventListener(_37)){SWFAddress.dispatchEvent(new SWFAddressEvent(_37));}_37=_37.substr(0,1).toUpperCase()+_37.substring(1);if(typeof SWFAddress["on"+_37]=="function"){SWFAddress["on"+_37]();}};var _38=function(){_36("init");};var _39=function(){_36("change");};var _3a=function(){for(var i=0,id;id=_2b[i];i++){var obj=document.getElementById(id);if(obj){if(obj.parentNode&&typeof obj.parentNode.so!="undefined"){obj.parentNode.so.call("setSWFAddressValue",SWFAddress.getValue());}else{obj=(obj&&typeof obj.setSWFAddressValue!="undefined")?obj:((obj.getElementsByTagName("object")[0]&&typeof obj.getElementsByTagName("object")[0].setSWFAddressValue!="undefined")?obj.getElementsByTagName("object")[0]:((obj.getElementsByTagName("embed")[0]&&typeof obj.getElementsByTagName("embed")[0].setSWFAddressValue!="undefined")?obj.getElementsByTagName("embed")[0]:null));if(obj){obj.setSWFAddressValue(SWFAddress.getValue());}}}}};var _35=function(){_3a();_39();};var _3e=function(){if(typeof _2c["tracker"]!="undefined"&&eval("typeof "+_2c["tracker"]+" != \"undefined\"")){var fn=eval(_2c["tracker"]);if(typeof fn=="function"){fn((_l.pathname+SWFAddress.getValue()).replace(/\/\//,"/").replace(/^\/$/,""));}}};var _40=function(){var doc=_22.contentWindow.document;doc.open();doc.write("");doc.close();};var _42=function(){if(_2c["html"]){var src=_22.contentWindow.location.href;_2f=(src.indexOf("?")>-1)?src.substring(src.indexOf("?")+1):"";}else{_2f=(typeof _22.contentWindow.swfaddress!="undefined")?_22.contentWindow.swfaddress:"";}if(_2f!=_2d()){_35();_l.hash=_2f;}};var _44=function(){var _45="id=\"swfaddress\" style=\"position:absolute;top:-9999px;\"";if(_1d.isIE()){document.body.appendChild(document.createElement("div")).innerHTML="";_22=document.getElementById("swfaddress");setTimeout(function(){if(!_2c["html"]&&typeof _22.contentWindow.swfaddress=="undefined"){_40();}com.asual.util.Events.addListener(_22,"load",_42);},10);}else{if(_1d.isSafari()){if(_1d.getVersion()<412){document.body.innerHTML+="
";_23=document.getElementById("swfaddress");}if(typeof _l.swfaddress=="undefined"){_l.swfaddress={};}if(typeof _l.swfaddress[_l.pathname]!="undefined"){_2a=_l.swfaddress[_l.pathname].split(",");}}else{if(_1d.isOpera()&&_2b.length==0){document.body.innerHTML+="";}}}setTimeout(_38,1);setTimeout(_39,2);setTimeout(_3e,10);setInterval(_34,50);};this.onInit=null;this.onChange=null;this.toString=function(){return "[class SWFAddress]";};this.back=function(){_h.back();};this.forward=function(){_h.forward();};this.go=function(_46){_h.go(_46);};this.href=function(url,_48){_48=typeof _48!="undefined"?_48:"_self";switch(_48){case "_self":self.location.href=url;break;case "_top":_l.href=url;break;case "_blank":window.open(url);break;default:top.frames[_48].location.href=url;break;}};this.popup=function(url,_4a,_4b,_4c){var _4d=window.open(url,_4a,eval(_4b));eval(_4c);};this.addEventListener=function(_4e,_4f){if(typeof _29[_4e]=="undefined"){_29[_4e]=[];}_29[_4e].push(_4f);};this.removeEventListener=function(_50,_51){if(typeof _29[_50]!="undefined"){for(var i=0,l;l=_29[_50][i];i++){if(l==_51){break;}}_29[_50].splice(i,1);}};this.dispatchEvent=function(_54){if(typeof _29[_54.type]!="undefined"&&_29[_54.type].length){_54.target=this;for(var i=0,l;l=_29[_54.type][i];i++){l(_54);}return true;}return false;};this.hasEventListener=function(_57){return (typeof _29[_57]!="undefined"&&_29[_57].length>0);};this.getStrict=function(){return _2c["strict"];};this.setStrict=function(_58){_2c["strict"]=enabled;};this.getHistory=function(){return _2c["history"];};this.setHistory=function(_59){_2c["history"]=_59;};this.getTracker=function(){return _2c["tracker"];};this.setTracker=function(_5a){_2c["tracker"]=_5a;};this.getIds=function(){return _2b;};this.getId=function(_5b){return _2b[0];};this.setId=function(id){_2b[0]=id;};this.addId=function(id){this.removeId(id);_2b.push(id);};this.removeId=function(id){for(var i=0,_60;_60=_2b[i];i++){if(id==_60){_2b.splice(i,1);break;}}};this.getTitle=function(){return _d.title;};this.setTitle=function(_61){if(!_1e){return null;}if(typeof _61=="undefined"){return;}if(_61=="null"){_61="";}_26=_d.title=_61;if(_22&&_22.contentWindow){_22.contentWindow.document.title=_61;}};this.getStatus=function(){return top.status;};this.setStatus=function(_62){if(!_1e){return null;}if(typeof _62=="undefined"){return;}if(!_1d.isSafari()){if(_62=="null"){_62="";}_62=_30(_62,true);if(_62=="/"){_62="";}if(!(/http(s)?:\/\//.test(_62))){var _63=_l.href.indexOf("#");_62=(_63==-1?_l.href:_l.href.substr(0,_63))+"#"+_62;}top.status=_62;}};this.resetStatus=function(){top.status="";};this.getValue=function(){if(!_1e){return null;}return _30(_2f,false);};this.setValue=function(_64){if(!_1e){return null;}if(typeof _64=="undefined"){return;}if(_64=="null"){_64="";}_64=_30(_64,true);if(_64=="/"){_64="";}if(_2f==_64){return;}_2f=_64;_28=true;_35();_2a[_h.length]=_2f;if(_1d.isSafari()){if(_2c["history"]){_l.swfaddress[_l.pathname]=_2a.toString();_27=_h.length+1;if(_1d.getVersion()<412){if(_l.search==""){_23.action="#"+_2f;_23.submit();}}else{var evt=document.createEvent("MouseEvents");evt.initEvent("click",true,true);var _66=document.createElement("a");_66.href="#"+_2f;_66.dispatchEvent(evt);}}else{_l.replace("#"+_2f);}}else{if(_2f!=_2d()){if(_2c["history"]){_l.hash="#"+_2f;}else{_l.replace("#"+_2f);}}}if(_1d.isIE()&&_2c["history"]){if(_2c["html"]){_22.contentWindow.location.assign(_22.contentWindow.location.pathname+"?"+_2d());}else{_40();}}setTimeout(_3e,10);_28=false;};this.getPath=function(){var _67=this.getValue();if(_67.indexOf("?")!=-1){return _67.split("?")[0];}else{return _67;}};this.getQueryString=function(){var _68=this.getValue();var _69=_68.indexOf("?");if(_69!=-1&&_69<_68.length){return _68.substr(_69+1);}return "";};this.getParameter=function(_6a){var _6b=this.getValue();var _6c=_6b.indexOf("?");if(_6c!=-1){_6b=_6b.substr(_6c+1);var _6d=_6b.split("&");var p,i=_6d.length;while(i--){p=_6d[i].split("=");if(p[0]==_6a){return p[1];}}}return "";};this.getParameterNames=function(){var _70=this.getValue();var _71=_70.indexOf("?");var _72=[];if(_71!=-1){_70=_70.substr(_71+1);if(_70!=""&&_70.indexOf("=")!=-1){var _73=_70.split("&");var i=0;while(i<_73.length){_72.push(_73[i].split("=")[0]);i++;}}}return _72;};if(!_1e){return;}for(var i=1;i<_27;i++){_2a.push("");}_2a.push(_l.hash.replace(/^#/g,""));if(_1d.isIE()&&_l.hash!=_2d()){_l.hash="#"+_2d();}var _76=document.getElementsByTagName("script");for(var i=0,s;s=_76[i];i++){if(s.src.indexOf(_js)>-1){_24=String(s.src);break;}}if((qi=_24.indexOf("?"))>-1){var _78,_79=_24.substr(qi+1).split("&");for(var j=0,p;p=_79[j];j++){_78=p.split("=");if(/^(history|html|strict)$/.test(_78[0])){_2c[_78[0]]=(isNaN(_78[1])?eval(_78[1]):(parseFloat(_78[1])>0));}if(/^tracker$/.test(_78[0])){_2c[_78[0]]=_78[1];}}}if(/file:\/\//.test(_l.href)){_2c["html"]=false;}_33();com.asual.util.Events.addListener(document,"DOMContentLoaded",_44);};if(typeof swfobject!="undefined"){SWFObject=swfobject;}if(typeof FlashObject!="undefined"){SWFObject=FlashObject;}if(typeof SWFObject!="undefined"){if(SWFObject.prototype&&SWFObject.prototype.write){com.asual.SWFObjectWrite=SWFObject.prototype.write;SWFObject.prototype.write=function(){if(this.getAttribute("version").major<8){this.addVariable("$swfaddress",SWFAddress.getValue());((typeof arguments[0]=="string")?document.getElementById(arguments[0]):arguments[0]).so=this;}if(success=com.asual.SWFObjectWrite.apply(this,arguments)){SWFAddress.addId(this.getAttribute("id"));}return success;};}else{com.asual.SWFObjectRegisterObject=SWFObject.registerObject;SWFObject.registerObject=function(){com.asual.SWFObjectRegisterObject.apply(this,arguments);SWFAddress.addId(arguments[0]);};com.asual.SWFObjectCreateSWF=SWFObject.createSWF;SWFObject.createSWF=function(){com.asual.SWFObjectCreateSWF.apply(this,arguments);SWFAddress.addId(arguments[0].id);};com.asual.SWFObjectEmbedSWF=SWFObject.embedSWF;SWFObject.embedSWF=function(){com.asual.SWFObjectEmbedSWF.apply(this,arguments);SWFAddress.addId(arguments[8].id);};}}if(typeof UFO!="undefined"){com.asual.UFOCreate=UFO.create;UFO.create=function(){com.asual.UFOCreate.apply(this,arguments);SWFAddress.addId(arguments[0].id);};}if(typeof AC_FL_RunContent!="undefined"){com.asual.AC_FL_RunContent=AC_FL_RunContent;AC_FL_RunContent=function(){com.asual.AC_FL_RunContent.apply(this,arguments);for(var i=0,a;a=arguments[i];i++){if(a=="id"){SWFAddress.addId(arguments[i+1]);break;}}};}+,-._vhttp://www.google.com/jsapi?key=ABQIAAAA8L3JFDSZBbRKiOI0oC2hURSwtNgNdjbVoQUhl4Vuh6ZPoAc2oxT5b_lGL9yo-Qz3hlvX_PLfx1mTjgUutf-8O4bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver "()/012HIJKLMNOPQRSTUVWX\U$null  !V$classR$3R$8R$5R$6R$4R$7R$2R$9R$0R$1 #$%&'WNS.base[NS.relative_vhttp://www.google.com/jsapi?key=ABQIAAAA8L3JFDSZBbRKiOI0oC2hURSwtNgNdjbVoQUhl4Vuh6ZPoAc2oxT5b_lGL9yo-Qz3hlvX_PLfx1mTjg*+,-X$classesZ$classname-.UNSURLXNSObject#A!_ 3456?WNS.keysZNS.objects789:;<=> @ABCDEFG]Cache-ControlWExpiresVPragma_Content-Encoding\Content-TypeVServerTDate^Content-Length_.no-cache, no-store, max-age=0, must-revalidate_Fri, 01 Jan 1990 00:00:00 GMTXno-cacheTgzip_text/javascript; charset=utf-8WGFE/1.3_Wed, 04 Jun 2008 18:00:15 GMTT3603*+YZZ[._NSMutableDictionary\NSDictionary*+]^^_._NSHTTPURLResponse]NSURLResponse)27:PRdrw(5<AP).2F`TO(oif (!window['google']) { window['google'] = {}; } if (!window['google']['loader']) { window['google']['loader'] = {}; google.loader.ServiceBase = 'http://www.google.com/uds'; google.loader.GoogleApisBase = 'http://ajax.googleapis.com/ajax'; google.loader.ApiKey = 'ABQIAAAA8L3JFDSZBbRKiOI0oC2hURSwtNgNdjbVoQUhl4Vuh6ZPoAc2oxT5b_lGL9yo-Qz3hlvX_PLfx1mTjg'; google.loader.KeyVerified = true; google.loader.LoadFailure = false; google.loader.AdditionalParams = ''; google.loader.OriginalAppPath = 'http://www.lasvegasweekly.com/news/2008/may/22/partys-over/'; (function() { function u(a){if(a in z){return z[a]}return z[a]=navigator.userAgent.toLowerCase().indexOf(a)!=-1} var z={};function D(){return u("msie")} function E(){return u("safari")||u("konqueror")} function I(a,b){var c=function(){} ;c.prototype=b.prototype;a.G=b.prototype;a.prototype=new c} function M(a,b){var c=a._JSAPI_boundArgs||[];c=c.concat(Array.prototype.slice.call(arguments,2));if(typeof a._JSAPI_boundSelf!="undefined"){b=a._JSAPI_boundSelf}if(typeof a._JSAPI_boundFn!="undefined"){a=a._JSAPI_boundFn}var d=function(){var e=c.concat(Array.prototype.slice.call(arguments));return a.apply(b,e)} ;d._JSAPI_boundArgs=c;d._JSAPI_boundSelf=b;d._JSAPI_boundFn=a;return d} function A(a){var b=new Error(a);b.toString=function(){return this.message} ;return b} ; var f={};var v={};var F={};var S={};var r=null;var J=false;function P(a,b,c){var d=f[":"+a];if(!d){throw A("Module: '"+a+"' not found!");}else{if(c&&!c["language"]&&c["locale"]){c["language"]=c["locale"]}var e=c&&c["callback"]!=null;if(e&&!d.l()){throw A("Module: '"+a+"' must be loaded before DOM onLoad!");}else if(e){if(d.h(b,c)){window.setTimeout(c["callback"],0)}else{d.i(b,c)}}else{if(!d.h(b,c)){d.i(b,c)}}}} function X(a,b){if(b){W(a)}else{y(window,"load",a)}} function y(a,b,c){if(a.addEventListener){a.addEventListener(b,c,false)}else if(a.attachEvent){a.attachEvent("on"+b,c)}else{var d=a["on"+b];if(d!=null){a["on"+b]=N([c,d])}a["on"+b]=c}} function N(a){return function(){for(var b=0;b0){document.firstChild.doScroll("left");w()}}catch(a){window.setTimeout(G,10)}} var Q={loaded:true,complete:true};function H(){if(Q[document.readyState]){w()}else if(o.length>0){window.setTimeout(H,10)}} function w(){for(var a=0;a<\/script>')}else if(a=="css"){document.write('' )}}} function i(a,b){var c=a.split(/\./);var d=window;for(var e=0;e=0;h--){var k=c[h];if(this.b[":"+k]){c.splice(h,1)}else{this.b[":"+k]=[]}if(d){e.s(k);this.b[":"+k].push(e)}}if(c.length){if(b&&b["packages"]){b["packages"]=c.sort().join(",")}if(!b&&v[":"+this.a]!=null&&v[":"+this.a].versions[":"+a]!=null&&!google.loader.AdditionalParams&&this.initialLoad){var l=v[":"+this.a];google[this.a]=google[this.a]||{};for(var s in l.properties) {if(s&&s.charAt(0)==":"){google[this.a][s.substring(1)]=l.properties[s]}}q("script",google.loader.ServiceBase+l.path+l.js,d);if(l.css){q("css",google.loader.ServiceBase+l.path+l.css,d)}}else{q("script",this.d(a,b),d)}if(this.initialLoad){this.initialLoad=false}}} ;g.prototype.g=function(a){for(var b=0;bK?0:15000;window.setTimeout(B,d)} ;var B=n.C=function(){if(p.length){var a=new Image;a.src=google.loader.ServiceBase+"/stats?"+p.join("&")+"&nocache="+Number(new Date);p.length=0}} ;i("google.loader.recordStat",t); f[":search"]=new g("search");f[":feeds"]=new g("feeds");f[":language"]=new g("language");f[":elements"]=new g("elements");f[":maps"]=new j("maps","maps.google.com/maps?file=googleapi",true,"key","v",true,{":language":"hl",":callback":function(a){return"callback="+encodeURIComponent(a)+"&async=2"} });f[":gdata"]=new j("gdata","gd.google.com/gd/api?file=gdata.js",true,"key","v",true,{":callback":"callback"});f[":sharing"]=new j("sharing","www.google.com/s2/sharing/js",false,"key","v",false,{":locale":"hl"});f[":annotations"]=new j("annotations","www.google.com/reviews/scripts/annotations_bootstrap.js",false,"key","v",true,{":language":"hl",":country":"gl",":callback":"callback"});f[":visualization"]=new g("visualization");f[":books"]=new j("books","books.google.com/books/api.js",false,"key" ,"v",true,{":language":"hl",":callback":"callback"});f[":earth"]=new g("earth"); })() google.loader.rpl({":scriptaculous":{"versions":{":1.8.1":{"uncompressed":"scriptaculous.js","compressed":"scriptaculous.js"}},"aliases":{":1.8":"1.8.1",":1":"1.8.1"}},":mootools":{"versions":{":1.11":{"uncompressed":"mootools.js","compressed":"mootools-yui-compressed.js"}},"aliases":{":1":"1.11"}},":prototype":{"versions":{":1.6.0.2":{"uncompressed":"prototype.js","compressed":"prototype.js"}},"aliases":{":1":"1.6.0.2",":1.6":"1.6.0.2"}},":jquery":{"versions":{":1.2.3":{"uncompressed":"jquery.js","compressed":"jquery.min.js"},":1.2.6":{"uncompressed":"jquery.js","compressed":"jquery.min.js"}},"aliases":{":1":"1.2.6",":1.2":"1.2.6"}},":dojo":{"versions":{":1.1.1":{"uncompressed":"dojo/dojo.xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js"}},"aliases":{":1":"1.1.1",":1.1":"1.1.1"}}}); } 012_4http://media.lasvegasweekly.com/assets/css/small.cssObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345MNOPQRSTUVWXYZ[\]^_cdU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_4http://media.lasvegasweekly.com/assets/css/small.css./01X$classesZ$classname12UNSURLXNSObject#Aa< 6789CWNS.keysZNS.objects:;<=>?@AB DEFGHIJKLWExpires]Cache-Control]Accept-Ranges\Content-TypeVServer^Content-LengthTDateTEtag]Last-Modified_Wed, 04 Jun 2008 20:00:35 GMT\max-age=7200UbytesXtext/cssTSpudR76_Wed, 04 Jun 2008 18:00:35 GMT["286834673"_Thu, 29 May 2008 01:27:08 GMT./`aab2_NSMutableDictionary\NSDictionaryL./effg2_NSHTTPURLResponse]NSURLResponse)27:PRd  CHQ\_enwy,LY_hmphOL/* CSS Document */ .article_full p, .blog_entry p { font-size: 12px; }456_:http://media.lasvegasweekly.com/assets/css/sIFR-screen.cssO\bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver" &,-345QRSTUVWXYZ[\]^_`abcdefgklU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1!  '()$+WNS.base[NS.relative_:http://media.lasvegasweekly.com/assets/css/sIFR-screen.css./01X$classesZ$classname12UNSURLXNSObject#Aa 6789EWNS.keysZNS.objects:;<=>?@ABCD FGHIJKLMNOP]Last-ModifiedWExpires]Cache-Control]Accept-Ranges_Content-Encoding\Content-TypeVServer^Content-LengthTDateTEtagTVary_Thu, 29 May 2008 01:19:14 GMT_Wed, 04 Jun 2008 20:00:10 GMT\max-age=7200UbytesTgzipXtext/cssTSpudS622_Wed, 04 Jun 2008 18:00:10 GMT["560965373"_Accept-Encoding./hiij2_NSMutableDictionary\NSDictionary./mnno2_NSHTTPURLResponse]NSURLResponse)27:PRd  MR[fiox(5<KPUZz !.16:Np\O/*=:project scalable Inman Flash Replacement (sIFR) version 3. =:file Copyright: 2006 Mark Wubben. Author: Mark Wubben, =:history * IFR: Shaun Inman * sIFR 1: Mike Davidson, Shaun Inman and Tomas Jogin * sIFR 2: Mike Davidson, Shaun Inman, Tomas Jogin and Mark Wubben =:license This software is licensed and provided under the CC-GNU LGPL. See */ /*---- sIFR ---*/ .sIFR-flash { visibility: visible !important; margin: 0; padding: 0; background-color:#EDE6D5; } .sIFR-unloading .sIFR-flash { visibility: hidden !important; } .sIFR-replaced, .sIFR-ignore { visibility: visible !important; } .sIFR-alternate { position: absolute; left: 0; top: 0; width: 0; height: 0; display: block; overflow: hidden; } .sIFR-replaced div.sIFR-fixfocus { margin: 0pt; padding: 0pt; overflow: auto; letter-spacing: 0px; float: none; } .sIFR-active h2.sReplace { visibility: hidden; font-family: Georgia, "Times New Roman", Times, serif; line-height: 1em; font-size: 30px; clear:both; } .sIFR-root { background-color:#EDE6D5; } } /*---- Header styling ---*/ 89:_9http://media.lasvegasweekly.com/assets/css/sIFR-print.cssO[bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver" &,-345QRSTUVWXYZ[\]^_`abcdefgklU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1!  '()$+WNS.base[NS.relative_9http://media.lasvegasweekly.com/assets/css/sIFR-print.css./01X$classesZ$classname12UNSURLXNSObject#Aa 6789EWNS.keysZNS.objects:;<=>?@ABCD FGHIJKLMNOP]Last-ModifiedWExpires]Cache-Control]Accept-Ranges_Content-Encoding\Content-TypeVServer^Content-LengthTDateTEtagTVary_Thu, 29 May 2008 01:27:08 GMT_Wed, 04 Jun 2008 20:00:35 GMT\max-age=7200UbytesTgzipXtext/cssTSpudS438_Wed, 04 Jun 2008 18:00:35 GMT["555266547"_Accept-Encoding./hiij2_NSMutableDictionary\NSDictionarya./mnno2_NSHTTPURLResponse]NSURLResponse)27:PRd  LQZehnw'4;JOTYy  -059Mp[Oa/*=:project scalable Inman Flash Replacement (sIFR) version 3. =:file Copyright: 2006 Mark Wubben. Author: Mark Wubben, =:history * IFR: Shaun Inman * sIFR 1: Mike Davidson, Shaun Inman and Tomas Jogin * sIFR 2: Mike Davidson, Shaun Inman, Tomas Jogin and Mark Wubben =:license This software is licensed and provided under the CC-GNU LGPL. See */ .sIFR-flash { display : none !important; height : 0; width : 0; position : absolute; overflow : hidden; } .sIFR-alternate { visibility : visible !important; display : block !important; position : static !important; left : auto !important; top : auto !important; width : auto !important; height : auto !important; }<=>_:http://media.lasvegasweekly.com/assets/js/styleswitcher.jsOebplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver" &,-345QRSTUVWXYZ[\]^_`abcdefgklU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1!  '()$+WNS.base[NS.relative_:http://media.lasvegasweekly.com/assets/js/styleswitcher.js./01X$classesZ$classname12UNSURLXNSObject#Aah 6789EWNS.keysZNS.objects:;<=>?@ABCD FGHIJKLMNOP]Last-ModifiedWExpires]Cache-Control]Accept-Ranges_Content-Encoding\Content-TypeVServer^Content-LengthTDateTEtagTVary_Thu, 29 May 2008 01:19:14 GMT_Wed, 04 Jun 2008 20:00:10 GMT\max-age=7200UbytesTgzip_text/javascriptTSpudS608_Wed, 04 Jun 2008 18:00:10 GMT["560964735"_Accept-Encoding./hiij2_NSMutableDictionary\NSDictionary ./mnno2_NSHTTPURLResponse]NSURLResponse)27:PRd  MR[fiox(5<KPUZz *7:?CWpeO // JavaScript Document function setActiveStyleSheet(title) { var i, a, main; for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { a.disabled = true; if(a.getAttribute("title") == title) a.disabled = false; } } } function getActiveStyleSheet() { var i, a; for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title"); } return null; } function getPreferredStyleSheet() { var i, a; for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("rel").indexOf("alt") == -1 && a.getAttribute("title") ) return a.getAttribute("title"); } return null; } function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } window.onload = function(e) { var cookie = readCookie("style"); var title = cookie ? cookie : getPreferredStyleSheet(); setActiveStyleSheet(title); } window.onunload = function(e) { var title = getActiveStyleSheet(); createCookie("style", title, 365); } var cookie = readCookie("style"); var title = cookie ? cookie : getPreferredStyleSheet(); setActiveStyleSheet(title);@AB_1http://media.lasvegasweekly.com/assets/js/sifr.jsO^bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver" &,-345QRSTUVWXYZ[\]^_`abcdefgklU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1!  '()$+WNS.base[NS.relative_1http://media.lasvegasweekly.com/assets/js/sifr.js./01X$classesZ$classname12UNSURLXNSObject#Abs 6789EWNS.keysZNS.objects:;<=>?@ABCD FGHIJKLMNOP]Last-ModifiedWExpires]Cache-Control]Accept-Ranges_Content-Encoding\Content-TypeVServer^Content-LengthTDateTEtagTVary_Thu, 29 May 2008 01:19:14 GMT_Wed, 04 Jun 2008 20:00:10 GMT\max-age=7200UbytesTgzip_text/javascriptTSpudT9678_Wed, 04 Jun 2008 18:00:10 GMT\"1633523385"_Accept-Encoding./hiij2_NSMutableDictionary\NSDictionaryj./mnno2_NSHTTPURLResponse]NSURLResponse)27:PRd  DIR]`foxz ,3BGLQq  #038<Pp^Oj/*=:project scalable Inman Flash Replacement (sIFR) version 3, revision 407 =:file Copyright: 2006 Mark Wubben. Author: Mark Wubben, =:history * IFR: Shaun Inman * sIFR 1: Mike Davidson, Shaun Inman and Tomas Jogin * sIFR 2: Mike Davidson, Shaun Inman, Tomas Jogin and Mark Wubben =:license This software is licensed and provided under the CC-GNU LGPL. See */ var sIFR=new function(){var O=this;var E={ACTIVE:"sIFR-active",UNLOADING:"sIFR-unloading",REPLACED:"sIFR-replaced",IGNORE:"sIFR-ignore",ALTERNATE:"sIFR-alternate",CLASS:"sIFR-class",LAYOUT:"sIFR-layout",FLASH:"sIFR-flash",FIX_FOCUS:"sIFR-fixfocus",DUMMY:"sIFR-dummy"};E.IGNORE_CLASSES=[E.REPLACED,E.IGNORE,E.ALTERNATE];this.MIN_FONT_SIZE=6;this.MAX_FONT_SIZE=126;this.FLASH_PADDING_BOTTOM=5;this.VERSION="407";this.isActive=false;this.isEnabled=true;this.fixHover=true;this.autoInitialize=true;this.setPrefetchCookie=true;this.cookiePath="/";this.domains=[];this.forceWidth=true;this.fitExactly=false;this.forceTextTransform=true;this.useDomLoaded=true;this.useStyleCheck=false;this.hasFlashClassSet=false;this.repaintOnResize=true;this.replacements=[];var L=0;var R=false;function Z(){}function D(c){function d(e){return e.toLocaleUpperCase()}this.normalize=function(e){return e.replace(/\n|\r|\xA0/g,D.SINGLE_WHITESPACE).replace(/\s+/g,D.SINGLE_WHITESPACE)};this.textTransform=function(e,f){switch(e){case"uppercase":return f.toLocaleUpperCase();case"lowercase":return f.toLocaleLowerCase();case"capitalize":return f.replace(/^\w|\s\w/g,d)}return f};this.toHexString=function(e){if(e.charAt(0)!="#"||e.length!=4&&e.length!=7){return e}e=e.substring(1);return"0x"+(e.length==3?e.replace(/(.)(.)(.)/,"$1$1$2$2$3$3"):e)};this.toJson=function(g,f){var e="";switch(typeof (g)){case"string":e='"'+f(g)+'"';break;case"number":case"boolean":e=g.toString();break;case"object":e=[];for(var h in g){if(g[h]==Object.prototype[h]){continue}e.push('"'+h+'":'+this.toJson(g[h]))}e="{"+e.join(",")+"}";break}return e};this.convertCssArg=function(e){if(!e){return{}}if(typeof (e)=="object"){if(e.constructor==Array){e=e.join("")}else{return e}}var l={};var m=e.split("}");for(var h=0;h-1){g=g.substr(f+1);var e=h.lastIndexOf(g);if(e>-1&&(e+g.length)==h.length){return true}}return false};this.uriEncode=function(e){return encodeURI(decodeURIComponent(e))};this.delay=function(f,h,g){var e=Array.prototype.slice.call(arguments,3);setTimeout(function(){h.apply(g,e)},f)}}D.UNIT_REMOVAL_PROPERTIES={leading:true,"margin-left":true,"margin-right":true,"text-indent":true};D.SINGLE_WHITESPACE=" ";function U(e){var d=this;function c(g,j,h){var k=d.getStyleAsInt(g,j,e.ua.ie);if(k==0){k=g[h];for(var f=3;f=5.5@*/;this.ieWin=this.ie&&this.windows/*@cc_on&&@_jscript_version>=5.1@*/;this.windows=this.windows&&(!this.ie||this.ieWin);this.ieMac=this.ie&&this.macintosh/*@cc_on&&@_jscript_version<5.1@*/;this.macintosh=this.macintosh&&(!this.ie||this.ieMac);this.safari=/safari/.test(d);this.webkit=!this.konqueror&&/applewebkit/.test(d);this.khtml=this.webkit||this.konqueror;this.gecko=!this.webkit&&l=="gecko";this.ieVersion=this.ie&&/.*msie\s(\d\.\d)/.exec(d)?this.parseVersion(RegExp.$1):"0";this.operaVersion=this.opera&&/.*opera(\s|\/)(\d+\.\d+)/.exec(d)?this.parseVersion(RegExp.$2):"0";this.webkitVersion=this.webkit&&/.*applewebkit\/(\d+).*/.exec(d)?this.parseVersion(RegExp.$1):"0";this.geckoVersion=this.gecko&&/.*rv:\s*([^\)]+)\)\s+gecko/.exec(d)?this.parseVersion(RegExp.$1):"0";this.konquerorVersion=this.konqueror&&/.*konqueror\/([\d\.]+).*/.exec(d)?this.parseVersion(RegExp.$1):"0";this.flashVersion=0;if(this.ieWin){var h;var k=false;try{h=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(j){try{h=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");this.flashVersion=6;h.AllowScriptAccess="always"}catch(j){k=this.flashVersion==6}if(!k){try{h=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(j){}}}if(!k&&h){this.flashVersion=parseFloat(/([\d,?]+)/.exec(h.GetVariable("$version"))[1].replace(/,/g,"."))}}else{if(navigator.plugins&&navigator.plugins["Shockwave Flash"]){this.flashVersion=parseFloat(/(\d+\.?\d*)/.exec(navigator.plugins["Shockwave Flash"].description)[1]);var g=0;while(this.flashVersion>=H.MIN_FLASH_VERSION&&g-1){this.flashVersion=0;this.quicktime=true}g++}}}this.flash=this.flashVersion>=H.MIN_FLASH_VERSION;this.transparencySupport=this.macintosh||this.windows;this.computedStyleSupport=this.ie||!!document.defaultView.getComputedStyle;this.requiresPrefetch=this.ieWin||this.khtml;this.fixFocus=this.gecko&&this.windows;this.nativeDomLoaded=this.gecko||this.webkit&&this.webkitVersion>=this.parseVersion("525")||this.konqueror&&this.konquerorMajor>this.parseVersion("03")||this.opera;this.mustCheckStyle=this.khtml||this.opera;this.forcePageLoad=this.webkit&&this.webkitVersion=this.parseVersion("9.50"))&&(!this.webkit||this.webkitVersion>=this.parseVersion("412"))&&(!this.gecko||this.geckoVersion>=this.parseVersion("1.8.0.12"))&&(!this.konqueror)}H.MIN_FLASH_VERSION=8;function F(c){this.fix=c.ua.ieWin&&window.location.hash!="";var d;this.cache=function(){d=document.title};function e(){document.title=d}this.restore=function(){if(this.fix){setTimeout(e,0)}}}function S(f){var j=null;function g(){try{if(f.ua.ie||document.readyState!="loaded"&&document.readyState!="complete"){document.documentElement.doScroll("left")}}catch(k){return setTimeout(g,10)}c()}function c(){if(f.useStyleCheck){e()}else{if(!f.ua.mustCheckStyle){h(null,true)}}}function e(){j=f.dom.create("div",E.DUMMY);f.dom.getBody().appendChild(j);d()}function d(){if(f.dom.getComputedStyle(j,"marginLeft")=="42px"){i()}else{setTimeout(d,10)}}function i(){if(j&&j.parentNode){j.parentNode.removeChild(j)}j=null;h(null,true)}function h(k,l){f.initialize(l);if(k&&k.type=="load"){if(document.removeEventListener){document.removeEventListener("DOMContentLoaded",h,false)}if(window.removeEventListener){window.removeEventListener("load",h,false)}}}this.attach=function(){if(window.addEventListener){window.addEventListener("load",h,false)}else{window.attachEvent("onload",h)}if(!f.useDomLoaded||f.ua.forcePageLoad||f.ua.ie&&window.top!=window){return }if(f.ua.nativeDomLoaded){document.addEventListener("DOMContentLoaded",c,false)}else{if(f.ua.ie||f.ua.khtml){g()}}}}var Q="sifrFetch";function N(c){var e=false;this.fetchMovies=function(f){if(c.setPrefetchCookie&&new RegExp(";?"+Q+"=true;?").test(document.cookie)){return }try{e=true;d(f)}catch(g){if(c.debug){throw g}}if(c.setPrefetchCookie){document.cookie=Q+"=true;path="+c.cookiePath}};this.clear=function(){if(!e){return }try{var f=document.getElementsByTagName("script");for(var g=f.length-1;g>=0;g--){var h=f[g];if(h.type=="sifr/prefetch"){h.parentNode.removeChild(h)}}}catch(j){}};function d(f){for(var g=0;g<\/script>')}}}function Y(d){var c={};function e(g,f,h){return g+","+f+","+h}this.reset=function(h,p,g){var n=c[e(h,p,g)];for(var m=0;!n&&m';var m="";for(var l=0;l'}this.html=this.html.replace(/(<\/object>)/,m+"$1");j.innerHTML=this.html}d.prototype={reset:function(f,g){g=g.cloneNode(true);var e=f.parentNode;e.innerHTML=this.html;e.appendChild(g)},setSize:function(e,f){this.html=this.html.replace(e=="height"?/(height)="\d+"/:/(width)="\d+"/,'$1="'+f+'"')},injectVars:function(e,f){if(e!=this.html){return }this.html=this.html.replace(/(flashvars(=|\"\svalue=)\")[^\"]+/,"$1"+f)}}};this.errors=new Z(O);var A=this.util=new D(O);var W=this.dom=new U(O);var T=this.ua=new H(O);var G={fragmentIdentifier:new F(O),pageLoad:new S(O),prefetch:new N(O),amnesia:new Y(O)};this.__resetAmnesicMovies=G.amnesia.reset;var J={kwargs:[],replaceAll:function(d){for(var c=0;c1&&AO){f+=Math.round((AG-1)*AO)}}else{m=s;AG=1}var d=W.create("span",E.ALTERNATE);var AW=AE.cloneNode(true);AE.parentNode.appendChild(AW);for(var AT=0,AS=AW.childNodes.length;AT0){h=parseInt(h)}else{var f=g.innerHTML;g.style.visibility="visible";g.style.overflow="visible";g.style.position="static";g.style.zoom="normal";g.style.writingMode="lr-tb";g.style.width=g.style.height="auto";g.style.maxWidth=g.style.maxHeight=g.style.styleFloat="none";var i=g;var c=g.currentStyle.hasLayout;if(c){g.innerHTML='
X
X
X
';i=g.firstChild}else{g.innerHTML="X
X
X"}var e=i.getClientRects();h=e[1].bottom-e[1].top;h=Math.ceil(h*0.8);if(c){g.innerHTML='
'+f+"
";i=g.firstChild}else{g.innerHTML=f}e=i.getClientRects();d=e.length;if(c){g.innerHTML=f}g.style.visibility=g.style.width=g.style.height=g.style.maxWidth=g.style.maxHeight=g.style.overflow=g.style.styleFloat=g.style.position=g.style.zoom=g.style.writingMode=""}}}return{fontSize:h,lines:d}}function P(c,g,s){s=s||A.uriEncode;var q=[],m=[];var k=null;var e=c.childNodes;var o=false,p=false;var j=0;while(j-1){n=n.match("(\\s|^)"+E.CLASS+"-([^\\s$]*)(\\s|$)")[2]}else{n=n.match(/^([^\s]+)/)[1]}}if(n!=""){h.push('class="'+n+'"')}if(r=="a"){var d=s(f.getAttribute("href")||"");var l=f.getAttribute("target")||"";h.push('href="'+d+'"','target="'+l+'"');if(!k){k={href:d,target:l}}}m.push("<"+r+(h.length>0?" ":"")+h.join(" ")+">");p=true;if(f.hasChildNodes()){q.push(j);j=0;e=f.childNodes;continue}else{if(!/^(br|img)$/i.test(f.nodeName)){m.push("")}}}if(q.length>0&&!f.nextSibling){do{j=q.pop();e=f.parentNode.parentNode.childNodes;f=e[j];if(f){m.push("")}}while(j==e.length-1&&q.length>0)}j++}return{text:m.join("").replace(/^\s+|\s+$|\s*(
)\s*/g,"$1"),primaryLink:k||{}}}}; var parseSelector=(function(){var B=/\s*,\s*/;var A=/\s*([\s>+~(),]|^|$)\s*/g;var L=/([\s>+~,]|[^(]\+|^)([#.:@])/g;var F=/(^|\))[^\s>+~]/g;var M=/(\)|^)/;var K=/[\s#.:>+~()@]|[^\s#.:>+~()@]+/g;function H(R,P){P=P||document.documentElement;var S=R.split(B),X=[];for(var U=0;U":function(O,R){var N=[];for(var Q=0,S;Q?@AB DEFGHIJKLWExpires]Cache-Control]Accept-Ranges\Content-TypeVServer^Content-LengthTDateTEtag]Last-Modified_Tue, 25 May 2010 17:40:08 GMT_max-age=62208000UbytesYimage/gifTSpudT6952_Wed, 04 Jun 2008 17:40:08 GMT\"1406704053"_Thu, 29 May 2008 05:25:48 GMT./`aab2_NSMutableDictionary\NSDictionary(./effg2_NSHTTPURLResponse]NSURLResponse)27:PRd  bgp{~$38=Kk~1h?Yimage/gifO(GIF89ali8#Eֱpp1 */eNOƳzTEňpV! !87820RRT03 ׵^C|{|ssrrtʹᚚjkm˩JJKudX}s`,bce׬vZZ\ޕvh ڹ҄YQCCD'&&KM߼Ә촚{vJ;ƄYWdz֦˛"ma$tlYDDs΅ceeehҰ~;,! PD5fqp  ʮ^^`lmp K5'kuvxTUW"#ߩDD~~5!VXZٿ}&MMOvt;>#ʑxy|>>>#GFGono ' sF-jNϿ|R8evZi>*YQC:6-xbOOPۊ\^_`e` ѡ~QQR F1pB29:NM``bXWXoprghjihh333::.-.d^YnqPPP$!˧N!,l H*\ȰB 68Hŋ3j(.mBӱQa(S\iP )5Di͛8s*qϙRt JK)~*Y#g ,J(OXK.*W:H)l֯h:ٷZũ@/5_$0\S: D#tp!'&~I u1N H !^(!Vϰ6v!gtdzB"` ׵M_~4Ѷ C*<'H(*50kĔY9]8LՎ781G #lqMUC %!LWK$1}e'`B=6Byp * , ?T^4B%ꅛ =d",D x +D/!63(B%? +QzAM3:"@!1QԲy d/@ YqHd)BDFR!P'^0J:c"ˌQA!X!4N]h #RkT䅽C f8":P08Y'$pD3|.d}3 X;B7\#y06s"8\@1Gp*~"BATQ(ȏ $|#7.$ >iB!$p,U? Ds Ep'{-I(F찏F f E\ʄha&#Ƣ nMm [6й 0A4d$-9}TdS. ;3-n1% $'~br>Aze<΍"2xgi5g1%FU.nTИ]3V$Mfr0dU%rLF*u_*b- GO>(jOg`*!1?"!81@Zd(z(msO-ŷ"B 1)!Yf\,OrCm՞#a S~$3Uaq FjRml(8B[#xpa@H/C@0` ]B63d"(z2j5K1IlrV0A Mn.:nB]EF0$ H 17aXY2^ $ Ƌc,aX|b^n'sYX #Ľ2-7Ya"!B Y]F0&b/SiH+ s? P0-ej:#mT]d@ ưc+ H#B0= a < c^.\dC(@\\ }? $ TLfRZh >F[-QL kmX-, 4w! fXֵ*„{7FTl D1,@v&|$?**䬆)nx"քgN r@`]ĿikX ieBPL :H4>mb#)0T, ̹q?8'dv3=Y/!l0@lZߚ2E$ ^F5A ] G|ڂ:խ # O8BnTK+>4T9*.˫rwͶu0Yy7  ְ" W<~m\~S\̙7`'@ s)#7ܭx]!~n=~kBk6"xwjueշlޥ_uy&ǖb?f bΧb hK 5(aV' kjwgkwFk {x `  }{G@0Twԇp ǐbĐ^}6 $ cThmі}Ȁ a, N. % =uY40 Kw0Fw0x1 ` u'k(| !h0}pu/gxf|)fgltI> p0 VCB| BP B@ ffgk=w7s7^{v{ T] a0ʰu:/F 0cfpu[80[w ^]0f {Vr "{HkfoW8k 078s:7s w{ ЄuW Z&^0) 0)% !}Pk?)k]pB`p f9QY9{U ƈk!Pq_%_D1:G6 70h&k7IȌSIvǗ5(x~|ywk&, [_,yYZDˀsOI8xsww"  N)if@pS(Ip Q9Y2 Ry$i8k#ik9@8 @@ 1ZɒrcS!,Z8a" 2Wif7Gjj>g@w)֠` pF:@Z 7^e <] 4": y{2W&{<yk qpgfI)G j@^'@CcYgY F P (hW9ȸo(kSzHT>ـZѓG @^W Аb0gYpfY0 Gc xC?i!)yo @{ Pܨ Z* 0}mچhuc'bpl]Q@QIrs7ԉwy =WpA襅Ðp[p~㘁Ɨ ٝW)JiEڍ  ?&4F~lwhХje)ɌfdI =@칱A$z0 XumHcPb0Cfx9kixvr9"GXJ!cyuxbFزpٟYk 7"  F붖= qtK}hp)u׷Z~`(˖ a x]>@t {[0c)V_'ϫ)^Xu W@0y@ SNp>6#_)|j{怂% p  琨[aW[`g؇! }Сtjޕ <. ;I@2\ċjK aPleL\uQ?[E^|" ZZlQ^het 1bUòQh 1mlŒ^ !S!'_O] Ȁ'y<bF >8< PLNiȦKPl|0'jʧply%YQ|E<͗ȦJ\Barc\,<f MZK;͈ls\%|ri\ZdY)} <@'@P Fh ;>&`p3&0z,ˮ- ,p0 A,B) J>H"28'ڠvp@'KA z0P s (S30 $  rt !">ް4s@04 1@^Ø> p>10p0p 0z j>| k E 0m8?A@p8H(0s N' A >ڰT@ b^w O`ܗ!p&`}f 3 p'0` H ppEA(pp0 ) @ 0 N_8J^J 7ʙ ϠA .dC%NtzQ O9q;N@ (N9タl!"[#"1vBѪFy0E \z'F4;g05]q"qΥ됫 (R] r]O'AQDFW,މ,(h)74oޡ^= t⎠.8*DD߇ש@탟L15kNTSq脀;| F~)0P]g)w@ )i 9.}jO`$"j" ' 'Sp pCtX)N%{XH`z ` hHѥ=^R%肔H`db( r( . xC6ă9ᱣ8y!,Ot+ #}y"a@3F4E"gO*9`h@>pKxѣvl-1'+`2M^Ӂ+NE>vBBRRѠɼ$ z!'fa*"!</Qd\rAX+`+4bOҡWRa?@AB DEFGHIJKLWExpires]Cache-Control]Accept-Ranges\Content-TypeVServer^Content-LengthTDateTEtag]Last-Modified_Tue, 25 May 2010 18:00:11 GMT_max-age=62208000UbytesYimage/gifTSpudS156_Wed, 04 Jun 2008 18:00:11 GMT["292433621"_Thu, 29 May 2008 01:19:13 GMT./`aab2_NSMutableDictionary\NSDictionary./effg2_NSHTTPURLResponse]NSURLResponse)27:PRd  UZcnqw&+0>^qw  !h/OGIF89a |ueoj[WRHy>;4c^RJG>10+%$!oƩƻҳ!, II8cWEc1B3HӠM?PXpE`H 8Ɖc'h"_Vt&;MNFO_Fhttp://media.lasvegasweekly.com/assets/images/lvwtemp/icons/style2.gifObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345MNOPQRSTUVWXYZ[\]^_cdU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_Fhttp://media.lasvegasweekly.com/assets/images/lvwtemp/icons/style2.gif./01X$classesZ$classname12UNSURLXNSObject#Ac^ 6789CWNS.keysZNS.objects:;<=>?@AB DEFGHIJKLWExpires]Cache-Control]Accept-Ranges\Content-TypeVServer^Content-LengthTDateTEtag]Last-Modified_Tue, 25 May 2010 18:00:11 GMT_max-age=62208000UbytesYimage/gifTSpudS177_Wed, 04 Jun 2008 18:00:11 GMTZ"23998161"_Thu, 29 May 2008 01:19:13 GMT./`aab2_NSMutableDictionary\NSDictionary./effg2_NSHTTPURLResponse]NSURLResponse)27:PRd  UZcnqw&+0>^qw  h.OGIF89a WRHoj[10+JG>>;4|uec^Ryoƻ%$!Ʃҳ!, ^Iخ?@AB DEFGHIJKLWExpires]Cache-Control]Accept-Ranges\Content-TypeVServer^Content-LengthTDateTEtag]Last-Modified_Tue, 25 May 2010 18:00:35 GMT_max-age=62208000UbytesYimage/gifTSpudS203_Wed, 04 Jun 2008 18:00:35 GMT\"1092137855"_Thu, 29 May 2008 01:27:08 GMT./`aab2_NSMutableDictionary\NSDictionary./effg2_NSHTTPURLResponse]NSURLResponse)27:PRd  UZcnqw&+0>^qw "h0OGIF89a10+WRHy|uec^Roj[JG>>;4oƻƩ%$!ҳ!,xI٦r qT$V.8* DN kPYMa@B 6 PHbKJ BQ878 [kgy5 | 901At%^&;UVWX_http://media.lasvegasweekly.com/img/photos/2008/05/23/scaled.Vivant_Trypdicedit_t610.jpg?64df38a0ccab41d6a38b286543429170b15bae0fO`bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345MNOPQRSTUVWXYZ[\]^_cdU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_http://media.lasvegasweekly.com/img/photos/2008/05/23/scaled.Vivant_Trypdicedit_t610.jpg?64df38a0ccab41d6a38b286543429170b15bae0f./01X$classesZ$classname12UNSURLXNSObject#AcЅ 6789CWNS.keysZNS.objects:;<=>?@AB DEFGHIJKLWExpires]Cache-Control]Accept-Ranges\Content-TypeVServer^Content-LengthTDateTEtag]Last-Modified_Tue, 25 May 2010 18:00:35 GMT_max-age=62208000UbytesZimage/jpegTSpudU74453_Wed, 04 Jun 2008 18:00:35 GMT["191795980"_Fri, 23 May 2008 19:22:07 GMT./`aab2_NSMutableDictionary\NSDictionary"./effg2_NSHTTPURLResponse]NSURLResponse)27:PRd    "0>KRafky3@EJNbhpZimage/jpegO"JFIFC  !"$"$Cb" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?8¨qXeDXMe1O\S #X#ךڱF"4QEv[ϘsM,P챁*.J;@}hV{` ;.h@&9PzS@^w^$Xo,|q5KE?4IAGfe %SS K;G,n(XWҪ [ EelbWn7-;u8ǔX$~imRd`bF6eq7bMY-P$c>*yҚJD6A?:J W iCn?wGzϙ]M=o@Xe*[nV9pGM5K qR٥ǖDq85)6ƢfUv >bS sҵ8a^gRzfFJ2 $՛2)HIӵl|Vsu1:kcOlQV>}/ݤVԒOlC:Ұ1ޭZBD-;8O5vn?_%vv.XfjI ArpXkx>ld8Ȟ\rǞ70ܣ l0Fi3\SH@WQm*Btl6M 1rBY/4\³Dw2rT": giNWvp N8}!C9|'c͂yaK2\1nV-ܮOLU^ڢ-s*\*HQAEMb9%cۀG#RA h+!Vٟ%ޝJ 4ȊHe䑊S2y$TQ6B  ɖAU-D9j5?xy[a2ha3MܵF[$\Ȧ:đJr#3oL Wtow39P: ҌlErB~4*>qҤd =zT#I9N!tQGONzҞYddu'@^ &7$X GDƱ>NcxcHJ՞ExpN;z֐3IF^[G#.?ҟmi+w掭>bNXNk}dnu-[ܥ8#g]nRi> )~ _\Z `.y |Gg ӵ{KIX"4$ר^F]< } R_=瞵^rYVwvE<Dze[=r;^:U=H|ǷקZ'$'@~\O*bYMy(7UTRB>} $w Bګ2=V\ۀ8"Q5mn"{p%go)䌀wn-7ֱRn/Gt!q,snoꧮ:VvKtF̌p:v7IıG`yX^BrQb(sb+变j!1 NGkZUٕx T7mrETj"eEerl}:ը&1"czRKvؽ8+Y\Z4iPݭs`Qu$^ŧxK@=.7`1@\$aNZ~^# ֱ^Xa}i˔u|޽Pwm2F Fkk؏%Kx*7Z1tffT˺[1m>tx常9&?^\[3!?aS[JZG->օcA߅) ݈BIru QB"'X88ZvRfĠ@< bĶӓD 8>wжDC'T7&/co|11eZds$)^;ThՁR?2U䑒Um,0fI*DɁQbNSoѻL E=kmRPr ȹ+tdIt"q;)f ~ݎ,tss~!ozA0tk)u1?5t?뚜Ǘ3 Qs\y##I3mSҶ_2B,+E xZVAlP.v=N rQV) W/PޔZɖ X(0\$ [1Tݙ+|_ #0\lo.5ʃ9jݜOr]T&Й;~ت92oڴdM٢an zR!Vj .q&C>@Π<\g v-bHyL"u)wj~{Է6y`{;646#1qNKigb9 z8z*KsrOA3NRݡF;&b^܅ARBGFq8Z(V;sCm8\Ek#)S,yFsnh$*x%DB[rIrh01=k'&ƬY~\E yR4m;h"1ijצE:HO1.dzb-6rn+.IZT{,<0 ~f>hYe. JcɪІ{NێC23ڮA!FT#֩Iq$%\? ՘۬`9T,G#]~.4lսJKz@w(qtuPrbiˑ897l[Y%e{cۏN׽|/_ͤNKHI`W-|TgK𖚷f&;׿wQjSQwg}  ?\bUΊtBV-خF .C_VXXhxQ3Mɜ~~7y)wGGODE;ƫn ,bV2Xc{#C+NxrUs')8Q]Gs@m+yL,0V!v29?d7lJ&e#;= nRs,?R[ȭ(JIV䓊m٣`ƒ,nI4ӒաѯNNݴ*ۜu5ʑ;?<)=l $J&[zw* &{bfzQ2"A(ø#Ui&>m?.I9edT0㞆Ŧyk | hrvLk&1QJA/R lJ.|:>XI{HiT"O\֕e8FgP ӌ9m 3PCh~FNjRoV/,)rsS99C44 q֩I\W-n3I~2ǟ/%2MKn; '+h4Y0.Az~(2-7;C\k0zyX>>QN3YM gZG%k ;AXUʓC "։$Osx 5Y\ eT'F j$n.B6E;̢QRlYUc?1Jw'fUl/$n5`+<{Qt1f8)q^"#q%x]?OʴiB4/u"@o1*E Չ-$ r9|qUΤ.F,<) {vb͹t=FOYCϧjp}dV1A0~lȊ0d[YY6tҢK˹y9Zԋ4bX| Ǹ}iAdq'[(h&8 uI(WB\N}HpQc8t GZ-Xa.';#Nۄd MKrP[O-O~&\VX| BO.?^jK@iuv>CLM67̸?vaDTH I2DQdH zx^ʮ[ Vg/]uwY\*z15!G'qo[GJDl?#wSZz껠}+~U]T,3~Ʀ0[,/wǦy*ɵ;G/Rd CEżv\hV ~g%uޒЀ 2X|jĆ9nafT^Uw 㱭(y KV=rHϽ:tN]1iѧwqu=]U>=&v1;Oq45cxOaPq~y~Ү S?7D%\p:zTQ+1uhSGYrTm1zWL !z{4œj%e k20;S U6h[)``$ (qYVnlelHF7#Cso1Ӣ(3\U zt`}cZژrBczQ[َ dxl͙S2UOKk NzAfPFv_KYH!J4ztx0η~JxIbF{EsX}ǖq[z1Z͔\4m*Shח-35n^-&:רMyÏyQ@=Em|M~+(+ d̚ȴk`'gRWdžQmkv 6$qe )ʣ\c]Yh?a 97;zڒpwlZ,IeBJ47I,lMsO+o*j7QBʮ]Mx5I5N{QEAcv=O'ElBlpgR} -,eIiVhIL+kX, (j}#bvמt=gUXij0SZЩN3֬Xܮx8N93ƹqUI3 N9Z=#6Zy.3j xDE 3ǑXgYc7_ES^?C~v\wLu5'e GiQn=}'Sϳ~Y@HQGzCFAqr71x~=<):vBSzYlZr~Gk߹W2M9C>cYzأ!u| +i V>WNL0>ܓ\[zsъw<'nO O+6pW6숣P^-) []uMj?[K ;ќqd*Եt5Yt\Hԟ9wdS\VPur@G +v ~TbJ;\ ;RJ|-==Sȳ;c v`tԍbtQwr~6E^M2OOÚAt.fw,y ʑ׭Wny7gt?5!1Qr+pijW7^OoRxgP5r8OLbr&ǜ2o¼do-tr1C{wb&(x?Z_ҭKi+ ;$(ݘ{^}zjo](=Qi%\O<#sqaiVR(=} w:sg$wHx\GqUM*<nZ!dhjaa^ϯFe:X>`:5> H|˝toj| "\ۙIO#W!sW<ᄩJig Jg]K$a~t6o028}=iR]5FZ7CoƻW\3Kk)R =GP"U+ !lE af 1KZ /+6-c 7ֺIi#c̹Ek`:jȑ6s(dRyUw}%׹,|/a|/K^^wGp"`߷C $pIeFMjͪMhWpJ@#g=k204XO IhG i̋g8Ş ͎,db<oQר.W=H4'-.7txx,Ӄ! ~=MN^I f4^>8ak3M۷ob~Tնɦi\P8-y<:qTӓw:n}<. oq+JXԖ&2hlLK1;*gpFy\rizqI4muD{,L8{Vڬ.#("\.#{_~gdC!c 9 i?s3(ە3&"slFsӥ75$|Z56QN(s$s 4sAIhKDj#i~T9ON*K'}l :չ-۷+ְV-AGC:6UlԷQfa@+ߥhYٸOmhvywkeMg?8Zuqt)ibi6\=sһ] ҖWxw8s~'k`G JUB>~B:XZpVyuáXE3?ϑ+T-(FhzVV67jOWFg% 08(P ¬yB(k4SЮߺ)*T(>Թ|Ng>D6,CC~ @8V/lhr[k #GF>qZWG/#^PPu'OZzF˭N;yr;pʑG!N:VFdFqhʠ_m=(:ʹ];Tw;; m\^Xd䷸s>9?Nב$NHn=A=z5/jb s=Tv#Uycg·<]M KFeoo|=zQqZ3JXѼͻ6ec_ ^^h5 %dp u }~ywY"dܰ{5u %ӭ`hy';O_ bIEocU]I&u$^2c'?JaK3af ),X[$].;״}i,8U_&r܍uk{<‰ [lU<͛QK/-O2:]sHI,˶I’ u dPwas[/j`Y7tq^{5;r@b7in6hGYq_~Wyt p H<=glu>n%$B1/kwDhvN0Ў긙BQVўe,2oǞԭou &).!Pr~^s q+_U[AwWG5$Fʰk*K^vm*f=)V̹mCov{iF:*Q\6gr| Ưu6[Xh>iA?κ,_Cu]#G8NswCN80zקFOL84.cO.PmԟsޭM <$ʺRZłc_Swym$r+;PR7"m=x95f6hB9{8ٰr)\YEPs|,ď!N w5J*EݎD`r2{qɐ6NE\ B5LEɞCT4{Y[?\zM?Qe`ͷ>X-Ҭx{KӴ;kX @Lh[$/8=zINt` C&ua^o KpSlubz,HHR+nc}A"$e 3tkE%=캢.Vc^-ᝡE Arzǵs, k\A*㞼~]+m:7OAj\W;t/uS<G[/ۓ^LIdYZnGmFuAS4ƨp "sMdPOw^3\񛍜wFԶgs5e$9ZJط㟺zg]޹VظwN#+Y~ Sɹ[f\׵΅j\leW[PcnXFp@Vc@L>ŭZ}e{ުǷ,g!'e*6=5>qvЎoٻIm%~[cxkӯ^ZOjdNCH#SL˼"~Fq#K59A~]I-LdrG'vG$U&lc(kq.3Z*ON{S柙<Džy;@ۉ+s6}*z?ұ|W+>U j?t^?n!pk?~Ǣ׹rtzH1Lx$'*ߑKo6oXGjxfywV-F?'եk[28G>7~J=+ =h-ԁn']>)[?`!PW\+^V[ѦH'@Q2#󩴂X8;Z]]#)&"ƥaῇIi c=6³'YZ1U(b8+N4sX/+Tk|BF>J-+:N&>~[ PwE+*UyuQ⇅?V Wkv06ֱCh}kYv2HPO{ F0yΣzaGA ՖFn>*9# `~u9lO9-$%^=e#aap`DTXʈPr(S;?UO/ΨkZc&v,ItS$JѽH3u^S:YZuY1G&Yu;wŲ1dAkxKcY}W#nꯏ]}+ jԛT7$8'sPλ^vZ 'ڜٳU-/d|hܫ:Ÿtr?oXZ2K&?'Ӟ{wjՍ̤BR~arZv+ԑS8rS9rqLӤ du{dBSp&#s;φ#gsV̶~P=F)k2ૡCZn/qm$좸ef74Y25lP?*|>|F}qq]Kf&E`2z5sއi[+łq>zwi;br9\ :Њך;a# 3iAFYG;)B>EtTv.˗C(Hμ$Ψd5jK Fx [KtQb W~CttF-ڢ``UCkt rFBT21^J՞%\¬h N'i HPr}e63,?&m jYQx g]Ђ[#IKwrO: IgN[cP>n$0:qYʢHmxza33s. g # W#JpN|9*sr.`a/aѵp:``:ƻL֡Dgr>dr+|Kow9}!#\7mc$H/eux~#lRg%\uQ3c$FCu|֭|3jQHli7WW1D' ?JqE/ɑV1졷OH/>Sj)*$ 1bQz$^"Sd4g5ToS&]3x)lX91M9ުk旤|ڕP2N]95~#u:y:[b<\)ޣu~w: +ȭoO\VޚF,8\?ɮ饹k<%,~}8=%;!A|N_m={W4vu9==Ë `ܠpGQ$~>*C#1Aマz'hKe\e^#f|<ԓևi+ڷ{Nr3@SHhB\j< B S[֖c )@Tdkvswo}q&5 _z\y.R: *¯Wb ԡlxfg#$1Y]PO$H֨]xՙnͶK*X:6c\yXᄀ?R}cW;I5:h)70jH :gk6Jb-5A?PzHmb366Z'5'^ycP&F(-9 q.g%pɤm{a‚Jڧ+1,5$iQ2b}ՇϨ0 ̶[fo>GW(ޖrg1%Å\;Ip\QMk+n+3RCs&Nq;0 ch<I=ii$r]TU Yil: 7WrN63dl"S˷i-@2~f'I$/Щ)%GRzu'v_˩woH iTUKJӰa5v,=(8k%=3<}ddo\ׅ4|:ZLxFKIxae '`ֹJOj,Lq=ʪ'0"s&A  ."`nwA?Ҵ:b7И-]>9&Uߖj+[j+i#wDcM)g2;md d$Eq;J2:Ӳ'ygP.#r1}G5 muK6HLy ߎ:z&ᝣ$hW(A,V#ȷ\̙;nIEH񰄠mSפ!͞Q ~fg@vO04ֵzu88Hׯ Xק7hq]^YusgS4m<(֪ѶhU889yB17d~yP/ z+ѼIЬөb2P^JdyhΟč3djWG1)ܑ<=*I#xr08mwE#}@+û$ʱuAZvD j f,݈[0~XVHޜ^P!>7qq TtV;I7`U1EU/\[u&u; n1Z>i 4ȹo[Fy±x$2Gָgy駢DY$m 7ԩVZ-ܭ5%Q7˽s`jFA'i銽=6*3Jneʕ9$kx)$:A-,|5eKgF4N:xW H5!f~r1PcX2 IÖR/s(#>;w-ڐh*jE ~qTOθmGƞ-&=Z+P"@1vCa3~g2G@F:VCsfo$c($Үz+ h~nH\JGieqI\0H ]TU .m .5߂̌0T2f"<䙀a*1?1qT5";W mއ)jYy cuidՍ 4-Dj~-3*4RL\wټ_l!sOkEȴW˖xs(//8kS ͎QV;v)XLP\PNN9Ϻ `7d(p}Wz3ԗrH%2ܧwVuw^<}ɩ*(#-OӜw0 h!?ga,*:ʵ/n":ur/dGy-TV z=k*k^Cef wߞy9͌֓ڦ>a đҚ|S\,[ƒӊ7}ieu"A k?#76p:y1 3l6Y5U5*wj3.ՄwTԾioV8 dbHa,Nx]eX)qR'+thUebZI6 𷿷3m:ʪW?Zܲ{Wezm+> ͬNIxEr^c1]D[J1&3v=s|cgN@@-f&X+ʥ AyWinKh*JR&W mkHĠ=AVT)1S Gsޞ"2F7(2c=*;k, `ݰqgcK?Zk&iAF{KD,|jb5hi'5`"(r6>=;5^;# !mBʠWM4K$N8aYǸs;VMJk|[yTqlmj1,o4o omVI6b:Vn;4Yn-IXtl+/76I |nVZi69+07ZXRKYrau$U.N}֩Q+dyج@z arv:iCO\aNK[(䧥vG}UAqɢ[ĵ1K吣ܤg?щ.éWH?us*JES85dF6XN6fڍC$bvY&X yWQm|ک.gqp,L8 xʍݙXnJge_JH2>%Z\:KNdU[i'ydDpr;`$Rk6#A-^N $8[$9rc 嵕$VKuInn*@Y #/]J'dc9 >֟iVMsp$qoscҸbjsQ$R^s\:y$#m2UW##9B +o,J>䶰)]3Ue K k|:6];S&dObErm]'(sQk!⸻Co~TPVɯM]97: {ӵYjeJ8I-ɚ #32} 6r'v%zP6%bǻybHT7HaۻJw2(S8$ڌҽ*8QV934S,HX2;L8Y^ d2'J[fc!Q[<2JnF3[ӃJƤ$dQr9C}`ڭ4L(W򪚤i:ȅIeQgNְߕDsj"u9֝d['NҤr*ϧBx"۸3] g00NsHJAb3o_I$VWxW95MtvIĘ`$SJd-&ݤdm0s ?s%Njϔ xJ̴G4߽mMbS) 1%HBG<OCSnۘalnk6EPw&q)CZ wzZZbXoeb&~|˰H ;@y@!ےX:4b&@ N9fB3o4{HT ^FVRs+-<"6Ǿj4 &iAn~uW8NTqӦUU!P)^"<1!o> O_cSEmcvC_c8}uralD<ٵx.s1u(s.>g~ѷ+JCm0##)FEf|3!񴃶#?n^_孿̿WDoO.5C8,G!O77 %I +[(I9s@¹cv\זzKh'0usҞm#91NO ۭa W>'jH{f:aZE܉kpG!qy$wWimcUՕ,',Җ'pF'q=HΩE 5o<>M(In3ٳ#s#d6'0Ep챂IKJ^Xl%>N#H1 W ?ík3FMtfbm.Tw$giGKf\ͅYsѻ~unxhBn8C}yEF\nySUY΍G 0p<%H5Z'cPbp(c'8 qkU+ۤK,{}֯LlzzHR;`jJb\WѳȨ*$LU{.!8&Gr;cҰ>#Ch-ZY?OT:5mNV ߀5%|d_cmmS>( RDWmJڤxivZr"';d#y>XXK&s Qe-ש%f|MVVE]Z 8IG^Guj-U?%Kŵ.qo~gx_?(ަ[eFGe5_2=:$uԌk^\J`zE*-^eR]HeV=MDgV yjs722('΍2<}kXAZ0jGԍnJ:0=;˂ycw 2_9~T99*)2)bCmHi<.ߟW,xB=G⠻¹P@%Evvg;^Ww,rFAWt˴=cʒr}SY(\,h/*ϓ6v;PŲUcNM?t:YsU qU#TX suDPCaq~MVbI F`y9oCd`Ɇ?/>=?*ķk:Pu#s~}<\̹=?KEecGCvhoe 1{VIeFO2f`HV(֔I Eu>p՞n6[ E4Ҫ"u.FGj 13۹#6ʤw\8t쮷pM0Byk1Ҩ\O6Wr@mМYqB.CZA͸ af3*q7[IT?yzm.y2.yև mV;HJdR `MCFdPq v5z+Į;X2>r> ҢZ_3n;zu Y$ 2Ac ݨA'b5uIEaP(N=k[7ٝPdYYN[gbK|1$i ԖClgPZdvi4e2vMtSR[I'{bҧPUiO [m*>?Jv^مUhV(O$js4wRZ\[ Ϙڭӯurt] FryB~ݚe;BrDl[^fKio%m#U,$k!håP!G>Z{aFe[r6ӓޢ45x}Iec¾XX $J0B$^>+Phh Yw?5Z5E,ܓ=?B+ѫԚ>1bq[o^$&eێPG~ொK$PڝʋuLN :nyJƑ3RJKk k$) jK0@yܸI(M0iݿiLӣ#iHǼLA8H C㞴F+THњHWP̹vā(LȨ^0JgҶFLľx$?ȫ6o&prAYAOv!{;4D(Fd%+e+ĹTl/r+upzQkC3&QR0 v?i&Ҟ莙zqMߜ)`1ՔPT|KCLdNq  # ?ʺC_=g| {\Fl~xBAG$Noè?NZ}.[˲>} n?:Òq96ӱޕDukQb7ΣO#ⅇ4:khitsẠ̌9's+ЎbD[+dkrdX&;M3M$|sDV3(i%LAIBZ~"qK&p1KN.294XdW;z{ŭF,v>yi7+ZDS0Ngi}~.wHʞzVmF"T{WrT⬓Oxe*d0oOqY\Li#yȁָYd9c$X:ڰlʁ.\AE 腺O8vp76~ңa s\8Yc!976zsXNXܝ:^Lgk0X內u8 О՟g a:@2jxCy(#+gt]rv Oz eW,#H۴wau6dZ7K'x)HS3W0, v.6满x~r-[:3Hc,b6I 2\Β 9?.?*+f,F_;6ʶQ\2OGN!meaۊX\j9drҧrh[ LpGU.%*p[@8VgrT}=dRAZж:;[]W5ZűQ,P>p7qROj5[ md fLihJ&c#g֢ҡ,~2,suIgS2۱,$*Gbq}ES&4BM1>L{#ag {>g}5#-sF%e l Su^H_aӏzlK%%Bl&s\Z6Eiӂ.m4U.+W%᳒WhRA>]2 O [n}R>}oouq0Ae;}+鿄>&G M@9B1mWo9>sܩX 2#qrcTt3\h! 8k(2Њe qY0ouhBmwr;=NW'ڭE[>?\X @ZɎ)fq׾+Rh42}`rNNz5;FI*AEDTz)QW3df?Z2C,\?S*dsz-Жy0Un^ҪjyCNb򑃷o08!⡌50wqIڬr4އD=ercǮ}BpI%qY|9< 4{R-\`uf7jBP©~LvV!uɩ1SIڧFR \gf8cZ[[LrI ]7Scr+!X'<< %8by*QIڟ$6O6*pO|ոE5$_r\|k99X|jŲ pTesϠfشM<ǀ(j"&B[`{~U8;ݛi+#6'կONWOᨘ" 2;ơKs5- it&-$g׷T!_jJyJ]/4jlgQkRvDbX^=*o-"nJ=~\gK~hN?>ц%$IINhxW OK),Fo/?N ڵK bΡdpkCXr(-n`8cf@ʲM1=Gq I&=7w_:ϸIl\9e\޼z LZ!SA8ks\w%OjIqrʻ^#\OG݂.qB)~JI*5<S1\ٿƫݬ=/yv_z3s *(%Xx7)sZ=:W,KSD M7%U!.B~E^.m +&؏z(ԔK$ tՙ}SdqJĒE\#56}va_jp܅9=j KnS{'s`vp?;wy>=Tyq3 GStϽLy!x}2mcky3sMkT-DW-72ib]@>S6w^$̙dr2ڴf[kP0ZD$asz֮[[i2@ 5ԠGߴ 4Aq,]P+(N's^gPGG$kNUǖY)2|}-/{+DTA!{q*υ"PTvMc 9ᆚw51t}guףgcZ0s^ ]5ωv77jU7r/8~Fs^U#5RRdʺ)yk5%Fb=I_M;i![,<,JW覻㷱]ϡxQBu-n|f7nXzʬ5viBQVqÌ1ԟִYrzr:Wڶ65Q OpzMF$EGxQ gat_>}꼫6߸s ڻB>> V~0x"0\'x=TְU_{] )L^1iQ˿C0ݷ6.5̸(~\2] ST*.bz#?+ʓq|$0?ma*uFv xW0q5CG6a,/g>Y=hM$Dy[E+ ^/R-,Օn'.?ZeD[Us8-Lr*d3ʱؖޚ)ac~j̝ }3\:*=k':]!XIw9 H_ʋ EC޼7t Ij*!& bzko[5庁B<6+'ԾPKb8ɮY׼!;aP\e%L!] sjr|y'I 'zHbuءݼﴰ0h^U4_;6841O^H8F:UR2uQ9Hņy%7ا$P/ˎ=vڿ zVZ ֚J6OM8TwI㑖X~A\QG-VU=finn$SuTۧx* Kfc2W9FhG-x$XF-v-w&4!drsA+P,,ȏџʭc$$dt_o@vx$[Ѕ䕷3.E&gM86Z%I:嚽F8+XrS8ʱ. jJkYE=ԫb *Qn?m^#aUO$_]9Vf=$—UL{cUu3ew14l ʲG[0y:+=|HXʂAGJKRa^8c>;#fmqˁ#w n$mV@T"|Fx[&rO]979#TY$XyKmLX,gDq =tXReJgn[Kgck2\SrIXǫ1lυ>ԧMB$O2G*MOY^1Vҟ~XW֯fCs#yߖ9*쪮yT, 7qKJ#9ՌiTaB~R=YdXd!?$GO76mͅ*p5}ih<?0~OlF?_G1k*!WV*eOfbBе6]_Ku Dl#? "W[sG>ld~c(*-<E q޼ڸ a1$lF~MpFDTw:a#ux'LLyl[pzJ״B"ǡ5,ɖ1j/LbY Is*_KMu8'8:M.BvgX1f%(tRjsYyZ>e 1װM/qs2E )gw *ܓW'E #Gs^Zk7XZDGra`aY`N$5mJSM:̴j٤c]K9N8-ïjjזJ8`n,tWݢI|YnX?W|iIk3%Œmxg.6H]n'g9a$(#Yp6>Mz~i$̇Z[ sk Pu"K K-K aUQҼ߫ԦB'&|]#,-9 >UpYZ]I'P ;N@ҴOlY' @`OhС4Vb2nqx%A9k'ucpN ).>’ 39.a[(ܫ~qx8㏥[JD\{ªR0BPV̷ l38$Tcc9H,7f-\`bʔaԌw⤗ƾ4 Hwm$exɦ$)y2nt`zRGc =VggEIM`R v㎕{隍v/q,!G]Ak[Ԇ=KOdڬ7B7 z?9__'p-Tx$8*Ol `kec,)qv1϶W-:w]e`H {?j/|6+sӠkXϩ,54cZ?h(|gZVF/H8g2NEtl(L#ʾr=+W7QGd:U_P(Um̑nc*8=V acor.R7}:U~K\Hό-lt 4E-ʪ Ou*Rg.66.-6d'|îw7R> Udu<RxwVӒoLnmRI--=ʑ [>vK.UӃ mYw5ci)4զMJ:1ZS"J1 @8`,xXvAw&_NZ EgYL~0c7 "+G=]rJ+3kwy&H# Xf7܉#Nz_k{\:MG ܪQ7;7.nj`pּ%w&1n%$-1K ?֭(Tfv$ Z6q>߆JJR6h\Z$X(n*ĶL@թdXiUتrEd# i69Krʸ{SCXɳ,3<*^k*ڼh.֫JdNZ^H1犆73["im46@lLy78* Y17"'Td6Nvc=⧒a2 %.dl0* ԓV=IZɓ.Ҡ$E0Gp6sKƌ!2I^~g_$OT1#f@ OS9=Sv(iSeR9֬iR+1feʩ80 dPsS`id* Nr+TV:!6-\<7ɌQ0:{=Hc-3pG0BT(ѳ|T-*=IqtĘ,ODf#4rH-b5+esWq%#ɧ>YI:k\\)WrK1'sZodQY*{Ԋ |>l˸0 1h[vumuhDnWS -!QHr{s^{Z弩/X8Vv WVYFTxjؘvh(֍ֆGc*i1 ǻ d4!W ;v*w䶋*n{QQܹa'z9@?t K6ZFNSeBC1r`e랔F<@O61![\Ik'ۊf_왙bG Y}ANQYa5*3NrR3WtzQvhZ fK z%&1YGĥ3ӥkX/}T6wrͽ;@F _@k\N&ud. 97yqk ƊhOL~VY "a~֪zAz P:(g m%zڽ?!]4$ e~TpJP ^[Cg v+]JWbPRr̻҆ @=[ϥhAsiIåfI5h2$F;HRǦqj5rl(dP^QUp'kT~HU\oo z^k-BPCvBPt-8${ֿ.toad[8+;B ۻdulړc(W烴gPxkpBR(|- WkkQAMYuwxRաVIa@SxuVBTpTI5h^%:DGƠڬL?sU^4Uy?Xβ}2Q0xFC[p%w]*> UUQKFTd1ޘ3ޞ Iώ?!UfXc/噳u&21o#דJ/cO5xAֵqOsז|`nqz'zJ.,ʕU;̶S} wa/m6~yـ2[ sZٕm#i1Bw4MA#5`sp 3DG3PI$q՗~x}dګ]O#X I rF46\Geۆieϖ>^ Cl2D<ұZfa{9%PŕBRN'AXFLDIlBWI] ["5ݼyp:9i ig;F~>ERe,9?[乱r%]lgMO8珕`~jZok~۞\Aao h-L8? )?ҷ<kݕtlҀW Kϩvb35i>zIv|%>'d͵e!Xp0=u{lxAT1֑֬9O'(^N(OW:_ `{t"7?»y=y )+@9+nD{8_[ZסտI`sb=TZԵ^.%{ZGXA>}¥'+hYF.4vۼ`ގTd{d޲?һ贛y.!+InX6NFyF8#WųDhRWy矠j/^eY}5+ 法-S c$ϳƨDʪY$Wi%ͥum:˴2v۷>ZE#e:p }{*bl)Vz}*sImq3]5@le1y>[캵\DtwVWd9Wr=?R̉BktRcl. ꋨPd2 UK{.^E\MqU5_Њ%$e,0GdIlPBLbX4C|q?e:WP$,գTč` G֝bn~*}жhix+Fpqޙ&r˜?9ʌH<oZ=;pCrj˃zՀ0s֖ۙXA;PQHI150@9#^ĒjY8~hZimo三XGe9EGdb#p3xp+ZpJ& GWIמϱ2(ީ\^7ur yI`nz}y}MNNOSW-Ë5Y!M3P;(T掦@3XxuVlcM||_Ƽ5h}*LjsrFN~O٘2AU[3PK(X m /cG&>A^ ;h elgjy\2Ƭ)T]9j3Jm^ڃi5D2 - uZ6b_Z GOxw2b*$)vJ+k)mEb{ *grb[}|鳆 McEJ {iF*P{G#sw?l\ R3種 GbfeWCOqvѸupxOJU%NVD`뺔xTX Xh%##ngZ˳xM~3p~ouae|:`gbRRY$%Djwt5FѺĎOztNwʣ]jukKMri̯*v<5h,`CV% ~5n|ș$])نF,QS؏Jkxeq9U1IPTSUq,wKC95QH2i9<l,$̠~`ױc͹d6Fԧ*IiŸQ()5ei-H"0S!r?#55+KHp*f\ey8{JmQIvT}J)9qZ72M#D\yu,0G WhS'ڧ/ûx!<=ojka7w}Ur=C*S+]-* N~Ƶ#̦a ij1H?*oLIIqsϿOºEd2[<Ҹ+fYڦV\/pWkQԋ~lASxTk#' κ_D,mtɑ|B rwU<$2qӨ%'YHz1>l?zߡ݃g3scҫ#/f( p1ӷ5cPԵ eK"Kq> 7F-KY83bVI-/mO)ޕՂ(E(7.5A21ÃuvO2GlITcnGSԏj᠅;}>uimc#0_λ`AY;9`q+[q)X>Xr+suu )~y`̾OqV5OLVNrdZڶW8ʹ3{Z#K?",-Ԗ2%Mjܥhsk4Dw\#V&9RȯQu|8JL9Z l-gcRX¤.N1p{.oؚӼ Jjuq $9JAiQZ^n&[ݤp +&wt\I4Ζ`0|YfMmH7HฐҰaϽsαBy<43 $2BGҽXx/MV&{w+F^1}pEd\jFI>aF{d+h֯U3\ Af5@H:YSߒɏOQڶX x'hdH;dj:c<P;P}?W|cvִYw ?ZR8Sd*4˜0cl{ql'(xr|dG_jjg8s\M;,]OZgy/#d!N#9#QTיɈJ$k[$4{P9Z9Iux'Rhا`7'V\[/>G; Hc>p*.G Vbcs%eh3mbn/ld~=oJ40'׭ Hз]<$QBwM$'T zs֖"跈jD>H){:̎Bb٭=N2O? ."82k%l2'3G6щ%kfDSܒl'>S0)Fr1+0:2|r} a,R/r$Hshw# F>~B_Ee(&aY>3218#MvtY4X FoևJӧ43{-&v8ϡ˖Ѓևҵ+<$~A㑼}ysǾe*-9B8ƺ%-;VW>qY ݴ-$eݸex^UX_[:#XAj\.܂:皫$%Pnv CqHYi ep|*s\'?շ E 8el0ޣgI64?6o5ϖ+pV-5k]>]$6%s>זˬ[Zm{GhU[ޞ,7eJ qOZR$4fLjKH 6axvlg"xR~,.m1=I5O2ZWSDrޛUWʽ1Sڼ1J)VD{޹o5V"zTI>nq%vb۵F^a᎛y!D o +F55ɰ<2nP)#nvqZ?"7 aRK&p1{ ˑ5v6z76*GcVkJO.Fz4'J!Ļ$h6ȠrֵU:O-,O2㚩3 ]KNyd, glony 7ٕ yPkW tmQ=cMWSH2,|1.Mn`Ji%?=8-~2p1Ϸji:KP겈VǾ1i!$;ʄPhRqfɁ|9!}e5ڂVH|:=g[5-fm4i謣8 [U; 9E`ra7NVgNJ%h2&xݵGBpAY&(,HCH#w_[i/sxbH%Xz}F+[Ě\uk3„P:0[BDNjVgxJ%ݤf$XD882'CcfnWN0=U]EI)PIp-\غYi<'9U'wZTZ sRr5t(Q0 r7/:sָ߉s8_9U̪~\OKRS?c^ +_l]kC(RUݜHt8 *"c Q5vLvv&"m|ʼntzuaNDžN_\|UQNs 3]eu;)OcF$mo²X?̍>[Y\ϦY3rّ;A3UB`Һ|( rcڪx_R I䱐@sڟi2eaؔU]T<ƯjW5ٱcg )PyU99[E+ 'fjvœzz9.A^CY ܤ=O<ݐs'*%Նzޡ@vR3U5> dy*y8h%nwUYQN0A*'d%xdqW"zgW`*yf[}Z{SVnC"a3S[a=VA q>}onzUkڙ9h9$҅B1)]QژHr=({il1W"C,G9x_K,zܐ~(_s' ܲN?·i>$YW0CN͉ =Oz&iqpڽiѭKD7$iZai$n#`GҩjIg{_XG[zszuo4e^I$zu3xY8"mDHB|}3D{l\j=6E9 q"&qOU ;LPVN/ BQD`sǾs+"h3A/KFs֤ܖo:iwi`d`c99ǭD轢hg=d|遺3I+vQ~ϣ--՝sU#'5kgR|;VU񓞘Z]c:X!^W>tk 5FRNv9}N5%TIYZA4׬n2 []67umf86VYA d'&`b6HgQԄV.7i墼%& BHw?滽+Ğ3ඏY%O˜ڨY*z=W'l#Uw@6In0ftTK4} [_|DLQDDUa!29渫>->*Ƭmqۑvcqսpϼ aW. Vp^irwzc&4gA<^#a 軷+eXZ5?[C$($.:P| [>f@`FAccv?f+;:7xSIxyOƨ8:_;hڭ͌sm1Y#qBX}EtڏMi]U FrU'*~5AM"d>ih6cm9v׋VY=zT^y7 ȰgKl$?p#{Tk^Gvۯ&sۉ$=W2}w;)#O]yDIe]Qe N v7t'yjXI^Q!lڪS ɺ52:n<ՇuKN621S^[ԋfEy8ЪU iCEđi䍶bqjv{ײZk;.I-idfcW;n_zeNi~x Ѡ-no$wI D{ѧP͓`^dH zֽnyxuerlsKwv9Œt?1'QGFbqRvԞSé ".."$m,z6rR珈uYE\Q U#\ ĐC6fI6YIQʸ+S~ FcFQ]4G阀AdSs^Gw ;0K)V(WBh4|p[ibw9b׷Q#/|<ŷR$y%? [| ݟp_kj 幕I1A\cKi">\R4sb_$kҥ҂GVnGQOԮ-@++f9 M[fQj!E9l4ɢ]slB ͒G<{ jvi hMˌ󟩯;R24gO<. E-OLq֓ZeR["HA88 O|*+FE&yf^=}f"hrϵgg{W2N>mI5h6MkG_C9 '5 ʁUwN}OF}[kR]2X(+͸^##>exݠlG|UFNriꉴcίD֦[TeY GKmݳºxOyM͵,G^gx&um*S1n<[شfsoj!i 3yۃg.. v#azug8R@QL+x&v@ၴc8:\01Hwnz`!%O`$$`ת%c>heQ׌ù `;Au-7VCyڵ=;u[’]\tnlmlge}m rF)!SָqLE6ܴvw1`ǧZ6.5ǚD[ƒFsM̳_F4q;p6浸ռIyW2 %ԌbzcW.Ǩy+SYw}2ؐ.o7Ҳ1 G#Cj,& Һit:uu1BB{}z4g:z8ҭl[ 13mq'z/kimEq89>G޸]n9%I# Y.瓜*D8ڸ.Jذ=A]ZTxXd42g<G\֎Oɦ]y DLG:7t=zt%bZ8HhX+J`fB xue!bAq&y#d8 xid1CCXVJzl}~7R}U}N?PX5+ 뷜Xޝo\G%O䦚KrXX,Az##r Țծd*b8q7GWt,up˻l`_BwT4Wp7/煮F  < Vm 8\ЎSUDRelt'5F1]6@^[nY%6dil'f8KYtǽ.Ɏ3>ڸ]\qbI]gcf54 ("8ݎzr5DۓC߭V")j1YIHŲrX2kȎ%Ky0:~WZ4R[dTdXޱ&)Bw`ⷡBnj*k}o{-RrR!휓 #GRAbx3O[}" dRǨ?t$zWJ6Evy-qXWr @!°ܒ=K63_HuͷnQT. 愁N4h#!84'9#pFFqT.k٤V v( "@JNr9Cw&?[QZpآ}_fŸԎ A=Z2F+>xv+g=xj%)y*Bɴ*YWjC'3g#qWoᯉ~&\Do ~ȞEpĬj).yjMᏊxTSOCIpzUOJѡ48Ouq-8Q8= Ueg*x8?0z8":oJJP@+i1%P:*+fvvv%/*@U836?!MԩGfɭҹ'95ݡyBz/am%[i$$Xbd6a#z::x19R{vl@X&F@  H>Vld8z|V##aW `?wj}+G(pO 1߷[]SgE!aN}N;UKYݞge!crqvfxX`@K<5=hŻk3۸*xUGm:*;˺Lvhos"#LĹgZdSeV9+<+ieC$95|;:tR %/lzR[8M7w6b.+)ʮjRֲ/E,s}"֟DlѾ0N|z`us]Mͧʹ ?uc(A'5KmmdF$2BB$O> G-ؖ-гF>xAZqjBOǿkJK;ZP bǗ=e4^6dfEP#9$&GQh{Ttq*2)7`9='Z+xfG{`|[w^](;6z3;OR7g0&"2O!0Űc- +q67Ȫw+זHZ8'&]B;c¶,5591;f Qѽ*^fb%B94$!3( 2~>~2[am眜im#1ed( "gx<wz<$5/+"sns\RRɼn|x0>&[VaHwg/C/xA^}2w >bv9]i8y9JIV+ÅDerr=ǩcMњXѮ$qWw~"tڦc|N(i$@8 tSVI?3_ǒiqs4AbVe9+:)򥅕r" Ÿ<sk;B>vJehfvUpHn׍'e=jW[)ʎ~nC[~ynnfeԂ&p }sY_* z8kЯb1ot$3KuxvK:BzN?ɯڽL0ˌ|&]5[YRLsU5x,ڈݜj7N^[SZχ0wUoI߽zOdW#`*ToZRA=G#)mbǥzyrf.=At+I'W]'O}5񶉓KT*-U䯟 +7" #1Ϯk?L Hs]ށ[ckRNW**hM$.9`φ܂v\at=ŵ[)0B\2}U xM2^5mo]Ff rD}18`x#XԬ>u&6;Si;3Bb9AR7dsq*Kt1LX`rpTQZ5 7F3#`rG82q#֐I zֻ 1cFD G;צi +Z[ P,ێ,lw:ذyEn5R6.˘Lw-LooJU+A8kfGasީ&RBt?ҒĐ[6PN:=zf5oI[ZBf;W9#C>8T# }34Q[aI$\sxB76z5umZPg\zc5|2v v {l#o&Tq&s9bYDŽ\ ӏ#>a=F&I&`4XRG;=#VIv6_/y"LInN=>%|]ZF~dcĐ=^Ԯt<1 6T.T0;׃/H̖fj jݮ&L}>cWRHIKK:PѾwn}8?^YDuac# fڰKSvs nH,*g'&vKtquOF[{)adʛ Xzw$hEq&f'1iJG6I|W7KVMd=+Aɿ[VXfl>OV9 <FOZ"o Zpd OƱ~E"k7I, J,w:|Rv7ym_ZJ\ZсKeVmbCҮhe%w ۹uDnR5 M׋(*dzjDmk+W^AL _i_O-A>rnG?LQ\D˶W^x1n,GITu zzլgN2x`B%Q7D{؁9RđJ QZB$/{?j܎_sfY ѝ2>^qZ]Aq8odnW\vK)я<^mOkro\[N8<סgܢCLj8dR,"0 +uIG:Km &{5X`~晒mWc ,5y !%oW^"Jq&:cGis\{g&fdM}?ۅ7lWkm 9O;9K Zs2+#(#Ҵ𖊂~BUbOW&!kHq9$c=0)k[b'j*m_M&w,3FEKu 78$8]x:3^{* gW\>q`wW?"=ӒS B D^֓gEAIsu{>v +ڐ õ}sRNx+ \M8XLv9vS幽RڦeAc")6$w@>r0z{֑=#X5= uM1&f`C9 b0}]wS2mJ8d@0KE#W'N;+p|=)@:==oma\$vqI …$*6$8'-tϞ-ա5cl=kUn*N;r:-7ik);F?, +Xg-68x?J2MpдlXEx&iqyyQET}6koY o XSj}xfp]hjo;#a n=0GzkD5G̾'YTqFj< 2rA,|$k幕W)m-<Hzw^֗6YEo 0 0}sֺE ,䏚/ s wz ܚ%D9`M=3\ܶrqub 1OkJ3\NTJO+< YY a `}ѿP0)=*KGy%\N{xg-3|@ǘK.Uy?>+o;e# p >ʿǷ#>]!'Aヷ~ˆԥקImWҾG\;}!MϕzLlGL AKuϥXnh Ͳ"3oEp*sֵA7%̬|˞=|[؈>җp_ҟg9EKNGp֖݋Zm0skEne-ijXc%8(DZck<֫MH =QHJ#Wہ=⛎ݤ>HJda.;8]Ŧ3LT|}O-&H0A81s$~_Lߍ4ߠ޺"~jEb?3>cڷWrzrڱ;'R]]y=5zͿe+dc<ďVw=SyJWrW\Ƶ>=EܕfX_ңjq> _f݈U72'|:?$km.*˙tY0㏽5ORLiuT9v+5́՗^#WμDim\Z-C/ydWsx9 XL7 >Lin0@[adG3 3t.g*ZXrZO淔 D3>.v(,H=rP]A%,'GJ̚Z3^\BRI)=)s&!3Jd,8Vjo,%&RO7c%O8`6s><2F xT&W'ݻ Ok_7   ?? gyOr` q4yz׾kg>j}b#\0;1ZkkD.\] 3kv ܄ 7aMxӠ=S&G+3 ˒As3M:==̦FdQEhK$ y<@ʩ?5kn:+IX>=Ŋh4g#{jՔs *ֆ>cb4;ܞʼ^ǔ=BҾ a B^ڜ`4-UYfTIq+}9Z=JnFx㚧( B.j2?C]ͭyG= i?e6U2:}jxcӠc'=Fy*1ƪC2>AZbk,"<'ONSi*|7[E4?[eHL7p??UGBYBv6dKOZ)Z$k6GhoWcv68 gzԣrP?8(n01$GAL{!5"pguJ[+`Lq)v@:{%$rYNt+=J;VuVS0J7yGPP_=)2CjwQ€zg5($560Grmh:HL֭,@ q΍" 'vMwV4<% pDZ>gdR* <2w:mQ645DN ͊^:[g]0>8\B\稪/ gG8/@t<(l:IN 3G ԓB@* +(ےy#=9[z$y AɯB'kS->Vw m]\s~;5 sVO6[,M2k[ieYwD," ຌi (OQ_P|Dկ4Օ X\eeSׄfm`M?ĺ<.Cy3q+u9()tg0-I>}:6!eqӹ<+ͧXMOHapbĜOx\=Лx '=q`G]B#\QJ$G"XW8#5ߕ;>$cKhx~mDɦ;0/Pz08h[iV:pJMdJӱ屶 |Xyζ5xKq"ׯӥiu96g<%HDžf[)[嗜͜Aϊ'.12)V݈,u9Eg (.C̊#I;29֟[ܟUki1 \x~SK{iφvlj|IoC-¼U9pҲGk&-II*p1 p=qޗj?!xFudQ zktkk @ԟȶleABnJS]%Ƶ\ݴ4}M^p'f6'i6:ueo֝iG|A9G8j.ѓƅd;]HLtw#ʝVs8aO\j;3yjasGFlWhv!(bfAXk&oI9)r[WJnVRz}s9r8kϙd ֮{tKgr!3 XgA̒T^y 1yɮq] +TُP{ijIgEنda9~ʑPmh6e$U]Ãްe'cQ> CJk^]m4*FFk[Zw}Kl.WidL;w:a$6θ@qV%k%(+s4*Wv+qEr>T5S֊X!?{Ԫr#yVqZ583L1cIQL2Avr?XoY$gd-(w%;*$;3n<&F1׽Kq`\j@NRHEO Q h^s/Dѿ$:rúw ;T*օvw^ k1:F,ƼGl@8'{#%aҺ0QTsc]3G[!c7b|g$OF*r޽3⤃Ȃ>^s&9k9C'V xux>bpI 85yCp8դ 0=j\3ʒ啍MSKRnOGO߆ϔ8ׯ&XoCxiwfF{iXyz!G5Ësxn.!ܖӭizϷ"Qi0FV%jůkpҖ,z 15ORq2swyѴZ g$Wzo'OsVd[+-2;̓6@wFj.%'p{dH:+(2B瑃G/3=ز\ {PN tҬެa1ˎ[¨iwΗP*X!)r@}נ`vKX9 [[t$>Y3Pa>o, 22>j # ,F 8=iJRiL|_qԱ=ިC*\ v5 /O aH\=Pw1 zq5Q`_<74vH+*sO]|gF ƤOּm *TDӠ>vъ\˩`o[#>۶Ǥϖ~;,miK6f#Bτ:xH>s/z㓴:nUA_89I?]g{}e|#1"2An#O';Pj=5^I n !ga7P_X/T*c?rӃuըy_^Y2CjR$)$SX#[FА%d2<^k| بN 2ʹbG!^VGl T'F qZץE_f*JmtԗDnoQdy~i ^(${*ZE˧Fd|9g}>C4$ 0ߏGY|)}B(Otwbp e~Mb=C*n(C%}xۖcʞu?UHZdϑWԞ ΖfS$ F=7e*RZlF_ 4m˵ 2/#W%+sm@_Ob5>"; #bF"c,P8S$]^Zϩ~ ;rxI^6%݉%IGԓgYxPM,,Ivh%tAgzQ1_Ч_\QKR{Ut-13OwI(9z{S#dяbSܢPGJot"wodqI9Z/g#XgTč%žO z^}9ZG4OiVœ 7Nr`0?UleE7 \ ԚT]?ZRI4_qse1JZG;9<*[cBT :~]NVA޵rFYYsUd)4A"lx\)5&lR7G<x:QS>sH$T#CUn}1SFGJ;Tɪ3ɩ1Pp<2Iw蜑JCO)%G 21Ntb^}"R8 +o62^>фvk$L 7.ޕ_\I0UX9*τi  ۊ)_)sbZ7{xnuJbl{u̸VsP^719,ųG*!sq^,Rд+^ϗ`#azOsf^\M)L?Ơ<.pb6p;3[-g9YIK}*)7\;I*RHF'$^ݻ Ə'].4;heHW2F+Bn^8&? H$0Ϩ=?*Ư~wqKb I`i^X:Vas+H9ݎ|iyy{ڬ杨Hk|sZR%JV"Nݥԋ yV;߉6Lk6Kl+ۼ'>o;4caVjx⸏U4Xtռ&1GvpM%SV8+FmF9Ymg@+ToAtzY WO g$M|U蚬n' @nz 5?V73ԯ×+1ComKp= N G"6Cv{~Ψ@aەuwU@HA*?gO R2_勄_68_Q3PMzhng VA2YcxXҥ'.1^ykm:eHfVܮ 3rQ=XGM=68$d 6NG֤ͷ Ns¸ ~0k9#eY% )Sg#*\+HZj-E`a1 cqҪiX?q7,/j׈,O9Ц% ~ՎAhTG_֧J]麎A71"8a\O݆i!GhB;sϵqbQ߅y2}"K[%-+~5KF :]Cq cAE\`Jxs@O7 ~9⧰4]>X&2bc k*5f)J;Ic}}.xGXLTǓӵIHQ*5Ԍm$/LV/n%Dc# ϰ kC3,w8$_R撴3l`T=x>)|"l*?Fy S.W?V4w Ly'&v'mˆ*qn'R3!a wD.+mW}c:2r}\=eNZ94]XiH$v[%6fUc>[ iaQޮNFRy֮yEjeijӪbH#Sjdph3 7 sOfI=ι o}BHb?, 3tZ~ P1TF_Gâ!F!XZ.>ΚSeAc@QV&DVօfV>1S`uiJF1zX*NF#XWiC` 1(iFF2=}(*#Z['pFh`dr3HppM<9 LG0x"T=j\dᔜ +9kM5͹XouPA|GYE{ !#' W7{msi](+tfЖ0#g>u43 FwflR$KHXRОWIG\Sne&ۆ]x5!؀''4] DO==+0z"f(ʌ?c`>xW-Yp0tmQN' bך C _R,ϘTv9cǗ H?mxBӰ[n,V?-mH\8eQ5ib6Š՗)C1$vj7nv)TcR]T#GC^9h9WJ.ݞ~3[q\DgҮ\J E Dh6cAvV}P7b+)`bo5P]X,84Mg;ZlhoP4/ȄMj]BFg壊vb{>[g; ݢzv->= F0I8ho3j7m#g$~bq֨[Ow{ 1/'GmXǛ̠:/t4n7 їu+_m2xHį[3*WZ69) ҴuPd#r6jcS1J iBi^WVhP{)bytErAFjN78Z$l$p8Z=28w8]L~\yOz!1]E1tQW&.dbA4s4lX窻qW([pWSo/ʵ -: 9G.3WØ WqOݭq?$%M"yW9WfInx1Zğ`W'?|.a+Quo]qgI7`|)~NMn'qrO Z71ϴNE'=OԳ]_mX9Vḽoj~MZloٍsHpk?Y]*9+e?jKn>^aׯ݌V{7<kLStlM~P׏*Ïr6:y$b??0$y5lO7iq5T_/> !r/>$qf_'4:DŽ"U|:` zo0E 2>Ҙu8R~IT)Gwfp3yH0h [Irϸ.<U`d$m0HU2* 0PqP;+^q=? ߏlVe`ʲtMEQ$ ~u}0F򓍣ҮJ݄OYY-$: Ee)cRFHY&VŽ%#5Q6rQ7ߟɪJҏB0=z2:s 8?ZC԰){dבQ+`A> iƒVH 'IȢA -,GG )+0msד]YJ'u= 7kć=} i#8|EuҺ+msyQz5LhP lG zhR|q ┏5-zKNp2G5Rw 4z⻨u6hMFlgh? d*6.:Q޺o)M2076U͊pO7k zt LF{fD8SִqZMI {coE9_X4 ěs>xWIeYT+v|UmݕAS!Sq 2Iӏ~jݫh Z;ӔiZ?a?;{qҮ9 <Tu|z9|zU-I3S-4{%x_zKU(8pEBc`nqO:%RB?t?ҶkNS=1Ycy ~+"*N;1H~L/(W`}85* W:NW!X ۏ[^s( LɌ]7\;8hyPO5C.W$^,y8۳Ec—zdH#P֤ú.*!u+Ŋ쨋~| P :-j FO1ɜug#$ybgG1#OP0M]JH̓l9k9dH-gV!#݈X:AO3f%'źN`ryֽ7 ޻soy{N|T //<@ 2{?W;xzW1l}~vxݨ9Ѥ1x~U\5F_8Y^H{沑g0E("4,@S\_xd!_q3h萖琾D)nv.G;8>+ϕ|ˈSɑ@N@Hm <+HSidc%y&S4T.NNHEG.n8؞d;=sE֢ؑ ܴkazp==ÂT= R(p*}d`ކYYj- & ކvF4hDc׿֯$yq'۟(F>i v9]is\ f*#u!}khaX*( ͯ =GH2WLUk7HHbz{AijcjڸƯ"XQqȤ+t 9>JkWQ&Iy$#T(H;{zVoRoRl$uC 1MEǦĆd !$9h$$kjBg Չ #>B 96ы<8 FD!R?2BHB-P&C3Ҭ0D@STeKXyV]Ҹ:mk r$pBg0%-B)w)ŦB+,$i-RK9 QqɭO ׹"C 8#׎BSNHnc&4~Dh7~tS*^񻞂\V|Lby=q__z4枲 5[$"ڋ ȴ71JsT\ҧ?{bI= *1UƦAkRmt-1MJ8Qǥ?J>YN[{^-9ʐGֹt9wh'~:`WgVJz8ذ㰮oi:rsʅ9ֱƝ:u5cUn^Pȭh~n9iIHz[J\38AA}ۙeFAz뫵UMVqjk0?p01qWoC&hH-q1 ͹elЃPj_#'F0GKImn wmXS,o,lqxүD&E. sY35{@RznH$ѮN#K[͎*C%yWU e_L}+F98*-EOTdXO%Ʊ Jۼ&Z:%JןQXwn\?zn>hlA7w9 uOI]v0T[}2hTn2[r:~uFW,H^yF^l 1Uكٜԯmfg+G =}ӏbN+8Y.u+1>MwkCyָr%w^o- n{7īɬQ6$!E?0S_)J0?1j 5r? WR4==e Hc<?ֽR"L?yG&F{a>~ ZZ_Jfgz+h$s#M"" ؊OOҎt$khNi$tR8Fkؚ3tZ*ySR^ ;LFP VCj7ojcCTv a<[x<~tHN犉 ;s+ة2P10z>*ASjI ֣#iޥza꿍KV wm`rGcHE; u%󨪥'?Z[\]_Chttp://media.lasvegasweekly.com/assets/images/icons/share/email.pngObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345MNOPQRSTUVWXYZ[\]^_cdU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_Chttp://media.lasvegasweekly.com/assets/images/icons/share/email.png./01X$classesZ$classname12UNSURLXNSObject#Au? 6789CWNS.keysZNS.objects:;<=>?@AB DEFGHIJKLWExpires]Cache-Control]Accept-Ranges\Content-TypeVServer^Content-LengthTDateTEtag]Last-Modified_Tue, 25 May 2010 17:41:32 GMT_max-age=62208000UbytesYimage/pngTSpudT1045_Wed, 04 Jun 2008 17:41:32 GMT["555301431"_Thu, 29 May 2008 01:27:06 GMT./`aab2_NSMutableDictionary\NSDictionary./effg2_NSHTTPURLResponse]NSURLResponse)27:PRd  RW`knt} #(-;[nt~  h.Yimage/pngOPNG  IHDR A< tEXtSoftwareAdobe ImageReadyqe<PLTE񽽽ʳ777̌ÖDDDRRR###ooo)))eee 555sss kkk'''iiiǐFFFggg+++uuu111---}}}&ݴIDATx$U0@чC`޿{><'mjUG?QGfHR$>ch+l z$"V>.\N}Lix<|ɲ q;VdU~\  2pEQIdWbZ4}YQ/6*xO!$zaIENDB`_`\a_Bhttp://media.lasvegasweekly.com/assets/images/icons/share/ipod.pngObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345MNOPQRSTUVWXYZ[\]^_cdU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_Bhttp://media.lasvegasweekly.com/assets/images/icons/share/ipod.png./01X$classesZ$classname12UNSURLXNSObject#Au 6789CWNS.keysZNS.objects:;<=>?@AB DEFGHIJKLWExpires]Cache-Control]Accept-Ranges\Content-TypeVServer^Content-LengthTDateTEtag]Last-Modified_Tue, 25 May 2010 17:41:32 GMT_max-age=62208000UbytesYimage/pngTSpudS303_Wed, 04 Jun 2008 17:41:32 GMT\"1092137727"_Thu, 29 May 2008 01:27:06 GMT./`aab2_NSMutableDictionary\NSDictionary/./effg2_NSHTTPURLResponse]NSURLResponse)27:PRd  QV_jms| "',:Zms} h-O/PNG  IHDR οtEXtSoftwareAdobe ImageReadyqe<iPLTE#f\IDATxD@P9 h+VAɗkʎ7K2]"pYTx+[\Pwn+S"IENDB`cd\e_Ghttp://media.lasvegasweekly.com/assets/images/icons/share/delicious.pngO bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345MNOPQRSTUVWXYZ[\]^_cdU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_Ghttp://media.lasvegasweekly.com/assets/images/icons/share/delicious.png./01X$classesZ$classname12UNSURLXNSObject#Aw6L 6789CWNS.keysZNS.objects:;<=>?@AB DEFGHIJKLWExpires]Cache-Control]Accept-Ranges\Content-TypeVServer^Content-LengthTDateTEtag]Last-Modified_Tue, 25 May 2010 17:41:09 GMT_max-age=62208000UbytesYimage/pngTSpudS145_Wed, 04 Jun 2008 17:41:09 GMT["560869111"_Thu, 29 May 2008 01:19:12 GMT./`aab2_NSMutableDictionary\NSDictionary./effg2_NSHTTPURLResponse]NSURLResponse)27:PRd  V[dorx',1?_rx "h0OPNG  IHDR(tEXtSoftwareAdobe ImageReadyqe< PLTEK9IDATxb`&`!v\eO'^S!IENDB`gh\i_Bhttp://media.lasvegasweekly.com/assets/images/icons/share/digg.pngObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345MNOPQRSTUVWXYZ[\]^_cdU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_Bhttp://media.lasvegasweekly.com/assets/images/icons/share/digg.png./01X$classesZ$classname12UNSURLXNSObject#Auޝ0 6789CWNS.keysZNS.objects:;<=>?@AB DEFGHIJKLWExpires]Cache-Control]Accept-Ranges\Content-TypeVServer^Content-LengthTDateTEtag]Last-Modified_Tue, 25 May 2010 17:41:32 GMT_max-age=62208000UbytesYimage/pngTSpudS643_Wed, 04 Jun 2008 17:41:32 GMT\"1092137911"_Thu, 29 May 2008 01:27:06 GMT./`aab2_NSMutableDictionary\NSDictionary./effg2_NSHTTPURLResponse]NSURLResponse)27:PRd  QV_jms| "',:Zms} h-OPNG  IHDRltEXtSoftwareAdobe ImageReadyqe<VPLTE÷vy}˿}~Ĺȼfnrx{ɦøntyrx{ҙ¶ȸӴկ}Ճ}憆ĸȔʾejnƪʝǻТɽ|IDATxb`\+<-5PE0;+5 DAB,4F 7efbbb(Iynnn& US 0itf3fpgQfG=N ɬ 2<v e C8PCD$ӆ˙8( *d.e/"`HtScmDIENDB`kl\m_Fhttp://media.lasvegasweekly.com/assets/images/icons/share/facebook.pngO!bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345MNOPQRSTUVWXYZ[\]^_cdU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_Fhttp://media.lasvegasweekly.com/assets/images/icons/share/facebook.png./01X$classesZ$classname12UNSURLXNSObject#Avh 6789CWNS.keysZNS.objects:;<=>?@AB DEFGHIJKLWExpires]Cache-Control]Accept-Ranges\Content-TypeVServer^Content-LengthTDateTEtag]Last-Modified_Tue, 25 May 2010 17:41:08 GMT_max-age=62208000UbytesYimage/pngTSpudS268_Wed, 04 Jun 2008 17:41:08 GMT\"4050529843"_Thu, 29 May 2008 01:19:12 GMT./`aab2_NSMutableDictionary\NSDictionary ./effg2_NSHTTPURLResponse]NSURLResponse)27:PRd  UZcnqw&+0>^qw #h1O PNG  IHDR(tEXtSoftwareAdobe ImageReadyqe<6PLTE-F,EZp-E,EOe5NYpNeMdYp5NNd5OllIDATxLMK@?E3 b'4]#c0lgvLmq+d.iU:TŬA?Ϋj~N7}ʹlAE߿IENDB`opqr_,http://uac.advertising.com/wrapper/aceUAC.jsObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver" &,-345QRSTUVWXYZ[\]^_`abcdefgklU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1!  '()$+WNS.base[NS.relative_,http://uac.advertising.com/wrapper/aceUAC.js./01X$classesZ$classname12UNSURLXNSObject#A$E 6789EWNS.keysZNS.objects:;<=>?@ABCD FGHIJKLMNOPSP3p]Cache-ControlWExpires]Accept-Ranges_Content-EncodingVServer\Content-TypeTDate^Content-LengthZConnectionTVary_ACP="NOI DSP COR LAW CURa DEVa TAIa PSAa PSDa OUR BUS UNI COM NAV"\max-age=3600_Wed, 04 Jun 2008 17:39:21 GMTUbytesTgzip_Apache/2.2.4 (Unix) DAV/2_application/x-javascript_Wed, 04 Jun 2008 17:19:37 GMTT4145Zkeep-alive_Accept-Encoding./hiij2_NSMutableDictionary\NSDictionary*./mnno2_NSHTTPURLResponse]NSURLResponse)27:PRd  ?DMX[ajsu|$)8CH +=BF\ilqup_application/x-javascriptO*var ACE3Host1='http://candi.beta.advertising.com' var ACE3Host2='http://moneymaker.beta.advertising.com' var ACE3Host1Var='as=0' var ACE3Host2Var='as=1' var ACE3NewHost=new Array() ACE3NewHost['727732']=50 ACE3NewHost['741495']=50 ACE3NewHost['743198']=50 ACE3NewHost['721134']=50 ACE3NewHost['738311']=50 ACE3NewHost['736030']=50 ACE3NewHost['736728']=50 ACE3NewHost['744049']=50 ACE3NewHost['744140']=50 ACE3NewHost['742531']=50 ACE3NewHost['710186']=50 //ACE3NewHost['728340']=50 ACE3NewHost['742720']=50 ACE3NewHost['741373']=50 ACE3NewHost['726746']=50 ACE3NewHost['711538']=50 ACE3NewHost['730759']=50 ACE3NewHost['710076']=50 ACE3NewHost['706729']=50 ACE3NewHost['727444']=50 ACE3NewHost['742529']=50 ACE3NewHost['743167']=50 ACE3NewHost['703798']=50 //ACE3NewHost['728278']=50 ACE3NewHost['738344']=50 ACE3NewHost['743252']=50 ACE3NewHost['723899']=50 ACE3NewHost['734847']=50 ACE3NewHost['743843']=50 ACE3NewHost['736808']=50 ACE3NewHost['734100']=50 ACE3NewHost['735115']=50 ACE3NewHost['746164']=50 ACE3NewHost['741583']=50 ACE3NewHost['734865']=50 ACE3NewHost['695864']=50 ACE3NewHost['701012']=50 ACE3NewHost['709856']=50 ACE3NewHost['722173']=50 ACE3NewHost['722174']=50 ACE3NewHost['747297']=50 ACE3NewHost['721490']=50 ACE3NewHost['742468']=50 ACE3NewHost['743013']=50 ACE3NewHost['699875']=50 ACE3NewHost['744097']=50 ACE3NewHost['725658']=50 //ACE3NewHost['740024']=50 //ACE3NewHost['721569']=50 //ACE3NewHost['738222']=50 //ACE3NewHost['716450']=50 //var ACE3GlobalHostPercent=1 //var ACE3GlobalHost='http://ace1.advertising.com' //var ACE3GlobalHost1Var='as=3' var ACE3AV=parseInt(navigator.appVersion),ACE3IE=(navigator.appName=="Microsoft Internet Explorer") var ACE3NS=(navigator.appName=="Netscape"),ACE3FV="",ACE3dt=new Date(),ACE3FVer='0' if (!window.ACE3Ck){ACE3dt.setTime(ACE3dt.getTime()+(3600000)) document.cookie="ace3=1; expires="+ACE3dt.toGMTString()+"; path=/;" var ACE3Ck=0 if (document.cookie.indexOf('ace3')>=0){ACE3Ck=2 document.cookie = "ace3=1; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/;" }else{document.cookie="ace3=1; path=/;" if (document.cookie.indexOf('ace3')>=0){ACE3Ck=1 document.cookie = "ace3=1; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/;"}} if (ACE3Ck>0&&ACE3NS)ACE3Ck=3} function ACE3CkPlg(){ var e='') d('Dim adsVB,po') d('adsVB=0') d('If ScriptEngineMajorVersion >=2 then adsVB=1') d('Function adsAX(aX)') d('on error resume next') d('If adsVB=1 then') d('adsAX=False') d('set po=CreateObject(aX)') d('adsAX=IsObject(po)') d('If (err) then adsAX=False') d('Else') d('adsAX=False') d('End If') d('End Function') d(e+'script>')} var i,u=0,dF='',fS,p=n.plugins if (ie&&window.adsVB){u=0}else{u=1} if (p){var l=p.length if (l>1){var m=n.mimeTypes,fl=m['application/x-shockwave-flash'] if (m&&((fl&&fl.enabledPlugin&&(fl.suffixes.indexOf('swf')!=-1)))){ var ds,f="Flash ",nm if (ACE3NS){ for (var i=0;i=6){dF='F' ACE3FVer=ds.substring(fS+6,fS+7)}}}} if (fl==null)dF='' }}else if(ie==1&&!u){if (!ie5||ua.indexOf('NT')!=-1){fS="ShockwaveFlash.ShockwaveFlash." dF=(adsAX(fS+"9")?'F':'') if (dF)ACE3FVer='9' if (!dF){dF=(adsAX(fS+"8")?'F':'') if (dF)ACE3FVer='8'} if (!dF){dF=(adsAX(fS+"7")?'F':'') if (dF)ACE3FVer='7'} if (!dF){dF=(adsAX(fS+"6")?'F':'') if (dF)ACE3FVer='6'}}}else{dF=''} }else{dF=''} if (go){if (n.platform=='Win32'){ if (ie5&&(db!=null)){db.style.behavior=beh var fC='{D27CDB6E-AE6D-11CF-96B8-444553540000}',fV=db.getComponentVersion(fC,cid) if (fV.charAt(0)>=6){dF='F' ACE3FVer=fV.charAt(0)}}}} if (dF=='F')ACE3FV=1} function ACE3_AdRequest(ob){ var obj=new Object() for (var p in ob){var lcn=p.toLowerCase() if (lcn!='class')obj[lcn]=ob[p] else obj['Class']=ob[p] } var nmVal={ media: 'mnum', leadback: 'betr', context: 'ctxt', ip: 'dmip', mid: 'xsmemid', z: 'zpcd', mn: 'mn', zid: 'zid' } var ur='',ifV=0,dr,dr1,ht='',ct,dw try {ur+=escape(top.location.href) if (top.location.href!=location.href)ifV=1} catch (e){ur+=escape(document.referrer);ifV=2} if (window.ACE_DREF)dr1=window.ACE_DREF else dr1=ur dr='/dref='+escape(dr1.replace(/\//g,'%2F')) if (obj.site)site=obj.site else site='100' if (window.ACE_KeyParms){window.ACE_KeyParm=ACE_KeyParms[site]} if (window.ACE_KeyParm){ for (var i=0;i=4)&&!op&&!(ACE3NS&&ACE3AV==4)){old=0} for (var n in nmVal){if (obj[n]&&(typeof(obj[n])!='function')){ if (nmVal[n]=="mn")ot+="/xsxdata=1:"+obj[n] else ot+="/"+nmVal[n]+"="+obj[n]}} if (obj.ud){ var zip=obj.ud.split('&'),zipV for (var i=0;i-1){ht=window.ACE_SHOST;gl=1} if (site=='712441'){ht='http://ags.beta'+adv;gl=1;obj.calltype="IFRAME"} if ((gl!=1)&&(se<0)){ var rand=Math.floor(Math.random()*100)+1 var pt=obj.poptype if (!pt && obj.poponunload!='true'){ if (window.ACE3NewHost&&ACE3NewHost[site]!=null){ if (rand <= ACE3NewHost[site]){ if (window.ACE3Host1Var)parm='/'+ACE3Host1Var ht=ACE3Host1 }else{ if (window.ACE3Host2Var)parm='/'+ACE3Host2Var ht=ACE3Host2 } gl=1 } else if (window.ACE3GlobalHost){ if (rand <= ACE3GlobalHostPercent){ if (window.ACE3GlobalHost1Var)parm='/'+ACE3GlobalHost1Var ht=ACE3GlobalHost gl=1}}} else { ht="http://servedby"+adv gl=1}} if (gl!=1){ if (!obj.host){ if (se>-1){ if (obj.Class==0)ht="https://secure.ace0"+adv else ht="https://servedby"+adv} else { if (obj.Class==0){ ht="http://cs.ace"+adv ot+="/agv=1" } else if (obj.Class==2){ ht="http://cte.ace.beta"+adv ot+="/cte=1" } else if (obj.Class==3){ ht="http://cte.ace"+adv ot+="/cte=1" } else { if (obj.region==2)ht="http://servedby2"+adv else if (obj.region==3)ht="http://servedby3"+adv else ht="http://servedby"+adv }}} else{var v=obj.host;ht=(v.indexOf('http')==-1?"http://"+v:v) }} if (obj.bnum)bnum=obj.bnum else bnum=new Number(Math.floor(99999999*Math.random())+1) if (!obj.calltype)ct='J' else ct=obj.calltype.toString().toUpperCase() if (obj.region=='3'&&ifV==0&&!obj.calltype&&ACE3IE)ct='IF' if (ct=='IFRAME'||ct=='IF')ifV=2 if (obj.size)var sz=obj.size,str=sz.toString(),w=str.substr(0,3),h=str.substr(3,6) else if (obj.width&&obj.height){var w=obj.width.toString(),h=obj.height.toString(),sz if (w.length==2)w="0"+w if (h.length==2)h="0"+h if (w.length==1)w="00"+w if (h.length==1)h="00"+h sz=w+h} else {var sz="468060",w=468,h=60 obj.media='316574'} if (!obj.media)szs='/size='+sz if (obj.adtype){var at=obj.adtype.toString().toUpperCase() if ((at=="I")||(obj.at=="IMAGE")){ot+="/rich=0"}} var hl=history.length if (hl>50)hl=50 var sr='',sr1='' if (screen.width){sr='/scres=' var sw=screen.width,sh=screen.height if ((sw==640)&&(sh==480))sr+='2' else if ((sw==800)&&(sh==600))sr+='3' else if ((sw=='1024')&&(sh=='768'))sr+='4' else if ((sw>1024)&&(sh>768))sr+='5' else sr+='1' sr1='/swh='+screen.width+"x"+screen.height} else sr='/scres=1' var pNo='1',pf=obj.popfreq if (pf){var i=pf.indexOf(','),n=pf.substring(1,i-1),hr=pf.substring(i+1,pf.length) var cn="AdComPop"+obj.site,ck=ACE3getCk(cn) if (hr==0){if (!ck||ck=='')ck=0 if (ck-1))&&(s.indexOf('rich=0')==-1))s+="/rich=0" if (ct!='IFRAME'&&ct!='IF')dw="" else dw=""} else {var s1=s+"/bins=1" if (s.indexOf('rich=0')==-1)s1+="/rich=0" dw=""+alt+""} if (pNo){if (obj.popdelay)var t=setTimeout("document.write(dw)",obj.popdelay*1000) else document.write(dw)} window.ACE_KeyParm='' window.ACE_KeyParms='' window.ACE_FreqSiteMap='' ACE_AR=''} function ACE3setCk(nm,v,dt){document.cookie=nm+"="+escape(v)+((dt==null)?"":"; expires="+dt)+"; path=/;"} function ACE3getCk(nm){ var b=document.cookie.indexOf(nm+"=") if (b!=-1){var l=b+nm.length+1,e=document.cookie.indexOf(";",l) if (e==-1)e=document.cookie.length return unescape(document.cookie.substring(l,e))} else return ""} if (window.ACE_AR)ACE3_AdRequest(ACE_AR) tuqv_http://servedby.advertising.com/site=752339/size=300250/u=1/bnum=90542362/hr=11/hl=1/c=3/scres=5/swh=1680x1050/tile=1/f=0/r=1/optn=1/fv=9/dref=http%253A%252F%252Fwww.lasvegasweekly.com%252Fnews%252F2008%252Fmay%252F22%252Fpartys-over%252FObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345GHIJKLMNOPQRSWXU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_http://servedby.advertising.com/ctst=1/site=752339/size=300250/u=1/bnum=90542362/hr=11/hl=1/c=3/scres=5/swh=1680x1050/tile=1/f=0/r=1/optn=1/fv=9/dref=http%253A%252F%252Fwww.lasvegasweekly.com%252Fnews%252F2008%252Fmay%252F22%252Fpartys-over%252F./01X$classesZ$classname12UNSURLXNSObject#A!| 6789@WNS.keysZNS.objects:;<=>? ABCDEFSP3p\Content-Type]Cache-Control^Content-LengthVPragmaZSet-Cookie_ACP="NOI DSP COR LAW CURa DEVa TAIa PSAa PSDa OUR BUS UNI COM NAV"_application/x-javascript_private, max-age=0S411Xno-cache_b90542362=_4846d830,3762819812,752339^244965^1^0,1_; domain=.advertising.com; path=/click, ACID=vd120012126024160006!; domain=.advertising.com; path=/; expires=Monday, 3-Jun-2013 18:00:16 GMT, ASCID=vd120012126024160006!; domain=.advertising.com; path=/, F1=BAD2GhEBAAAABAAAAEAAgEA; domain=.advertising.com; path=/; expires=Monday, 3-Jun-2013 18:00:16 GMT./TUUV2_NSMutableDictionary\NSDictionary./YZZ[2_NSHTTPURLResponse]NSURLResponse)27:PRd  )24;CNPWY[]_acjlnprtvz*.7\Otagtext="Click to learn more...<\/a>";document.write(tagtext);xyFz_:http://cdn2.adsdk.com/CDN/32105/R15CMb7_states_300x250.gifObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_:http://cdn2.adsdk.com/CDN/32105/R15CMb7_states_300x250.gif./01X$classesZ$classname12UNSURLXNSObject#A<' 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJ]Accept-RangesVServer\Content-Type^Content-LengthTDateTEtagZConnection]Last-ModifiedUbytesVApacheYimage/gifU17819_Wed, 04 Jun 2008 17:34:46 GMT_"5cc295-459b-437e3d07"Zkeep-alive_Fri, 18 Nov 2005 20:43:51 GMT./\]]^2_NSMutableDictionary\NSDictionaryE./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd GLU`cir{}%,6<\udOEGIF89a,HHӳnnƣ˗k0뻻kkyFFPyy䢢!V~ˮWWcSIs8{b=44:փ[[柵fff! NETSCAPE2.0! ?,,@pH,Ȥrl:ШtJZXozxL.zn0N~7qta%>v 3h ; ^f b3"a_`"%^ >hՎ7B0]f #ReaĈrq` RF/LqMDɐ!OaJX|p C_"""hg2i>XQRa`$t.7ĪRėUwȬj*2F{dCD%VFqpj؁YŢ Z}:-[]"2VPB:bT9l$IHs|r |w k01# 0;60ɬfdCZAzWv`[Ȥ/EZu6FQcx4"i"va#wYXP<qg IE@!Jf8^h;ךw;l꩕B%uՇb_&a_ᅩjN":ebq +<{K`5ͫ@%>sVG;(! xh%N8ǯn+CnqlƘ뢵o:xFqvUpk0꼫ZO8!< 06G d%"!-vrל5&<ɪ6UG*Ft#A *S8 K2>ʛٜ GFT5vPB[=|씭%36aS ulna8ފo7h==[As7FwQҌFӁ)PoMs\1IG[,~FG#7xﳆĘSN˚r=1zxVθ-q>|m!J w(Gz7hd$`Yw,DMV'D{S4cA]$v(Ζ,b+ BV#4I7T[aDucF0ha%:烢Ȉ&RXD.za^ c(2JfL0Ш6ނn+Hqx̣, ? x?~Ld 59ʎL#-H % hr\@?G?fyTuqۭNo@k~7?tZ>9Fps-9 'A!\:m9&G3 ~~7;[mW`{g;n;x~f(/nݨuw\kH:*(q*;;5e|;5 fߛNm{9z.Kw-޶0-^=E3nv!r^ޢcF/MG(FX}yd% wGj=seekMp|u_i'{|}Fgk*nr{2Gf#GHYܦskп# S+֓|GWgZ LHYGK'ylmGwsvu6罼8\[[ \>̿F\}FlGu9fz :+tH((W\p΋jDZex\wYwrE}-jU Jz[`j7 `U9`O=P-|K%ɹZ X}H>Pq>Pw>NJKYK1PpduLN{ 듎޼yPLKޠ &Ja)zjݾngnB^#,j?*WJ%z( o/J/DtAڶ9 zZ 1.yfs8/:wҷqĈI֝,ɱ="Q2LlS"1#|@"$Q4IP7HT'҈E@*IVu @֛G>mˠY5,; 2=bpHDeķ@E"̢|zBh>"o XއA)hUADӀfB<"|܉* X ( $tI oذ@Z 64 ˨IDG3u,h+v³3"z .C"b;D"ExByF{3$(.Y(ڼ{ uÊ2+8fCМ}1NMxǀܳh7ONR8ғϽ#$<L pLL$̼,#N*p. L *໢|7"ŲE|ygFN%+CF.vh),F%)h ,NAݎ2DT5pLt::QMOk8GpFSU-0H~"@ex:+51f $n`ʞhETDVQf-Xbh)6?*@g$|Dù#TAd=(@SEV&uB0@\$&sv/!wϝ9^?,9X6o ~KȻ݀8҄0c"%|\Pt _ ^Мy+>:c\51qA{Pm{,0s?ȟ=1ft546?7t}WY& ]-"\D鶺!*qB?ôm 0r+&"&KLoZ0Ң`lY"fJ)J 4L*cB´ ^?)J ù</`1,h(\b"3bj!* 1b#B$1$@D T6P ̐B ^lHCNgDq|w xrgVrÐڐP?Z⁔ M"/:qĪO4~5>qEGShE!LW2jb&>a *djjd~>'iV67 cUб6lbH2 P|CX)WAq&Ko`oKI+$"p6":2%H HXlEB;x44tj$ w豦cMr'¦v8Fr cQC"~f[PLAF‘6:Fjde&1V847(%w$,+3/VX0r:dD ϲj* .g$Yjf;v/'R/HjJ o~ŁC C7r1*;6΢Kys >Zz.{SDkXM|klF=X*yS8`͇wwm̓, {%ҪMЄo؍X^c"X9MXԪȭbZPdOmp풯˂My"Y)YMm~̐o TyX ซDXo6.D.#D`YY֍ͰYM9d`yœoRN蹞_oYΟyР:SZ!:?Η鮢-1:5z9=A~zN|'Jڤc.J4RڽVSΥ8Ѳw+O_Yz}W􈙈wwR|O):p㌤0|y~چmq. z`v>oxWximzwoAwX~w/W쯏[-`ïOyT3=_{3!h}ctYDy}{ʂlu;# )^PWxS+KQxg /_I 4!enA*2p{۰kח3ACvj8KSv@V;3jGCETzT0`h1 D=`E{ ѬZ Y3gX'o mq há0&V_ks|Jm @JpU8$"Z*+$w;')f2Э}&4K?% 0f1<3D,$ %!hcs*ncd[ǜC^ 5uݷɱ+tuGie3r wXߡP=vĮQ23V"1hbo VxƩPLqjcVҁ wB}]E̋^`LRSzW%w3ԉpr>,39Hr1~{eHV-B4y;:c6}λ#vp3?7u|pUʥP9$^2P1p~i8xHQUu% ])*s%6_-(]c<]?qlwd4U*o;Y'LCJ^AU+.1`v3zh~Gc`VW];KW7#KD#ʎ?G*A]$|nSe4~q%5J}ZQ/H'&E14Ξxct IN&)c}q70Gi{LaP~5IB?Gn㭾e͕,D%BN@xC @Jrk&‰X#J/w[CXb.|ӵ}\\nI!OL"x#G)'|HHq{P?\&11Hl&P:  pBl@\uYAc:q\\ Vm p=}  8e-РG6VB'!ZdhL]Z0@O$>}۰C`WB! IUn ΓC6Z63O\YYŎIM{1V@OvrDAT"@#HQI9^TL3 _J$Q #@(@} <@7ZYDP'Hs7"|rf9ɕbQ@5c20vcN74[wQ5ӥ{9e }5/y7ӧ~b%h|+! ~aѶ[TE0$}ހX!7LA$": DXbK \)h|"/h_{98`yH=#c.A%.)i%&MBVP%G\& &84!pjI@ 1g FA7 d ʞ^"Iހ蒐֦DXt2j.Pf8Yꒊz D~Ze2W >sNlڡZ@, kHmupiA~뫹w+Inyo➐wM0o~^9g wEFVi^~SH "^2G(oD SJèee}Ẃtb E/e |GvZ")L${kUZX.$ \oICW}&y~8=e|5HaXern;n# #L:'SsDˤ4NPVUs$iSgw1i^o@8&<e($6ʑy:b iGA>V/=~Pto=Ozt!gIAB E# RA!yNvA4y]LS=b.>FrG['=5^E~esFDSUN ΪP#TzĬTU@$Z٪fǏ,X@ أ̣=c0dfclm#2v#&"8?Z9$ pb D@ l7¤!'$ KdA NNb (bOKʤ"C aFFv$)@.rl" 9ccKc0&Z@ " Ā?Y:#M/N dar";_% : S2 pS! +\9JdN2$_FfW>&S%fj@NcYb+v%\6A \9c3c.jf "!& (/:e>c]&!C@[*>ckDZce~& Pf]elԡc~0gPR^ 7jnvc6o&c|.@qft'pjkvJsR('9.e@<hsOvx#J ֦'n"&jN#aBLa96\"%l/2Zk*"KRhAҤi.'r~ҡ*dO7hrQ!a(*(㉢&I&Sa;z3~@N^2ʖTTi^*@*(c O"{!b-h )# !\# ) X%  ^@#* V@p&88Z \g!|̧2o0J|FsOn:IJ~&gNӌvΥ\aJiTQ=t"eVc ؞q}Ԕ(ޠPw! ,Ow k޲a6ray)Y\+JBog֭|mf]f{|sgᤳ(_nЍ! ?,' pH,l:ШtJZX"e̦EdG&3mwIus"D_fT{}G"k%E ukh?uy?mSj\BFe;O8b8C 9N3DiFLce"?ğ^ReB FdzȧeLG;CdZ OנE>;Gv0hBa8(D"E!K87|1B"46훥MdfY44E^d%TXF+X*էK >4OURl2Ua24ؑ kRr.ysRק'o}bu25)AtXysH۴V 2LM$W$qr|ьh""F髷M!}zʳ'K2h.I~;W^iE?ҷ,ұ*huCkuecK tc#EkU)`>кaW@FwRx7D3zSM6Z-!\Dm8ErWl fsIH)2\[hHPs1^frC]n0Sň`bw>(c$Mn%YZB2G*bP $e-5ҟ7BߊZFu5q e37 SRȧXܕ6^^hߘ py9C2V ]fȜ Ň_r\gMܟqX`ފ롮 v{$Y )dqDÂkk>e6Eh!yELpזПcr$*lY̎.[azfT@W"ͺ(Jk)lRF${t葨պC\+7901_{>W HIJVv#~0<ΤuImsͤ{Ѹ}ΡlN*/Mm{-ZS &tcgk$޾&Ze='δIyV{,dgnL#f1e .쎉 ;A!,?,' pH,3H"ql:ШtJZ,1"iuSN+%"mS%-q&|P|C~D t3E xti?l^|oTk_EFf<R%<qBM fEFfGdf fBQeBFԢQ D۷-;eF;M۬8iPx'=u|+Sk8d4>,L_LJ,eNJLDV0ҫ?f&CPLˣ;FJ$#$>t Ղ$P*i9 Hm>`ԢB$9A3Wj2^!U[7IQKɾpo11.#=ʃCWi"0!~]Tj՜ =tܮgf] f&6Úk6Cmy +LBdg^#o>ޭgC(6eIx 1Q`PlP?ܧoCL?7Qt ct ?@AB DEFGHIJKLWExpires]Cache-Control]Accept-Ranges\Content-TypeVServer^Content-LengthTDateTEtag]Last-Modified_Tue, 25 May 2010 17:39:44 GMT_max-age=62208000UbytesYimage/gifTSpudU10806_Wed, 04 Jun 2008 17:39:44 GMT["291417247"_Thu, 29 May 2008 01:19:13 GMT./`aab2_NSMutableDictionary\NSDictionary*6./effg2_NSHTTPURLResponse]NSURLResponse)27:PRd  X]fqtz).3Aatz 'h5O*6GIF89a{H!竄_`z|PPPύc9$ jOs|zvCsplukT,@XRβNJ[2Бht;MHqm8Ǘk@vze쓯倲q=޾F`ZZ{smޥUtlihRLhasH{?2tkZA[v~ZfZltĦ^`Qngk5I?x|N&ˀ40-R22@SJL"a!i3 !,)AnGGOAAA%)) $ZM}:%95*MG A GM59% G҅) %Q!*۪*Q硍)::ZM*}RƵHP:Bj@{0!p*xh,DrCktIR5Q߄PrF ƴ)qKO^rpY`B#6jxtHROjȫc<…B@bBYrA׿q1b1&Bh\ H92Ct$J}nTc H9eIorM1Jqa\Za>}յHQi7)YRv^] N'IՄQ @agU=68RE 29r 0l`<€DopɓQS5ӓr ,v^B}`9[5JFTfG%/AI@NÞ|'pY=5o#$PhLJy MP5䧂Z7@P3t駠v*rM@a~ԐwBP"?HؠD:1 3~0kހ7&pO)muu Қ) P PkbdRlwA*єR=(8ס{APQ̪-()bdTM'POD0dBK7࿢XR MؕCH,,,6d`=/ѥG +RvC3 1n3T^qR/WޔA'b LS7`hfτIPQJͦTutׄҁBr2 h;O1)'Zu8-~UZ4> 騧꬧^#/eV]R5?qk~ε1?)ϷeޣP$@Xn觯췿^eXr,y,0\Xҁ IttE"r-ZƐnsU LmHGH' QR.6Qe;ԁ' @mSRH"H25$ H*WVtT= LWd| xl?L.URUx@xV[8pR 8Cu5AQqX pA>R$*. E8cp$Ѭ~@Ric ' 1n(H?&kAU*TvD$W0$ԟ8IɃ-l(7V"QhSF Ut(;XHg&`+jE4c#w˙ n9} F]n| JEtR%2PBAݻi >XܑJ{&R!0p*uLL番A ;Pž^dMЂ mYN}M0撗Śt`D̰Θ󜟙-!#x0 t + 4\Lg CnpHdkh_~+iARxJ05J.[g~3[c]͌ vN[3w(F͔~=SszċVX4z[oYʦ EE:W:fXE!Ho+W&rK> ^*2NȪ,"=ܪl.b| .CT-^Ais@0.,k3,E83 j Y2a{Ta ﳑKJີb@7#nf.8x z aU5rjyG;yG@b{)Yk1p)u-PLkLA+p _`~!ce@8d bȒ]$: (PP 8A`['}pkpxc'z'1!1D3spQơA`Q{rr+J sTkCIgk7 {wg ptW@:@3AvWvnKtRgk,o~7}b" Ҁ@a"GS)6 MzgxvR.OJpv0a'va~ eVFcJcG(ց~r_~/`_`}u1vrZ(\a  seB$fw%PC7 w0xrQ`VcW,=a.0N$wa8yÔrwR`/W`kv-1$71Mw0}PGrQ7R0,0u`0jЏWfp#P؂-4SQE3r(VP 2&^v)bD"ozE`sw QKq,! ]a:3aK`{="@R`qLPV&k$5ĐhSQ/1XWlr$K$L wcua9qOp7 Q63p3s!@>5JA*&Q? EK9tUĆԳkX)ԡ/"%>!2o]5m^,*IJ0N!~G!h6BIA{aW?G=yEˆ5YzV0j9qG.ߙUݨQ5S<2x0g^ 51]G3JD2D"*06o UBI{c1c*i(Pq>>S8T$7B [bm(0 s,"3DINs2 Ʃ k99!Fr+wf+FgHFI,78*| 4;F}@!ל$P=82S7Mh01UvW,-p:2J0zZK25 jv7$ "ĜAuGGaSp5zmOQX߰8!Q7NtN=`+ 0j7q+;i:EPhP[p f 3m5β*z/" n!s 9 nǭC.Rr31Tx.% rX \ Ep*P)K^+zY9* ` Pb0QAd?jx<$G1* P\`zS sQ% j;nĢ57;r;4wW+@EB fJ9*ݰ$F&}P`{Y r [5*ߡv-0; %E3MPRs'QR/|313d/B—YWI4{n3 VF3N6KpW2Bp2 ht ;谻T~CPQU#ǻo1!{R.,*#ty(uA[+q7hA XC (rwBw.,S&w7h-@*@AJJIgYkSLl9!}tQ95EIj 3]]*!!f k789/1!EErS)E|6Osed#ɦe%CWc490hlIi*N8`o`\ƤR8p  Pp7& d;tU~3 b8G3aL@DȏY/r ,5O=.S{l ht8AK`3ҋkDə opN8@ʌMKr"gQ30n2X\*BR8:[Noxo0/odNmn.[RWqP FP2W 8=fx6p3u`e,lK,K}Dp )mo{Y2/6U$2ҵ418kX1_d.[Q@U]Q1 UspREPjU$<M\ ws :!L]\)U)iN`|a=Zql %Sm/ gx$j7r`&Q]N aԀRmZ]aL$a=L]}Rm3@F9roPQdUݗGiAK]EP=ϓ\ԁ(#o$^&^*=KYEoxAy< ~$ QapKPmK`*P]pV~]']G 9 ]}Ʉ}m҈<<l]WNORNGr$tc!<hQ1e@a (RZ=ta*(w˖ovA(-D8P5  Us$O<%/S {?U+.|Z Ṯn7Kp8[7T*uֻͤBJ59VZXN P8 op>\D@(P HNu!`?Pv Yc 6RKbY A) Ҝ*K{A\NU"5= @AK #u1m,`m2cڐDAZDh: sN7@4a䩰^g P&Q}};O#~⹮atl?)?e6Se ]UeDzN }N՚!eLW WP벑*Qq'9S>V%K7?0B|7Q^xp!@npNWbO+>1ͲQaQ3Ňe4}+&KWDo*K}*\M}HVWW*qM8\a#K* 8 D}V ]~~2}}! R*MR#!#Ÿ77 7*9 AAOulU:!N*K}K\8qDpys'LQW} .GB\A vMpQc!@%(`4-5$x#Gf$@ $>a2<J7r~u"(``7B "pMEK'@2Fc6qHxB!PĈa"H,yDr&&p#8`PA}=hdkV޺b- wQӷQ" T$!̏5kTB'KphY<z!C*p`)9+HF*ŀvZ u`MA4P> BUD 0f1@P]@tdġC AXkLdPЂ L@~m Pb_L<D $t@&&c ]P`B `Z 0uiL VB*01~)jH@ .)6896~caMd J tTBu0j"Q~Q8~GX1,j !i2-&,@ ) 2Ħ 6PeKrZ0uk8*dԀ*@=QE Nń H-,|--xA3P]D DA@μƛ/ +&nLwTHB0(f pq`a~qd 0|<x $]tJ`k[D]G$< :cAQ 蕗LT0>Os@ ae |롺ha ,2< F ŝ (źu<17ZX%dn?=ݧ.NOtTnFxdC]YE-FW\`$Oi?gpNV gpa`9D c7 ,u ދ?^*U+`@x2` @ȇs1C"HZKu:mc~hF_0onf ;=^8k.ฆB HVUԨ@BЪs$.x ]T%lUBt(3l`ӵ `?NP:h59*ܲgn{ۘa$9(TN2Û+| ˆjy͌s8\ U6suтq3xN PAv4 *@؀|P$p d;4? 4›4hC\]4[5XY-@,` @.xt;(Wj7BQ׼ZE VJIKNdз`]g/,AЅu""< lDwג b8½ːVv$@fu*+:ssUNꀋ 9`ΫM.@ ̃ݐ{ً^MPOݘ/û``* ~r> SR+՗5nPNn/Y4/PJ!XWDG+-f[`y!Rp1}& ?0>ӂb0>C H OmmPK@&#ׇ>(˗:NS`7{tƅ>؇d@h؃UcQb+ gH C@mPuTЇ" '4y`u]ƈkc~ׅߠQDYPK z>ۓ9uj5H4ah+3QC`(bp{8-&cr6`'8"Ї H`Xek7 ?}86a6 𧑏cm}!)0F4pPB8 p_hox/7)BdBI>`B蓜 i\RP0YHeu6`"Q#$h;)XzZi^Af%ȗrl+Hd{T=8Ap5]Nf8Cņ)׈ȇ}d0øB\)i!O0YI50Yr]؉e5bӜ{)0<~$F9`-lJx Y!Y?|Xcyb׃9!6?6G_8>0Ói>BI00(5B)B r8h9p.I3Jͩ/.)hiL'M2 څyTPBә9pcp4+?_*I=j>H?Q+`odG.d8Y@wT8ɑY(+4/E$jT=O5g{~eimYjm`*)+ B`y0eYlQ A]+$jZJʧQRB@ X0l:"1't,2BTp3=Wç;૞tNY E)9X٣+P:Z AS D<qY ]KQI/b_7:B/>m^h/ÀjV9{WǴW/B P8e"0 <6 * x)V)wPdGJLK9K.$g&S_X #2PP@*9=Ez94g^X$xzYL7ڲ[+47( Fd3831TxGcf=>{L(u[LЄA(h;9rC&^a.*G韐9TD.ݣ=e~YjMJ K:9'9>?< >YyU>bI|1I:5O ? **V CI!I~r;p^&rp]P~q~!3Xs>pZ;r%IfJ"$DjG`~!b0y@A@za p!-+3hJBQGb"/ t(5V:e*`_b,_$VP*4EٔuV| S 14hR4-PePukI/ԫZ9E^We9"04W}+8i&,sèQGF[[ڑVyk .Q0FkX*"9&9@<: @[|"؋N0P%㜻$;#?. -9I|\[Εn:+й;3 ( 8Yҝc9Tѡ#7~"=ս[!չ5$]=ms]Ykֹ9-WrWf@xmw}>="8z3: $Fip›^l[S:=_aə ֨]h1K%$Bay9'B,$8^/+M*H{>$+C#$43cG#8DELpN D=k<>mB5Oxx:=!a+۶=/ }3m-QّmQ `^L k;_3http://media.lasvegasweekly.com/assets/js/urchin.jsO`bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver" &,-345QRSTUVWXYZ[\]^_`abcdefgklU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1!  '()$+WNS.base[NS.relative_3http://media.lasvegasweekly.com/assets/js/urchin.js./01X$classesZ$classname12UNSURLXNSObject#AhU 6789EWNS.keysZNS.objects:;<=>?@ABCD FGHIJKLMNOP]Last-ModifiedWExpires]Cache-Control]Accept-Ranges_Content-Encoding\Content-TypeVServer^Content-LengthTDateTEtagTVary_Thu, 29 May 2008 08:30:01 GMT_Wed, 04 Jun 2008 19:40:09 GMT\max-age=7200UbytesTgzip_text/javascriptTSpudT6440_Wed, 04 Jun 2008 17:40:09 GMT\"1308438737"_Accept-Encoding./hiij2_NSMutableDictionary\NSDictionaryUq./mnno2_NSHTTPURLResponse]NSURLResponse)27:PRd  FKT_bhqz|!.5DINSs %25:>Rp`OUq//-- Google Analytics Urchin Module //-- Copyright 2007 Google, All Rights Reserved. //-- Urchin On Demand Settings ONLY var _uacct=""; // set up the Urchin Account var _userv=1; // service mode (0=local,1=remote,2=both) //-- UTM User Settings var _ufsc=1; // set client info flag (1=on|0=off) var _udn="auto"; // (auto|none|domain) set the domain name for cookies var _uhash="on"; // (on|off) unique domain hash for cookies var _utimeout="1800"; // set the inactive session timeout in seconds var _ugifpath="/__utm.gif"; // set the web path to the __utm.gif file var _utsp="|"; // transaction field separator var _uflash=1; // set flash version detect option (1=on|0=off) var _utitle=1; // set the document title detect option (1=on|0=off) var _ulink=0; // enable linker functionality (1=on|0=off) var _uanchor=0; // enable use of anchors for campaign (1=on|0=off) var _utcp="/"; // the cookie path for tracking var _usample=100; // The sampling % of visitors to track (1-100). //-- UTM Campaign Tracking Settings var _uctm=1; // set campaign tracking module (1=on|0=off) var _ucto="15768000"; // set timeout in seconds (6 month default) var _uccn="utm_campaign"; // name var _ucmd="utm_medium"; // medium (cpc|cpm|link|email|organic) var _ucsr="utm_source"; // source var _uctr="utm_term"; // term/keyword var _ucct="utm_content"; // content var _ucid="utm_id"; // id number var _ucno="utm_nooverride"; // don'