bplist00f_WebSubresources_WebMainResource #(,05:>BGKOSWX\]^_`ab _WebResourceResponse_WebResourceData^WebResourceURL_WebResourceMIMETypeObplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?GOZNS.objectsWNS.keys@ABCDEFHIJKLMN VServer]Accept-Ranges]Last-ModifiedTDate^Content-LengthTEtag\Content-Type_lighttpd/1.4.10Ubytes_Tue, 15 Nov 2005 02:26:30 GMT_Wed, 31 May 2006 17:11:47 GMTS608_"6355448237789221884"12^__`6_NSMutableDictionary\NSDictionary12bcc6_NSHTTPURLResponseInternal12effg6_NSHTTPURLResponse]NSURLResponse$)2DILbd+-/1_dmx|(-:LRrh)O`PNG  IHDRagAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDATxb?eF d%Ya (D7UZAf^5 O71(`Wkàrj.% bUpqbkgP5ۏ /J0|> Ke2|\AjrÛ "#A\ m}#An?m}*+!-.WNS.base[NS.relative_%http://static.last.fm/css/22/Main.css1234X$classesZ$classname456UNSURLV%NSURLXNSObjectXtext/css9:;=>?ISZNS.objectsWNS.keys@ABCDEFGHJKLMNOPQR _Content-EncodingTVary]Last-Modified]Accept-RangesVServerTDate^Content-LengthTEtag\Content-TypeTgzip_Accept-Encoding_Thu, 23 Mar 2006 16:17:02 GMTUbytes_lighttpd/1.4.10_Wed, 31 May 2006 17:11:47 GMTU12268_"-3758892782658764678"12fggh6_NSMutableDictionary\NSDictionary12jkk6_NSHTTPURLResponseInternal12mnno6_NSHTTPURLResponse]NSURLResponse$)2DILbd #/135]bkvz  .5:IN[`r9>BVpdO"body { font-family: Arial, Helvetica, Verdana, sans-serif; font-size: 12px; line-height: 1.4em; background: #FFF; color: #564B42; margin: 0; padding: 0; } a:link, a:hover, a:visited, .articleDisplay h3 a:visited, .journals h4 a:visited, span.userIcon a:visited, span.staffIcon a:visited, span.subscriberIcon a:visited, span.modIcon a:visited { color: #3F3731; } .articleDisplay a:visited, .forumtable a:visited, .journals a:visited { color: #867463; } p, li { margin-top: 10px; } .articleDisplay li { margin-top: 5px; } form, fieldset { margin: 0; padding: 0; border: 0;} textarea { margin:0; padding:0;} td { font-size: 11px; } img { border:none; } h3, h3 a:link, h3 a:visited { font-size: 14px; color: #43281E; line-height: 21px; margin-bottom: 10px; margin-top: 10px; text-decoration: none; } h4 { font-size: 12px; margin-top: 0.5em; margin-bottom: 0.5em; color: #5D3A2D; } th { text-align:center; background: #EDF0E6; color: #564B42; font-weight: bold; font-size: 11px; } small { font-size: 11px; } smaller, tiny { font-size: 10px; } table { padding:0px; margin:0px; border:0px; } table.form { padding: 0px; width:100%; } table.form .divider h3 { border-bottom: 1px solid #CFCFCF; } table.form textarea { width: 90%; height: 80px; } table.form input[type="text"]{ width:30%; } table.form td { padding-bottom:5px; } table.form td.label { text-align:right; padding-right:5px; font-size:12px; vertical-align:top; } table.form span.required { color:red; } table.form span.error { color:red; font-weight:bold; font-size:13px; } /* for 3-column layout pages */ #LastContent3 { margin: 10px 200px 0 200px; padding: 0 30px 25px 20px; border-top: 1px solid #FFF; border-right: 1px solid #EAECE2; border-left: 1px solid #EAECE2; } /* for 2-column layout pages */ #LastContent2 { margin: 10px 20px 0 200px; padding-bottom: 25px; padding-left: 20px; border-top: 1px solid #FFF; border-left: 1px solid #EAECE2; } /* for 1-column layout pages */ #LastContent1 { margin: 0 15px 0 20px; padding-bottom: 25px; } .nonav#LastContent3, .nonav#LastContent2 { margin-top: 15px; } #LastContextSidebar, #LastSearchSidebar { position: absolute; top: 130px; padding: 10px 11px 0 10px; left: 0px; width: 180px; overflow: hidden; color: #605C5B; } #LastConnectionsSidebar { position: absolute; top: 154px; padding: 11px 5px 0 10px; width: 186px; right: 0; color: #605C5B; } .nonav#LastConnectionsSidebar { top: 130px; } #featurepanel p, #radio p { margin-bottom: 0.5em; } #LastFooter { clear: both; margin: 50px 0 20px 220px; color: #91998E; font-size: 10px; } #LastFooter p { margin-top: 5px; } #roundFooter { margin-left: -11px; margin-top: 10px; padding-left: 7px; background: url('http://static.last.fm/images/footer_left.gif') top left no-repeat; height: 30px; overflow: hidden; } #scrobblerlink { margin-top: 10px; display: block; } #rfContent { float: left; height: 30px; padding-right: 10px; background: url('http://static.last.fm/images/footer_right.gif') top right no-repeat #EBEEE4; } #rfContent a { font-size: 11px; margin-left: 5px; margin-right: 5px; text-decoration: none; line-height: 29px; color: #878A81;} #rfContent a:hover { text-decoration: underline; color: #444641;} #LastHeader { height: 100px; color: #E7A6CF; background: #D20039; overflow: hidden; } #LastHeader a { color: #E7A6CF; } #LastHeader a:hover { color: #FFF; } #LastLogo { position: absolute; top: 10px; left: 15px; height: 85px; width: 185px; color: #FFF; } #LastLogo .powered { display: block; font-size: 10px; margin-left: -1px; } #roundsearchbox { margin-top: 12px; } #LastHeader #roundsearch { width: 106px; height: 25px; float: left; margin-right:3px; overflow: hidden; margin-left: -3px; background: url("http://static.last.fm/images/roundsearch.gif") top left no-repeat; position: relative; z-index:15; } div.safari#roundsearchbox #roundsearch { margin:0px 1px 0 0;background:none;} #roundsearch input { height: 18px; width: 80px; float: left; background: transparent; border: 0; margin: 3px 9px 0 13px; padding: 3px 7px 0 0; color: #91998E; font-size: 11px; overflow: hidden; } div.safari#roundsearchbox #roundsearch input { width: 101px; margin-left: 0px; } #LastHeader div.searching#roundsearch { background: url("http://static.last.fm/images/roundsearch.gif") 0 -25px no-repeat transparent; } #LastHeader div.searching#roundsearch input { color: #333; } #LastHeader .safari div.searching#roundsearch { background: 0;} #roundsearchbox .sbutton { float: left; margin-top: 2px;} #HeaderMenu { margin: 1px 200px 0 208px; } #HeaderMenu ul.extralinks { margin: 9px 0 0 0; width: 85px; list-style: none; float: right; padding: 0; } #HeaderMenu ul.extralinks li { margin: 5px 0 0 0; font-size: 11px; line-height: 12px; } /* Primary Navigation */ #navigation { margin-top: 12px; height: 55px; width: 300px; float: left; } #navigation ul { background: url("http://static.last.fm/matt/nav/nav_smaller.gif") top left no-repeat transparent; padding: 0; margin: 0; position: relative; height: 45px; } #navigation li { margin: 0; padding: 0; position: absolute; top: 0; list-style: none; height: 45px; display: block; } #navigation li a { display: block; text-decoration: none; padding-top: 38px; height: 15px; line-height: 15px; text-align: center; } #navUsers { left: 0; width: 47px; } #navMusic { left: 50px; width: 47px; } #navRadio { left: 100px; width: 47px; } #navGroups { left: 150px; width: 47px; } #navCharts { left: 200px; width: 47px; } #navHelp { left: 250px; width: 47px; } #navigation li a:hover, #navigation li.current a { color: #FFF; } #navigation #navUsers a:hover, #navigation li.current#navUsers a { background: url("http://static.last.fm/matt/nav/nav_smaller.gif") 0 -56px no-repeat #D20039; } #navigation #navMusic a:hover, #navigation li.current#navMusic a { background: url("http://static.last.fm/matt/nav/nav_smaller.gif") -50px -56px no-repeat #D20039; } #navigation #navRadio a:hover, #navigation li.current#navRadio a { background: url("http://static.last.fm/matt/nav/nav_smaller.gif") -100px -56px no-repeat #D20039; } #navigation #navGroups a:hover, #navigation li.current#navGroups a { background: url("http://static.last.fm/matt/nav/nav_smaller.gif") -150px -56px no-repeat #D20039; } #navigation #navCharts a:hover, #navigation li.current#navCharts a { background: url("http://static.last.fm/matt/nav/nav_smaller.gif") -200px -56px no-repeat #D20039; } #navigation #navHelp a:hover, #navigation li.current#navHelp a { background: url("http://static.last.fm/matt/nav/nav_smaller.gif") -250px -56px no-repeat #D20039; } #LastHeadline { height: 30px; padding-left: 14px; padding-right: 10px; background: #91998E; overflow:hidden; } #LastHeadline h1 { font-size: 18px; line-height: 21px; margin: 0; padding: 0; margin-top: 4px; padding-top: 1px; overflow: hidden; color: #FFF; white-space:nowrap; } h1 span { display: none; } #LastHeadline h1.h1user { padding-left: 26px; background: url("http://static.last.fm/matt/h1/user.gif") no-repeat; } #LastHeadline h1.h1users { padding-left: 26px; background: url("http://static.last.fm/matt/h1/users.gif") no-repeat; } #LastHeadline h1.h1artist { padding-left: 26px; background: url("http://static.last.fm/matt/h1/star.gif") no-repeat; } #LastHeadline h1.h1album { padding-left: 26px; background: url("http://static.last.fm/matt/h1/album.gif") no-repeat; } #LastHeadline h1.h1track { padding-left: 26px; background: url("http://static.last.fm/matt/h1/note.gif") no-repeat; } #LastHeadline h1.h1group { padding-left: 26px; background: url("http://static.last.fm/matt/h1/group.gif") no-repeat; } #LastHeadline h1.h1tag { padding-left: 26px; background: url("http://static.last.fm/matt/h1/tag.gif") no-repeat; } #LastHeadline h1.h1label { padding-left: 26px; background: url("http://static.last.fm/matt/h1/label.gif") no-repeat; } #LastHeadline h1.h1help { padding-left: 26px; background: url("http://static.last.fm/matt/h1/help.gif") no-repeat; } #LastHeadline h1.h1find { padding-left: 26px; background: url("http://static.last.fm/matt/h1/find.gif") no-repeat; } #LastHeadline h1.h1chart { padding-left: 26px; background: url("http://static.last.fm/matt/h1/chart.gif") no-repeat; } #LastHeadline h1.h1radio { padding-left: 26px; background: url("http://static.last.fm/matt/h1/radio.gif") no-repeat; } #LastHeadline h1.h1pony { padding-left: 26px; background: url("http://static.last.fm/matt/h1/pony.gif") no-repeat; } #LastHeadline h1.h1place { padding-left: 30px; } #SecondaryNav { margin-left: 200px; padding-left: 8px; height: 30px; background: #EBEEE4; color: #383D42; } #LastContent1 #SecondaryNav { margin-left: -20px; margin-right: -15px; margin-bottom: 10px; } h2 { font-size: 16px; color: #43281E; } #SecondaryNav ul { padding: 0; margin: 0; } #SecondaryNav li { display: inline; padding-top: 5px; } #SecondaryNav li a { margin-top: 5px; color: #383D42; padding-left: 12px; padding-right: 12px; line-height: 20px; height: 20px; border-right: 1px solid #F1F2EB; text-decoration: none; display: block; float: left; } #SecondaryNav li a:hover { background: #F1F2EB; text-decoration: underline; } #SecondaryNav li a.current:hover { background: #564B42; } #SecondaryNav li a.current { font-size: 12px; font-weight: bold; text-decoration: none; color: #FFF; background: #564B42; } /* Last.fm Dashboard Look and Feel ---------------------------- */ #dashboard { position: absolute; top: 0; right: 0; padding: 10px; width: 180px; height: 95px; font-size: 10px; overflow: hidden; line-height: 15px; } #dashboard a { color: #564B42; font-size: 8pt;} #dashboard .dashTop { background: #F1F3EB; overflow: hidden; height: 49px; border: 1px solid #F1F3EB; border-bottom: 0; } #dashboard .dashBottom { background: #E24D75; clear: both; padding: 1px 9px 2px 7px; line-height: 14px; font-size: 10px; border: 1px solid #F1F3EB; border-top: 0; } #dashboard .dashBottom a { color: #FFF; } #dashboard .dashBottom a span { font-weight: bold; } #dashboard .dashTop .toplinks { float: left; width: 120px; padding-left: 7px; margin-top: 3px; } #dashboard .toplinks a:link, #dashboard .toplinks a:visited { line-height: 14px; color: #564B42; font-size: 8pt; } #dashboard .dashTop .userpic { width:50px; height:50px; overflow:hidden; float:right; } #dashboard form { margin: 0; padding: 0; } #dashboard label { font-size: 10px; font-weight: normal; padding-right: 5px; line-height: 13px; color: #FFF; padding-left: 10px; } #dashboard .login { text-align: right; } #dashboard .LoginBox { width: 82px; height: 15px; margin-bottom: 2px; font-size: 10px; vertical-align:middle; } #dashboard .button { clear: left; display: inline;} #dashboard .login p { margin-top: 5px; margin-bottom: 0; font-size: 10px;} #dashboard .small { line-height: 1.1em; } #dashboard .small a { color: #FFF; } #tabheader { position: relative; height: 30px; border-bottom: 1px solid #eaece2; } #tabheader ul#tabs { position: absolute; margin: 0; padding: 0; padding-bottom: 1px; bottom: -2px; width: 100%; /* a width is required for Opera, older Mozilla browsers, and Konqueror browsers */} #tabheader ul#tabs li { display: inline; list-style: none; font-weight: bold; color: #000; } #tabheader ul#tabs a, #tabheader ul#tabs span, #tabheader ul#tabs a.current { width: 90px; line-height: 19px; display: block; float: left; padding: 4px 0; margin: 1px 4px 0 0; text-align: center; text-decoration: none; color: #333; } #tabheader ul#tabs span,#tabheader ul#tabs a.current,#tabheader ul#tabs a.current:hover { border: 1px solid #eaece2; border-bottom: none; background: #FFF; padding-bottom: 6px; margin-top: 0; } #tabheader ul#tabs a { background: #EFEFEF; color: #777; border: 1px solid #CFCFCF; border-bottom: #eaece2; } #tabheader ul#tabs a:hover { margin-top: 0; border-color: #BBB; border-bottom: #eaece2; background: #FFFFFF; padding-bottom: 5px; color: #333; } #tabbody { margin-top:0px; margin-bottom:20px; border:1px solid #eaece2; padding:25px; border-top:0; }.radioButton, .previewAll, .downloadRound, .buyButton { height: 22px; margin-bottom: 5px; margin-top: 5px; line-height: 22px; font-size: 10px; color: #464038; background:url('http://static.last.fm/matt/radio/radio_right.gif') top right no-repeat; padding-right: 14px; } .downloadRound, .previewAll, .buyButton { background:url('http://static.last.fm/matt/radio_right_new.gif') top right no-repeat; margin: 0 5px 0 0; font-size:11px;} .redRadio { background:url('http://static.last.fm/matt/radio/radio_right_red.gif') top right no-repeat; } .whiteRadio { background:url('http://static.last.fm/matt/radio/radio_right_white.gif') top right no-repeat; } .disabledRadio { background:url('http://static.last.fm/matt/radio/radio_right_disabled.gif') top right no-repeat; } .radioButtonMini { height: 22px; width: 22px; margin-top: 0; } .radioButtonContent, .previewAllContent, .downloadRoundContent, .buyContent { background:url('http://static.last.fm/matt/radio/radio_left.gif') top left no-repeat; height: 22px; padding-left: 22px; } .downloadRoundContent { background:url('http://static.last.fm/previewbuttons/download_left.gif') top left no-repeat; } .buyContent { background:url('http://static.last.fm/matt/buy_left.gif') top left no-repeat; } .previewAll { font-size: 11px; } .previewAll .flash { background:url('http://static.last.fm/matt/previewall_flash.gif') top left no-repeat; } .previewAll .player { background:url('http://static.last.fm/matt/previewall_left.gif') top left no-repeat; } .previewAll .flashflp { background:url('http://static.last.fm/previewbuttons/left_flp-flash.gif') top left no-repeat; } .previewAll .playerflp { background:url('http://static.last.fm/previewbuttons/left_flp.gif') top left no-repeat; } .redRadio .radioButtonContent {background:url('http://static.last.fm/matt/radio/radio_left_new.gif') top left no-repeat;} .whiteRadio .radioButtonContent {background:url('http://static.last.fm/matt/radio/radio_left_white.gif') top left no-repeat;} .disabledRadio .radioButtonContent {background:url('http://static.last.fm/matt/radio/radio_left_disabled.gif') top left no-repeat;} .radioButtonMini .radioButtonContent { background:url('http://static.last.fm/matt/radio/minipreview.gif') top left no-repeat; height: 22px; width: 22px; padding: 0; } .flpRadio .radioButtonContent, .flpRadio .radioButtonContent a { background:url('http://static.last.fm/matt/radio/radio_mini_red.gif') top right no-repeat; } .radioButton a, .previewAll a, .downloadRound a, .buyButton a { display: block; width: 100%; text-decoration: none; color: #464038; background:url('http://static.last.fm/matt/radio/radio_left_new.gif') top left no-repeat; margin-left: -22px; padding-left: 27px; height: 22px; overflow: hidden; } .previewAll a { background:url('http://static.last.fm/matt/previewall_left.gif') top left no-repeat; } .previewAll .flash a { background:url('http://static.last.fm/matt/previewall_flash.gif') top left no-repeat; } .previewAll .playerflp a { background:url('http://static.last.fm/previewbuttons/left_flp.gif') top left no-repeat; } .previewAll .flashflp a { background:url('http://static.last.fm/previewbuttons/left_flp-flash.gif') top left no-repeat; } .downloadRound a { background:url('http://static.last.fm/previewbuttons/download_left.gif') top left no-repeat; } .buyButton a { background:url('http://static.last.fm/matt/buy_left.gif') top left no-repeat; } .redRadio a, #LastConnectionsSidebar .redRadio a, #LastContent1 .redRadio a, #LastContent2 .redRadio a, #LastContent3 .redRadio a { color: #FFF; background:url('http://static.last.fm/matt/radio/radio_left_red.gif') top left no-repeat; } .whiteRadio a {background:url('http://static.last.fm/matt/radio/radio_left_white.gif') top left no-repeat;} .disabledRadio .radioButtonContent a { background:url('http://static.last.fm/matt/radio/radio_left_disabled.gif') top left no-repeat; color: #BABBB4; text-decoration: none; } .radioButtonMini a { display: block; height: 22px; width: 22px; background:url('http://static.last.fm/matt/radio/minipreview.gif') top left no-repeat; margin: 0; padding: 0; } .radioButton a:hover { color: #000; text-decoration: underline; } .disabledRadio a:hover { color: #BABBB4; text-decoration: none; } .redRadio a:hover { color: #FFF; } .previewbutton { font-size: 10px; width: 115px; float: right; margin-top: -25px; margin-right: -5px; } .tagradioholder { float:left; margin-right: 20px; } #NewRadioBox strong { display:block; color: #D20039; margin-left: 3px; } #NewRadioBox h2.radioh2 { margin: 10px 0 5px 0;background:url('http://static.last.fm/images/radio_off_bw.gif') center left no-repeat; margin-left: 1px;} #NewRadioBox h2.radioh2 a { vertical-align:middle; padding-left:17px; font-size: 11px; margin: 0; font-weight: normal; border: 0; text-decoration: underline; } #NewRadioBox h2.radioh2 a span { font-weight: normal; } /* new preview button styles */ .flashPreview a, .radioPreview a { background: url('http://static.last.fm/previewbuttons/flash/track_preview.gif') center left no-repeat; overflow: hidden; font-size: 11px; line-height: 12px; padding: 0 0 0 26px; display: block; width: 160px; height: 20px; } .flashPreview a.flp { background-image: url('http://static.last.fm/previewbuttons/flash/track_flp.gif');} .radioPreview a { background-image: url('http://static.last.fm/previewbuttons/radio/track_preview.gif');} .radioPreview a.flp { background-image: url('http://static.last.fm/previewbuttons/radio/track_flp.gif');} tr.alt .radioPreview a { background-image: url('http://static.last.fm/previewbuttons/radio/track_preview_alt.gif');} tr.alt .radioPreview a.flp { background-image: url('http://static.last.fm/previewbuttons/radio/track_flp_alt.gif');} tr.alt .flashPreview a { background-image: url('http://static.last.fm/previewbuttons/flash/track_preview_alt.gif');} tr.alt .flashPreview a.flp { background-image: url('http://static.last.fm/previewbuttons/flash/track_flp_alt.gif');} #tracklist tr.althack { background: url('http://static.last.fm/previewbuttons/althack.gif') top left repeat-x #FFF; } tr.lightalt {background-color:#F5F6F1;} tr.lightalt td.buttonholder { background: url('http://static.last.fm/previewbuttons/left_lightstripe.gif') top left repeat-y #F5F6F1; } tr.alt td.buttonholder { background: url('http://static.last.fm/previewbuttons/left_darkstripe.gif') top left repeat-y #EBEEE4; } .minilist tr.lightalt td.end { padding-right: 5px;background: url('http://static.last.fm/previewbuttons/right_lightstripe.gif') top right repeat-y #F5F6F1; } .minilist tr.alt td.end { padding-right: 5px; background: url('http://static.last.fm/previewbuttons/right_darkstripe.gif') top right repeat-y #EBEEE4; } .buttononlyflash a, .buttononlyplayer a, .buttononly a { background-image:url('http://static.last.fm/previewbuttons/white/flash_track_preview.gif'); height: 20px; width: 20px; padding: 0; margin-right: 5px; } .buttononlyplayer a { background-image:url('http://static.last.fm/previewbuttons/white/player_track_preview.gif'); } .buttononlyflash a.flp { background-image:url('http://static.last.fm/previewbuttons/white/flash_track_flp.gif'); } .buttononlyplayer a.flp { background-image:url('http://static.last.fm/previewbuttons/white/player_track_flp.gif'); } #sysrecs_table .buttononly a, #recstable .buttononly a { margin-left: 11px; margin-right: 0; margin-bottom: 1px;background-position: top left;} #sysrecs_table .flashBox, #recstable .flashBox { margin-left: 11px; margin-top: -2px; } td.download { white-space: nowrap; border-left: 3px solid #FFF; line-height: 22px;} .downloadButton { margin-left: 5px; font-size: 11px; color: #464038; height: 20px; padding-right: 15px; }table.forum { width:100%;} table.forum thead { background-color:#D1E9F5;} table.forum tr {background-color:white;} tr.alt {background-color:#EBEEE4;} td.lastdate {white-space:nowrap} td .forumdate { padding-left: 5px; font-size: 11px; } #recentGroupDiscussions td.lastdate {white-space:normal} div.forumview #topbar {padding-top:5px; padding-bottom:5px;} div.forumview #bottombar {padding-top:5px;} a.forumnew { display: block; text-decoration: none; height: 20px; line-height: 20px; margin: 0px; font-size: 13px; width:100px; margin-bottom: 5px; padding-left:15px; border: 1px solid #F5F6F1; background: url("http://static.last.fm/matt/more_off.gif") center right no-repeat #F5F6F1; } a.forumnew:hover { background: url("http://static.last.fm/matt/more.gif") center right no-repeat #F5F6F1; border: 1px solid #DCDFD6; text-decoration: underline; } table.forumtable tr.alt td { background: #FFF; } span.reply { display: block; text-align: right; text-transform: uppercase; margin-right: 2px; margin-bottom: 5px; margin-top: -3px;} div.thread #bbsection { width: 80%; } div.forumThread, div.forumExcerpt { overflow: hidden; border: 1px solid #B8BFB6; margin-top: 1em; margin-bottom: 2em; clear:both; } div.forumPost { clear: both; padding: 12px 20px 0px 130px; font-size: 13px; color: #564B42; background: url("http://static.last.fm/matt/forumback_alt.gif") top left repeat-y #FFF; border-top: 1px solid #D5DBD3; } .messageEditor { font-size: 11px; } div.forumThread .first { border-top: 0;} .forumExcerpt div.forumPost { border: 0; } .alt div.forumPost{ background: url("http://static.last.fm/matt/forumback.gif") top left repeat-y #F2F4E9; } div.forumPostThread { border: 0; } div.forumPost .message { margin-top: -8px; } .thecomments div.forumPost .message { margin-top: 0; } div.forumPost .userDisplay { padding-bottom: 5px; margin-left: -126px; display: inline; z-index: 2; height: auto; margin-bottom: 0; } table.forumtable { margin: 3px 0px 3px 0px; width:100%; /* border: 1px solid #B8BFB6; */ clear:both; } table.forumtable td { padding: 4px 1px 4px 1px; font-size: 12px; background: #F2F4E9; } #recentGroupDiscussions table.forumtable { border: 1px solid #CCC;} #recentGroupDiscussions table.forumtable td { font-size: 11px; } table.forumtable small { font-size: 11px; } table.forumtable h4 { font-size: 12px; margin-bottom: 0.5em; margin-top: 1em; } table.forumtable .forumLogo { margin-top: 5px; } span.quote, span.quote span.quote span.quote, span.quote span.quote span.quote span.quote span.quote { display:block; background-color: #DBDED4; border: 1px solid #CCC; font-style: italic; padding: 10px; font-size: 11px; margin:5px 20px 0px 16px; color: #444; } span.quote span.quote, span.quote span.quote span.quote span.quote, span.quote span.quote span.quote span.quote span.quote span.quote { background-color: #FFF; color: #777; } .forumExcerpt div.forumPost .userDisplay { padding-bottom: 0px; } div.forumPost .userDisplay .userStats { display: block; margin-top: 5px; } div.forumPost .forumLine, .forumExcerpt div.forumPost .forumLine { clear: both; height: 24px; margin: 0 -20px 0 -16px; padding-right: 20px; text-align: right; font-size: 11px; line-height: 23px; padding-bottom: 0; } .forumExcerpt div.forumPost .forumLine { margin-left: -130px; background: #F2F4E9; } div.forumPost .forumLine a:hover { color: #333; } div.forumLine a { margin-right: 5px; } div.forumLine a.readmore, div.forumLine a.quotebutton { margin-right: 0; } div.forumPost h3 a, div.forumPost h3 { font-size: 12px; font-weight: bold; border-bottom: 0; text-decoration: none; margin-top: 8px; } #LastContent3 div.forumPost h3 a:hover { text-decoration: underline; } .pagination { display: block; height: 20px; line-height: 20px; text-align: right; float:right; margin-top:-4px; padding:0px 0px 0px 5px; background-color:#F5F6F1; border: 1px solid #DCDFD6; } .pagination .pages { padding-right: 10px; color: #91998E; font-size:11px; line-height:20px; } .pagination a, .pagination .selected { margin-right: 5px; } .pagination .selected { font-weight: bold; } #c_shoutboxPanel { margin-top: 5px; margin-left: -5px; padding: 5px; } .shoutboxMsg { line-height:13px; background: #F7F8F3; padding: 3px 5px 5px 5px; margin: 0 -4px 10px -5px; width: 169px; overflow: hidden; } .shoutboxMsg img { border: 0; position: relative; z-index: 101;} .shoutboxMsg small { line-height:15px;display:block;color: #B7B9B0; } #shoutPost { margin-top: 10px; margin-left: -5px; padding: 5px; height:75px; } #shoutmsg { border:1px solid black; width:100%; height:50px; } #shoutPostWait { margin-top: 10px; margin-left: -5px; padding: 5px; height:75px; text-align:center; }/* Headers */ #blogitems h3 a:link, #blogitems h3 a:visited, .UnderCols h3 a:link, .UnderCols h3 a:visited { text-decoration: underline; } .bigger3 h3.help { margin-top: 40px; margin-bottom: 25px; font-size: 18px; } #LastContent2 h3 a, #LastContent3 h3 a { border: 0; } #LastContent1 h3 a:hover, #LastContent2 h3 a:hover, #LastContent3 h3 a:hover { text-decoration: underline; } #LastContextSidebar h4 , #LastSearchSidebar h4, #LastConnectionsSidebar h4 { font-size: 11px; margin-bottom: 0; } /* Search sidebars */ .searchGroup { padding-bottom: 20px; } .searchGroup p { margin-top: 0.5em; } .searchGroup .lilhelp { margin-top: -0.5em; color: #999; font-size: 9px; } .likesartists { font-size: 11px; color: grey; font-family: Helvetica, Arial, Verdana; } .likesartistsselected { font-size: 10px; color: black; font-family: Courier; } p.or { text-align: center; padding-bottom: 2em; margin-bottom: 0; color: #AAA; } #controls { clear: both; height: 25px; padding-bottom: 5px; } #viewtoggle, #viewtoggle1, #viewtoggle2, .controls div.collapsed, .controls div.expanded { float: left; } #viewtoggle a, #viewtoggle1 a, #viewtoggle2 a, .controls div.collapsed a, .controls div.expanded a { display: block; width: 175px; line-height: 20px; background: #F1F3EB; padding-left: 5px; text-decoration: none; } #controls div.expanded a:hover, .controls div.expanded a:hover, #controls div.collapsed a:hover, .controls div.collapsed a:hover { background-color: #EBEEE4; } #controls div.expanded a, .controls div.expanded a { background: url("http://static.last.fm/matt/minus.gif") center right no-repeat #F1F3EB;} #controls div.collapsed a, .controls div.collapsed a { background: url("http://static.last.fm/matt/plus.gif") center right no-repeat #F1F3EB;} #controls .sortmenu { width: 45%; text-align: right; float: right; padding-right: 2px; } /* Paging control styles */ #paging { font-size: 11px; padding: 0em 24px 2em 12px; } #paging_left { width: 40%; float: left; text-align: left; } #paging_right { width: 40%; float: right; text-align: right; } /* Misc. Styles */ .light { color: #AAA; } a.redX, a.redX:link, a.redX:visited { font-size: 9px; color: #900; margin-left: 5px; display: inline; } .hint { font-size: 11px; color: #FFF; display: block; margin-top: 2px; } .lighter { color: #BCBCBC; } #breadcrumb { font-size: 11px; line-height: 14px; padding-bottom: 5px; margin-right: 120px; color: #725F4F; } .nonav #breadcrumb { margin-top: 0; } #breadcrumb a { color: #725F4F;} #breadcrumb a.current { color: #564B42; } h3.label { font-size: 14px; color: #43281E; line-height: 21px; margin-bottom: 10px; text-decoration: none; } .label { padding-right: 5px; } .imgPad { padding: 5px; border: 1px solid #CFCFCF; } .smImgPad { padding: 2px; border: 1px solid #CFCFCF; } .bbcode { text-align: right; border: 1px solid #CFCFCF; border-bottom: 0; background: #EFEFEF; color: #777; margin-top: 2px; } .bbcode input { font-size: 10px; color: #444; width: 100%; } #bbhelpline { text-align: right; border: 0; border-color: transparent; width: 100%; border-right: 1px solid #CFCFCF; background: #EFEFEF; } #bbbuttons li { display:inline; list-style:none; } /* 'alert' box, like "message sent" or "password changed" or some response to a form post */ /* always put text inside a

within a div/alert */ div.alert{ border:1px solid grey; padding:15px; color: #555; border: 1px solid #CCC; background: #FCF1E2; vertical-align:middle; text-align:center; font-size:100%; font-weight: bold; margin-top: 10px; } div.alert p{ padding:0;margin:0;} /* little help boxes */ .helpBox { padding: 10px; margin-bottom: 10px; margin-top: 10px; color: #555; border: 1px solid #CCC; background: #FCF1E2; } .helpBox p { margin-top: 0; margin-bottom: 0.75em; } .errorbox, .watermarkbox { padding: 12px; margin-top: 1em; margin-bottom: 1em; color: #666; border: 1px solid #CCC; background: #FCF1E2; } .watermarkbox { background: top right no-repeat #EFF2E9; line-height: 1.45em; font-size: 13px; padding-right: 125px; padding-left: 25px; } .watermarkbox a { color: #555; } a.helplink { font-size:10px; vertical-align:super; margin-left:2px; } .screenshot img { padding: 2px; border: 1px solid #CFCFCF; margin-left: -2px; margin-top: 5px; margin-bottom: 1.5em; } .pad { margin-bottom: 1.5em; } ul.paddedlist li { margin-bottom: 1em; padding-right: 10%; } th.left { text-align: left; } th.right { text-align: right; } tr.noback th { background: transparent; } th.minimal { background: #FFF; color: #91998E; border-bottom: 1px solid #EAECE2; font-weight: normal; } .larger { font-size: 12px; } /* homepage */ #splash { text-align: center; } #splash h1 { color: #564B42; margin-top: 20px; font-size: 28px; } #splash h2 { font-size: 20px; font-weight: normal; margin-top: -5px; color: #564B42; padding-bottom: 10px; } #splashsearch { margin-top: 10px; vertical-align: middle; padding-bottom: 25px; } #splashsearch .imgbutton { margin-left: 5px; margin-bottom: -12px; } #splash h3 { font-size: 18px; color: #564B42; } #splash h3 a { font-size: 18px; color: #D20039; text-decoration: none; } #splash h3 a:hover { text-decoration: underline; } #promos { margin-top: 15px; width: 500px; margin-left: auto; margin-right: auto; } #promos .promo { margin-top: 15px; font-size: 11px; float: left; width: 105px; padding-left: 9px; padding-right: 9px; border-right: 2px solid #F1F2EB; } #promos .promo a { display: block; position: relative; font-weight: bold; padding-top: 90px; font-size: 12px; color: #564B42; margin-bottom: 5px;} #promos .promo a:hover { color: #111; } #profile_p { background: url("http://static.last.fm/matt/splash/profile.gif") top center no-repeat; } #discover_p { background: url("http://static.last.fm/matt/splash/discover.gif") top center no-repeat; } #radio_p { background: url("http://static.last.fm/matt/splash/radio.gif") top center no-repeat; } #users_p { background: url("http://static.last.fm/matt/splash/users.gif") top center no-repeat; } #promos .last { border-right: none; } #splash form { border: 0; margin: 0; padding: 0; } #editorlink, #cartdisplay { position:absolute; top: 61px; right: 13px; width: 70px; text-align: right; } #cartdisplay { top:75px; } /* Last.fm Sidebar Panels Look and Feel ------------------------------------ */ /* Main panel class */ .lastPanel { width: 175px; color: #605C5B; font-size: 11px; padding: 0 5px 15px 5px; } .lastPanel a { color: #605C5B; } .lastPanel a:hover { color: #564B42; } #searchoptions .lastPanel { /* reduce padding when it's a bunch of search panels */ margin-bottom: 1.5em; } #LastSearchSidebar .lastPanel { color: #605C5B; } #LastSearchSidebar .lastPanel h2 { float: none; } #LastSearchSidebar .lastPanel td { padding-bottom: 0.5em; } div.lastPanel#featurepanel { color: #564B42; margin-top: -10px; padding-top: 10px; margin-left: -10px; padding-left: 15px; } div.lastPanel#featurepanel p, .artistInfo { background: #EBEEE4; margin: 0 -5px -5px -10px; padding: 5px 10px 5px 10px; line-height: 15px; overflow: hidden; } .artistInfo a:link, .artistInfo a:visited { text-decoration: underline; } div.lastPanel#featurepanel ul { margin: 0; padding: 0; } div.lastPanel#featurepanel div.h { margin: 0; height: 30px; margin-top: -10px; margin-left: -15px; background: #EBEEE4; padding-right: 15px; margin-right: -15px; position: relative; } div.lastPanel#featurepanel h4 { margin-top: 0; color: #564B42; font-size: 11px; } /* Panel header div */ .lastPanel .h { background: #EBEEE4; padding: 0px 5px 0px 9px; line-height: 20px; margin-left: -5px; margin-top: 5px; } div.h h2 { font-size: 11px; font-weight: normal; margin: 0; float: left; width: 70%; color: #605C5B; } div.plain h2 { float: none; width: 100%; } div.h h2 a { color: #605C5B; text-decoration: none; } div.h h2 a:hover { text-decoration: underline; } .lastPanel h3 { clear: both; font-size: 12px; margin-bottom: 10px; color: #37271C; } .lastPanel .c { margin-left: 4px; padding-right: 5px; } .lastPanel#radio div.h { background: #EBEEE4; height: 31px; overflow: hidden; } #radio { background: #EBEEE4; margin: -16px -16px 0px -10px; line-height: 30px; padding-left: 10px; padding-right: 16px; position: relative; z-index: 5; } #radio div.c { padding-left: 5px; margin-left: -1px; margin-top: -1px; padding-bottom: 5px;} #radio div.c p { margin-top: 0; padding-top: 5px; line-height: 15px; padding-bottom: 5px; } #radio div.c label { font-weight: normal; color: #605C5B; } div.lastPanel #NewRadioBox div.h { margin: 0; height: 20px; } div.lastPanel #NewRadioBox div.h h2 { color: #D20039; font-weight: bold; width: 125px; margin-left: -4px; } div.lastPanel #NewRadioBox div.h .tog { margin-right: -20px; position: relative; z-index:99; } #c_featRadio { padding-top: 5px; width: 165px; } /* Panel lists */ .lastPanel ul { list-style: none; padding: 0; margin: 0; padding-top: 8px; margin-bottom: -1em; } .lastPanel li { margin: 0; padding: 0; line-height: 16px; } .lastPanel ul.bullets li, .lastPanel ul.bullets { list-style: square inside; } .lastPanel ul.bullets li a { text-decoration: underline; } .lastPanel li.user, span.userIcon { padding-left: 14px; background: url("http://static.last.fm/usericons/user_bullet.gif") center left no-repeat; } .lastPanel li.subscriber, span.subscriberIcon { padding-left: 14px; background: url("http://static.last.fm/usericons/subscriber_bullet.gif") center left no-repeat; } .lastPanel li.staff, span.staffIcon { padding-left: 14px; background: url("http://static.last.fm/usericons/staff_bullet.gif") center left no-repeat; } .lastPanel li.forumsmod, .lastPanel li.automod, span.modIcon { padding-left: 14px; background: url("http://static.last.fm/usericons/moderator_bullet.gif") center left no-repeat; } .lastPanel ul.i li.user, .lastPanel ul.i li.subscriber, .lastPanel ul.i li.automod, .lastPanel ul.i li.forumsmod, .lastPanel ul.i li.staff { padding-left: 0; } .lastPanel li span.type { display: none; } .lastPanel ul.i li span.type { display: block; position: absolute; margin-top: -33px;} .lastPanel li a { color: #605C5B; text-decoration: none; } .lastPanel li a:hover {text-decoration: underline;} .lastPanel ul li img { display: none; } .lastPanel ul.i li.imgtags a {padding-right: 0;} .lastPanel ul.i li.imgtags a.img { display: inline; margin: 0; padding: 0; border: 0; } .lastPanel ul.i li.imgtags img { display: block; float: right; } .lastPanel ul.i { margin-bottom: 0; } .lastPanel ul.i li { display: block; padding-top: 4px; padding-bottom: 5px; } .lastPanel ul.i li a { display: block; background-color: #F7F8F3; background-position: top right; background-repeat: no-repeat; padding: 5px 55px 0 10px; overflow: hidden; height: 48px; text-align: left; font-size: 11px; border: 0; margin-left: -10px; font-weight: bold; } .lastPanel ul.i li a:hover { background-color: #F1F3EB; } .lastPanel ul.i a:hover { border: 0;} /* Panel footer div */ .lastpanel .f { margin-top: 5px; clear: both; } div.f a.more { text-decoration: none; margin-top: 5px; display: block; height: 20px; line-height: 20px; padding-right: 5px; margin-left: -6px; padding-left: 9px; font-size: 11px; border: 1px solid #F5F6F1; background: url("http://static.last.fm/matt/more_off.gif") center right no-repeat #F5F6F1; } #LastConnectionsSidebar div.f a.more { margin-left: -5px; } div.f a.more:hover { background: url("http://static.last.fm/matt/more.gif") center right no-repeat #EBEEE4; border: 1px solid #DCDFD6; text-decoration: underline; } /* Links around whole p's get special treatment */ .lastPanel a.noline p { text-decoration: none; } .lastPanel a:hover p { text-decoration: underline; } /* List mode toggle stuff */ .tog { float: right; height: 20px; width: 22px; background-color: #EBEEE4; } /* ridiculous fix for IE 6 flicker bug follows, apologies for the directx hilarity */ .imgTog { background: url("http://static.last.fm/matt/newtoggle/image.gif") top left no-repeat; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://static.last.fm/matt/newtoggle/image.gif',sizingMethod='crop'); } .textTog { background: url("http://static.last.fm/matt/newtoggle/text.gif") top left no-repeat; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://static.last.fm/matt/newtoggle/text.gif',sizingMethod='crop');} .collapseTog { background: url("http://static.last.fm/matt/newtoggle/collapse.gif") top left no-repeat; margin-right: -4px; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://static.last.fm/matt/newtoggle/collapse.gif',sizingMethod='crop');} .expandTog { background: url("http://static.last.fm/matt/newtoggle/expand.gif") top left no-repeat; margin-right: -4px; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://static.last.fm/matt/newtoggle/expand.gif',sizingMethod='crop');} a.tog:hover { background-color: #DBDED1; } div.h span.num { color: #AAA; font-size: 11px; margin-left: 1px; display: none; font-weight: normal;} div.guide span.num { display: inline; } #overviewjournal { padding-top: 0.5em; padding-bottom: 1.5em; } #journalexcerpt { line-height: 1.5em; padding-bottom: 1em; } .imgHolder { background: #EBEEE4; margin: 10px -5px 10px -10px; padding: 10px 0 10px 0; text-align: center; overflow: hidden; } .imgHolder img { display: inline; } div.lastPanel#featurepanel .imgHolder p { text-align: left; margin: 0 0px 5px 5px; } /* Connections Panel CSS */ div.lastPanel#bbpanel ul.i li, div.lastPanel#bbgroups ul.i li { margin-left: 25px; font-size: 12px; } .lastPanel .helpBox { margin-left: -9px;} /* Last.fm Charts Look and Feel ---------------------------- */ /* Main chart class */ .lastChart, .padBottom { margin-top: 0; padding-bottom: 10px; } .lastChart h2 { display: none; } .lastChart td { font-size: 12px; } .lastChart th {background: transparent;} h3.label, h3.step1, h3.step2, h3.step3, h3.step4, .lastChart h3.note, h3.dl, h3.note, h3.search, .lastChart h3.journal, h3.help, h3.reading, h3.star, h3.preview, .lastChart h3.chart, h3.chart, h3.users, h3.money, h3.radio, .lastChart h3.album, h3.album, h3.journal, h3.msg, h3.group, h3.tag, .lastChart h3.tag { padding-left: 26px; } .lastChart h3.note, h3.note { background: url("http://static.last.fm/matt/h3/note.gif") top left no-repeat; } .lastChart h3.star, h3.star { background: url("http://static.last.fm/matt/h3/star.gif") top left no-repeat; } h3.radio { background: url("http://static.last.fm/matt/h3/radio.gif") top left no-repeat; } h3.users { background: url("http://static.last.fm/matt/h3/users.gif") top left no-repeat; } h3.help { background: url("http://static.last.fm/matt/h3/help.gif") top left no-repeat; } h3.msg { background: url("http://static.last.fm/matt/h3/msg.gif") top left no-repeat; } h3.group { background: url("http://static.last.fm/matt/h3/group.gif") top left no-repeat; } h3.reading { background: url("http://static.last.fm/matt/h3/reading.gif") top left no-repeat; } h3.dl { background: url("http://static.last.fm/matt/h3/download.gif") top left no-repeat; } .lastChart h3.tag, h3.tag { background: url("http://static.last.fm/matt/h3/tag.gif") top left no-repeat; } .lastChart h3.journal, h3.journal { background: url("http://static.last.fm/matt/h3/journal.gif") top left no-repeat; } .lastChart h3.chart, h3.chart { background: url("http://static.last.fm/matt/h3/chart.gif") top left no-repeat; } .lastChart h3.album, h3.album { background: url("http://static.last.fm/matt/h3/album.gif") top left no-repeat; } h3.label { background: url("http://static.last.fm/matt/h3/label.gif") top left no-repeat; } h3.money { background: url("http://static.last.fm/matt/h3/money.gif") top left no-repeat; } h3.search { background: url("http://static.last.fm/matt/h3/find.gif") top left no-repeat; } h3.preview { background: url("http://static.last.fm/matt/h3/preview.gif") top left no-repeat; } h3.step1 { background: url("http://static.last.fm/matt/h3/step1.gif") top left no-repeat; } h3.step2 { background: url("http://static.last.fm/matt/h3/step2.gif") top left no-repeat; } h3.step3 { background: url("http://static.last.fm/matt/h3/step3.gif") top left no-repeat; } h3.step4 { background: url("http://static.last.fm/matt/h3/step4.gif") top left no-repeat; } h5.subhead, h5.subhead2 { font-size: 11px; font-weight: normal; margin-top: -27px; margin-bottom: -2px; color: #66534E; width: 250px; float: right; text-align: right; z-index: 2; } h5.subhead a { font-size: 11px; text-decoration: underline; } h5.subhead2 { float: none; width: auto; margin-top: -10px; margin-bottom: -29px; } h5.setsolid { line-height: 13px; margin-top: -32px; } h5.setsolid a { line-height: 13px; } .lastChart td { line-height: 20px; border-bottom: 3px solid #FFF; vertical-align: top; } .lastChart td.chartlabel { padding-left: 14px; background: url("http://static.last.fm/matt/charts/transition.gif") top right no-repeat #DBE0CF; border-bottom: 3px solid #FFF; padding-right: 9px; } .lastChart td.chartlabel div, .lastChart td.tdposition div { height: 20px; overflow: hidden;} .lastChart#recenttracks td.chartlabel { background: #DBE0CF; } .lastChart#recenttracks tr td.chartlabel { border-right: 0; } .lastChart .position { color: #877B6F; display: block; background: #DBE0CF; } /* .lastChart tr.alt td.tdposition { background: #E9F2F7; } */ .lastChart .note { padding-left: 30px; background: url("http://static.last.fm/matt/charts/chart_note.gif") top left no-repeat #DBE0CF; } .lastChart .album { padding-left: 30px; background: url("http://static.last.fm/matt/charts/chart_album.gif") top left no-repeat #DBE0CF; } .lastChart tr.now .note { padding-left: 30px; background: url("http://static.last.fm/matt/charts/chart_note_red.gif") top left no-repeat #D20039; color: #FFF; } .lastChart .star { padding-left: 30px; background: url("http://static.last.fm/matt/charts/chart_star.gif") top left no-repeat #DBE0CF; } .lastChart .tag { padding-left: 30px; background: url("http://static.last.fm/matt/charts/chart_tag.gif") top left no-repeat #DBE0CF; } .lastChart .none { padding-left: 30px; background: url("http://static.last.fm/matt/charts/chart_none.gif") top left no-repeat #DBE0CF; } .lastChart td.pad { padding-left: 4px; } .lastChart a { color: #564B42; text-decoration: none; line-height: 20px; } .lastChart td.date, .lastChart#recenttracks td.date { text-align: right; padding-right: 18px; color: #8A827D; font-size: 10px; background: url("http://static.last.fm/matt/charts/light_end.gif") top right no-repeat #DBE0CF; } .lastChart#recenttracks tr.now td.chartlabel { color: #FFF; background: #D20039; } .lastChart#recenttracks tr.now td.chartlabel a { color: #FFF; } .lastChart#recenttracks tr.now td.date { color: #FFF; background: url("http://static.last.fm/matt/charts/red_end.gif") top right no-repeat #D20039; } .lastChart a:hover { text-decoration: underline; color: #111; } .lastChart td.chartbar { padding-left: 0; } .lastChart .bar { text-align: left; color: #FFF; font-size: 10px; line-height: 20px; background: url("http://static.last.fm/matt/charts/dark_end.gif") top right no-repeat #9BA298; } .lastChart .bar span {padding-left: 5px;} .chartmore a { display: block; color: #66534E; font-size: 11px; line-height: 20px; padding-left: 10px; width: 175px; border: 1px solid #F5F6F1; text-decoration: none; background: url("http://static.last.fm/matt/more_off.gif") center right no-repeat #F5F6F1; } .chartmore a:hover { color: #564B42; text-decoration: underline; background: url("http://static.last.fm/matt/more.gif") center right no-repeat #EBEEE4; border: 1px solid #DCDFD6; } .afterchart { margin-top: -5px; padding-bottom: 20px; font-size: 11px; } .afterchart a:hover, .lastChart .afterchart a:hover { color: #3F3731; } tr.tinyheader td { font-size: 11px; color: #AAA; margin-left: 0; padding-left: 0; } tr.padbottom td { padding-bottom: 10px; } #tracklist td { color: #877B6F; } #tracklist .bar { height: 20px; background: url("http://static.last.fm/matt/trackchart_tail.gif") center right no-repeat #CBCCC0; } #tracklist td.chartbar { padding-left: 3px; background: #FFF; } .playlisttable td { font-size: 12px; } #recenttracks { width: 100%; } .lastChart#recenttracks .chartlabel span.thetag a:link, #tagfavechart .lastChart .chartlabel a:link, .lastChart#recenttracks .chartlabel span.thetag a:visited, #tagfavechart .lastChart .chartlabel a:visited { margin-right: 12px; color: #37271C; } .lastChart#recenttracks .chartlabel span.res a { font-size: 11px; } /* User charts tab */ #chartSelector .label { color: #777; font-weight: normal; font-size: 11px; } #chartSelector a { margin-left: 3px; margin-right: 3px; font-size: 12px;} #chartSelector a.current { font-size: 13px; font-weight: bold; color: #000; text-decoration: none; line-height: 16px; } #chartSelector a:hover { color: #000;} .lastChart .newcomer { color:#0101ff; } .lastChart .nonmover { color:#f79926; } .lastChart .rising { color:#088408; } .lastChart .falling { color:#fd1e1e; } .newcomer, .nonmover, .rising, .falling {text-align:center;} #chartmonths { padding:0; margin: 0;} #chartmonths li { display:inline; padding-right: 1px; font-size: 11px; } #chartmonths li a { font-size: 11px;} #chartmonths li.year { padding-right: 3px; color: #777;} #chartmonths li.current { font-weight: bold; } #chartdays { width:100%; text-align:center; } #chartdaysc { width:auto; } a.chartday { display:block; float:left; height:90px; width:111px; padding:10px; text-align:left; border: 1px solid #CFCFCF; margin-right: 4px; margin-bottom: 4px; } a.chartday:hover { background: #EAE7E7; } #chartdaysc .current { background: #EBEEE4; border: 1px solid #DAD7D7; } a.chartday { text-decoration:none; } .weekno { margin-bottom:5px; display:block; } .jumpto { display: block; color: #999; font-size: 11px; text-align: right; margin: 4px -3px -4px 0; } .weeknum { display:block; clear: right; font-weight: bold; color: #555; margin: -3px 0 4px 0; font-size:11px; } .weekstats { display:block; font-size:10px; } #weeklycharts { padding-top:15px; clear:both; } /* Last.fm Uers Look and Feel ----------------------------- */ #togglelist, #togglelist1, #togglelist2, #togglelist3, #togglelist4 { padding-top: 15px; padding-bottom: 20px; clear: both; width: 100%; margin-top: 15px; } #togglelist1, #togglelist2, #togglelist3, #togglelist4 { width: 90%;} /* weird ie fix */ div.userDisplay { /* default (mini) view */ width: 74pt; height: 65pt; font-size: 11px; text-align: center; float: left; margin-right: 16px; margin-bottom: 24px; } div.expanded div.userDisplay { float: none; display: block; width: auto; height: auto; padding: 16px; padding-left: 170px; text-align: left; font-size: 12px; } div.expanded div.alt { background: #EDF0E6; } div.expanded .userListening, div.expanded .userStats, div.expanded .userInfo { display: block; font-size: 12px; } div.expanded div.userDisplay .userImg { text-align: left; display: inline; float: left; width: 170px; height: 120px; margin-left: -154px; } div.expanded div.userDisplay .userImg img { height: 100px; } div.expanded div.userDisplay .userName { font-size: 14px; } .userName a { color: #444; } .userName a:hover { color: #000; } div.expanded div.userDisplay .realname { font-weight: bold; padding-right: 8px; } .userImg { display: block; text-align: center; height: 58px; } .userImg img { border: 0; height: 50px; } .userListening, .userInfo, .userStats { display: none; } .userInfo { margin-bottom: 10px; font-size: 11px; color: #666; } .friends .userInfo { margin-bottom: 0; margin-top: 10px; } .since { display: block; font-size: 11px; color: #777; } .topArtist, .lastTrack { margin-top: 10px; font-size: 11px; color: #666; margin-left: 97px; background: transparent; } table.padleft td, table.forumtable td.padleft, table.forumtable th.padleft { padding-left: 15px; } table.padright td, table.forumtable td.padright { padding-right: 15px; } .groupDetails { margin-top: 10px; font-size: 11px; color: #666; } .lastTrack { margin-bottom: -5px; } .topArtist span, .lastTrack span { float: left; position: relative; z-index: 2; margin-left: -80px; } .rel { color: #666; padding-left: 4px; padding-right: 4px; } .relationship {display:block;} /* Journal-related styles */ .journalEntry { width: 100%; clear: both; padding-bottom:25px; } .journalBody { padding-left: 27px; padding-bottom:5px; } .withConnections .journalBody { padding-right: 210px; width: auto;} .journalEntry h3 { padding-right: 240px; margin-bottom: 20px; width: auto;} .journalEntry h5.subhead { margin-top: -36px; } .journalEntry p { margin-left: 0; position: relative; z-index: 5; } .journalEntry h3 a { color: #43281E; } .singleEntry .journalEntry h3 a { text-decoration: none; } .journalConnections { position: relative; float:right; margin-right:-214px; border-left: 23px solid #FFF; margin-top: -2px; } .journalFooter { clear: right; margin-top: 10px; padding-top: 5px; padding-bottom: 15px; border-top: 1px solid #D5DBD3; } #journalgroups label { padding-right: 5px; } .journalFooter .comments { width: 45%; float: left; } .journalFooter .addcomment { width: 45%; float: right; text-align: right; } .withConnections .addcomment { margin-right: -210px; } .commentDate { color: #999; margin-top: -0.5em; margin-right: -5px; text-align: right; margin-bottom: 0; font-size: 11px; } .journalFooter a { display: inline; color: #777; margin-right: 5px; } .journalFooter a:hover { color: #333; } .journalmore { font-size: 11px; display: block; padding-right: 6px; text-align: right; } .thecomments { border: 1px solid #D5DBD3; clear: both; display: block; border-top: 0; } .fcomment h4 { font-size: 12px; margin-top: 0;} .fcomment .userDisplay { margin-bottom: 0; position: relative; } #commentform { width:300px; margin:30px 0px 20px 0px; padding:20px; border:1px solid #CFCFCF; clear:both; } #journal { width: 100%; } #bbsection, #journalgroups { width: 58%; float: left; } #bbpanel { width: 34%; float: right; margin-right: 0; padding-right: 0; margin-top: 1em; } #bbgroups { width:100%; float: right; margin-right: 0; padding-right: 0; } div.connection { width:210px; border:1px solid #C1C1C1; margin:5px; padding:3px; } textarea#bbtextarea, textarea#message { width:100%; height:220px; } #bbwidget { text-align: left; border:1px solid #CFCFCF; margin-top:5px; background-color:#EFEFEF; padding-left: 5px; padding-right: 5px; } #bbwidget .bbinput { width:100%; } a#bbsubmit { display: block; width: 50px; text-align: center; font-size: 11px; text-transform: uppercase; padding: 1px 5px 1px 5px; margin: 3px 0 2px 0; background: #FFF; border: 1px solid #CCC; text-decoration: none; color: #666; } a:hover#bbsubmit { background: #EFEFEF; color: #000; } /* Albums */ div.albumContainer { width: 100%; height: 105px; overflow: hidden; margin-bottom: 5px; } #topalbums { margin-top: 5px; } #topalbums .chartmore { margin-top: -20px; margin-bottom: 0; } .buttons a { display: block; overflow: hidden; height: 16px; line-height: 15px; font-size: 11px; margin-top: 5px; margin-bottom: 5px;} .albumHorizontal { clear: left; padding: 16px 0 0 160px; border-bottom: 1px solid #EAECE2; } .albumHorizontal .albumContent { float: right; width: 100%; } .albumHorizontal .butts { width: 100%; /* i hate ie */ margin-top: 15px; } .albumHorizontal .moreInfo { margin-top: 15px; padding-bottom: 10px; } .albumHorizontal .sidelinks { font-size:11px;margin-top:2px;float:left; } .buylink { padding-left: 56px; line-height: 22px; background: url("http://static.last.fm/matt/buy.gif") center left no-repeat; } #LastContent3 .albumHorizontal h3 { margin: 0; } div.alt2 { background-color: #EDF0E6; } .albumHorizontal a.img { margin-left: -157px; margin-top: 3px; padding-bottom: 20px; float: left; position: relative; z-index:99; } .albumHorizontal a img { border: 1px solid #DFDFDF; } div.alt2 a img { border: 1px solid #FFF; } .albumHorizontal .hasflp a { display: block; color: #D8911C; text-decoration: none; } .albumHorizontal .hasflp a:hover { text-decoration: underline; } .albumMed { display: inline; width: 110px; margin-right: 5px; font-size: 11px; } .albumMed a img { height: 100px; width: 100px; border: 1px solid #BBB; margin-bottom: 5px; } .albumContainer .details { font-size: 10px; display: block; } .coverart { border: 0;} .lastChart .coverlink, .lastChart a:hover.coverlink { border: 0; text-decoration: none; } /* Groups and Forums display CSS */ #recentDiscussions { width: 100%; } /* stupid fecking ie */ /* overrides regular breadcrumb style for pages with no headers, like forum */ div.noheadline#breadcrumb { margin-top: 10px; font-size: 11px; } div.messageSig { margin-top: 20px; padding-top: 5px; border-top: 1px solid #CCC; color: #888; } div.messageSig a { color: #888; } .nodisp { display: none; } ul.journals { padding: 0; margin: 0; padding-bottom: 5px;} #recentjournals { padding-bottom: 10px; padding-top: 5px; } #recentjournals h4 a.mainjournal { font-size: 13px; font-weight: bold; text-decoration: none; } #recentjournals h4 a.mainjournal:hover { text-decoration: underline; } li.journalHeader { margin: 5px 240px 2px 6px; clear: right; line-height: 13px; font-size:11px; list-style: none; padding-left: 21px; background: url("http://static.last.fm/matt/minipencil.gif") top left no-repeat; } li.journalHeader h4 { margin:0; display: inline; } li.journalHeader h4 a { text-decoration: underline; font-size: 11px; color: #43281E;} li.journalHeader a { position: relative; z-index: 5; } li.journalHeader h4 a:hover { color: #111; } li.journalHeader span.details { display: block; margin-top: -12px; text-align: right; margin-right: -240px; font-size: 11px; color: #999; position:relative; z-index:0; } li.journalHeader span.details a { color: #999; } a.hasreplies { padding-right: 20px; background: url('http://static.last.fm/images/replies.gif') center right no-repeat; display:block; margin-right:5px;} .mutual a { font-weight: bold; } .less { font-size: 11px; } ul.less { margin-left: 5px; padding-left: 0; margin-top: 0; list-style: inside; } ul.less li { margin-top: 5px; line-height: 13px; margin-bottom:0px; margin-left: 0; font-size: 11px;} ul.less li a:hover { color: #000; } .lightextra, .lightextra a { color: #777; font-size: 11px; } .lastBanner { display: block; padding-bottom: 10px; } .currentStation { font-size: 11px; font-weight: normal; color: #D20039; padding-left: 15px; background: url('http://static.last.fm/matt/tinyradio.gif') center left no-repeat; } #tagcloud a { text-decoration: none; } #tagcloud a:hover { color: #D20039; text-decoration: underline; } #tagquilt { margin-left:-8px; } #tagquilt a img { padding:0;margin:0;border:0;width:50px; height:50px; } #tagquilt a { padding:0; margin:0;} .lfmlight, a.lfmlight:link, a.lfmlight:visited { line-height:15px; color: #91998E; text-decoration: none; } a.lfmlight:hover { text-decoration: underline; } .lfmlight a { color: #91998E; } div.tagtip { background: url('http://static.last.fm/matt/tagtip.gif') top left no-repeat; height: 53px; width: 111px; font-size: 11px; } div.tagtip a.ttclose { display: block; width: 20px; height: 15px; margin-bottom: -2px; float: right; } div.tagtipContent { clear: right; margin: 0 10px 0 15px; text-align: center; } div.or { text-transform: uppercase; text-align: center; font-size: 9px; color: #CCC; } div.relevance, div.lowrelevance, div.gstars, div.nstars, div.fstars, div.newsstars { height: 10px; margin-top: 2px; width: 58px; background: url('http://static.last.fm/images/5stars.gif') top left no-repeat; } div.lowrelevance { background-image: url('http://static.last.fm/images/5stars_faded.gif'); } div.gstars { background-image: url('http://static.last.fm/images/stars_group.gif'); } div.nstars { background-image: url('http://static.last.fm/images/stars_neighbour.gif'); } div.fstars { background-image: url('http://static.last.fm/images/stars_friend.gif'); } div.newsstars { background-image: url('http://static.last.fm/images/stars_news.gif'); } #imgcrumb a { text-decoration: none; } #imgcrumb a:hover { text-decoration: underline; } a.miniartist, a.minialbum, a.minitrack, a.minilabel { padding: 2px 0 2px 24px; line-height: 13px; display: block; margin-top:3px; margin-bottom: 3px; } a.miniartist { background: url("http://static.last.fm/images/sidebar/artist.gif") top left no-repeat; } a.minialbum { background: url("http://static.last.fm/images/sidebar/album.gif") top left no-repeat; } a.minitrack { background: url("http://static.last.fm/images/sidebar/track.gif") top left no-repeat; } a.minilabel { background: url("http://static.last.fm/images/sidebar/label.gif") top left no-repeat; } div.miniRec { margin-left:5px;padding: 0px 0 0px 25px; } .standardMargin { margin-left: 27px; } div.quotelinks { padding: 10px 0px 0 0; } div.hasRightCol { padding-right: 255px; } div.rightCol { width:225px; display:inline;float:right; margin-right:-255px; } div.wikiholder { margin-top:5px; margin-bottom:15px; padding-right:85px; font-size:12px; background-image:url('http://static.last.fm/watermarks/journal.gif'); } .singleJournal { height:15px;overflow:hidden;margin: 0px 0px 2px 6px;font-size:11px;} .singleJournal a { background:url('http://static.last.fm/matt/minipencil.gif') top left no-repeat;padding-left: 21px;} ul.downloadlist { margin-left:5px; padding-left: 0;} ul.downloadlist li { margin: 0 0 6px 0px; list-style: none; padding-left: 0;} .downloadlist li a { font-size: 13px; padding: 0 0 5px 25px; line-height:20px;background:url('http://static.last.fm/download.gif') top left no-repeat; } .downloadlist li small a { font-size: 11px; padding: 0; margin: 0; background: none; } h3.smaller { margin-top:5px; font-size: 13px; } .toprule { margin-top:10px;padding-top:10px;border-top:1px solid #EAECE2;font-size:11px;} .lessLeading { line-height: 14px; } div.playlisttrack { clear:both;line-height:13px;margin: 10px -5px 5px -9px;padding-top:5px;padding-left:9px;background:#F7F8F3; }/* Unfortunate IE 6 hacks d*/ /* the goal is to eliminate these one by one, but for now... */ /* ...who needs validation anyway, right? */ * html .tagradioholder { width: 150px; } * html #LastConnectionsSidebar { padding-right: 3px; } * html div.c .helpBox { margin-top: 35px; } * html #dashboard .login { margin-top: -5px;} /* oh ie 6, how I loathe your ways */ * html .lastPanel#radio div.h { position: relative; overflow: hidden;} * html div.lastPanel #NewRadioBox div.h h2 { margin-left: 0; } * html #c_featRadio { width: 160px; } * html #radio { margin-bottom: 10px; } * html .lastPanel ul { padding-bottom: 12px; } * html .lastPanel ul.i li span.type { margin-top: -30px; } * html .lastPanel ul.i li.imgtags a {position: relative; margin-top: -16px; } * html .lastPanel ul.i li.imgtags img { position: relative;} * html #chartSelector { margin-bottom: 20px; } * html .journalConnections { left: -205px; } * html div.albumContainer { width: 97%; } * html li.journalHeader span.details { margin-bottom: -15px; } * html div.rightCol { margin-left: 27px; } * html .albumMed { position: static; } /* Safari link bugfix */ * html .previewAllContent, * html .radioButtonContent, * html .downloadRoundContent, * html .buyContent { margin-right: -2px; }_%http://static.last.fm/css/22/Main.cssXtext/cssOfbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?ISZNS.objectsWNS.keys@ABCDEFGHJKLMNOPQR _Content-EncodingTVary]Last-Modified]Accept-RangesVServerTDate^Content-LengthTEtag\Content-TypeTgzip_Accept-Encoding_Wed, 22 Mar 2006 17:29:50 GMTUbytes_lighttpd/1.4.10_Wed, 31 May 2006 17:11:47 GMTT1049_"-5706447287358917082"12fggh6_NSMutableDictionary\NSDictionary12jkk6_NSHTTPURLResponseInternal12mnno6_NSHTTPURLResponse]NSURLResponse$)2DILbd #/135`eny}#18=LQ^cu ;@DXpfOo/* Widget holder on main pages */ #LastWidgets, #NewRadioBox { background: #EBEEE4; margin: 10px -5px 10px -10px; padding: 9px 10px 5px 5px; } #NewRadioBox { padding-top:5px; } #LastWidgets a.widget { display: block; height: 18px; text-decoration: none; margin-bottom: 4px; padding-left: 25px; margin-left:3px; } #LastWidgets a.widget:hover { color: #000; } #whelp { font-size: 11px; color: #91998E; display: block; margin-bottom: 3px; } #message_w { background: url("http://static.last.fm/images/newestwidgets/message.gif") no-repeat; } #friends_w, #wishlist_w { background: url("http://static.last.fm/images/newestwidgets/add.gif") no-repeat; } #rmFriend_w { background: url("http://static.last.fm/images/newestwidgets/remove.gif") no-repeat; } #tag_w { background: url("http://static.last.fm/images/newestwidgets/tag.gif") no-repeat; } #moderate_w { background: url("http://static.last.fm/images/newestwidgets/moderate.gif") no-repeat; } #preview_w { background: url("http://static.last.fm/images/newestwidgets/preview.gif") no-repeat; } #recommend_w { background: url("http://static.last.fm/images/newestwidgets/recommend.gif") no-repeat; } #journal_w { background: url("http://static.last.fm/images/newestwidgets/blog.gif") no-repeat;} #LastWidgets a.widget:hover { background-position: 0 -18px; } #LastWidgets a.on, #LastWidgets a.on:hover { font-weight: bold; background-position: 0 -36px; color: #867463; } /* widgets themselves */ #widget { overflow: hidden; height: 310px; margin-left: -2px; margin-top: 3px; margin-right: -10px; background: #EFF2E9; border: 1px solid #CCC; color: #564B42; margin-bottom: 35px; } div.mini#widget { height: 170px; } #widget iframe { border: 0; background: #EFF2E9; } #widgetLoading { display: none; font-size: 11px; color: #564B42; position: absolute; background: #EFF2E9; width: 250px; } #widgetLoading p { font-size: 10px; padding-left: 15px; } body.widget { margin: 0; padding: 0; color: #564B42; font-family: Helvetica, Arial, sans-serif; background: #EFF2E9; } div.widgetMini { margin: 0; line-height: 17px; padding-left: 15px; padding-top: 10px; } div.widgetNormal { margin: 0; padding-left: 15px; padding-top: 10px; } body.widget p { margin-top: 0; padding-top: 0px; } body.widget th { font-size: 11px; color: #555; text-align: left; padding-right: 8px; background: transparent; } a.close { position: absolute; display: block; width: 50px; font-size: 11px; text-align: right; bottom: 10px; right: 10px; } strong.small { font-size: 10px; padding-right: 16px; float: left; } span.small { font-size: 10px; color: #777; } body.widget .forms { display: block; font-size: 11px; padding-right: 10px; } body.widget .happy { color: #0A0; font-size: 12px; display: block; width: 75%; padding-bottom: 100px;} body.widget .sad { color: #A00; font-size: 12px; display: block; width: 75%; padding-bottom: 100px;} body.widget form { margin: 0; padding: 0; display: inline; } body.widget .tiny { font-size: 11px; color: #807063; margin-right: 2px; } body.widget .minilinks { color: #807063; font-size: 11px; margin-right: 10px; } body.widget .minilinks a { color: #564B42; } body.widget a.widgetX { font-size: 9px; vertical-align: super; color: #900; text-decoration: none; margin-right: 5px; margin-left: 1px; } body.widget a.widgetX:hover { text-decoration: underline; } body.widget span.hint { color: #807063; } body.widget .help { font-size: 11px; } _(http://static.last.fm/css/22/Widgets.cssOpbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?ISZNS.objectsWNS.keys@ABCDEFGHJKLMNOPQR _Content-EncodingTVary]Last-Modified]Accept-RangesVServerTDate^Content-LengthTEtag\Content-TypeTgzip_Accept-Encoding_Mon, 10 Apr 2006 17:35:45 GMTUbytes_lighttpd/1.4.10_Wed, 31 May 2006 17:11:47 GMTU10524_"-7883846337851299821"12fggh6_NSMutableDictionary\NSDictionary12jkk6_NSHTTPURLResponseInternal12mnno6_NSHTTPURLResponse]NSURLResponse$)2DILbd #/135`eny},:AFUZgl~!&)EJNbppOU/* Prototype JavaScript framework, version 1.4.0 * (c) 2005 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://prototype.conio.net/ * /*--------------------------------------------------------------------------*/ var Prototype = { Version: '1.4.0', ScriptFragment: '(?:)((\n|\r|.)*?)(?:<\/script>)', emptyFunction: function() {}, K: function(x) {return x} } var Class = { create: function() { return function() { this.initialize.apply(this, arguments); } } } var Abstract = new Object(); Object.extend = function(destination, source) { for (property in source) { destination[property] = source[property]; } return destination; } Object.inspect = function(object) { try { if (object == undefined) return 'undefined'; if (object == null) return 'null'; return object.inspect ? object.inspect() : object.toString(); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } } Function.prototype.bind = function() { var __method = this, args = $A(arguments), object = args.shift(); return function() { return __method.apply(object, args.concat($A(arguments))); } } Function.prototype.bindAsEventListener = function(object) { var __method = this; return function(event) { return __method.call(object, event || window.event); } } Object.extend(Number.prototype, { toColorPart: function() { var digits = this.toString(16); if (this < 16) return '0' + digits; return digits; }, succ: function() { return this + 1; }, times: function(iterator) { $R(0, this, true).each(iterator); return this; } }); var Try = { these: function() { var returnValue; for (var i = 0; i < arguments.length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) {} } return returnValue; } } /*--------------------------------------------------------------------------*/ var PeriodicalExecuter = Class.create(); PeriodicalExecuter.prototype = { initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.callback(); } finally { this.currentlyExecuting = false; } } } } /*--------------------------------------------------------------------------*/ function $() { var elements = new Array(); for (var i = 0; i < arguments.length; i++) { var element = arguments[i]; if (typeof element == 'string') element = document.getElementById(element); if (arguments.length == 1) return element; elements.push(element); } return elements; } Object.extend(String.prototype, { stripTags: function() { return this.replace(/<\/?[^>]+>/gi, ''); }, stripScripts: function() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); }, extractScripts: function() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); }, evalScripts: function() { return this.extractScripts().map(eval); }, escapeHTML: function() { var div = document.createElement('div'); var text = document.createTextNode(this); div.appendChild(text); return div.innerHTML; }, unescapeHTML: function() { var div = document.createElement('div'); div.innerHTML = this.stripTags(); return div.childNodes[0] ? div.childNodes[0].nodeValue : ''; }, toQueryParams: function() { var pairs = this.match(/^\??(.*)$/)[1].split('&'); return pairs.inject({}, function(params, pairString) { var pair = pairString.split('='); params[pair[0]] = pair[1]; return params; }); }, toArray: function() { return this.split(''); }, camelize: function() { var oStringList = this.split('-'); if (oStringList.length == 1) return oStringList[0]; var camelizedString = this.indexOf('-') == 0 ? oStringList[0].charAt(0).toUpperCase() + oStringList[0].substring(1) : oStringList[0]; for (var i = 1, len = oStringList.length; i < len; i++) { var s = oStringList[i]; camelizedString += s.charAt(0).toUpperCase() + s.substring(1); } return camelizedString; }, inspect: function() { return "'" + this.replace('\\', '\\\\').replace("'", '\\\'') + "'"; } }); String.prototype.parseQuery = String.prototype.toQueryParams; var $break = new Object(); var $continue = new Object(); var Enumerable = { each: function(iterator) { var index = 0; try { this._each(function(value) { try { iterator(value, index++); } catch (e) { if (e != $continue) throw e; } }); } catch (e) { if (e != $break) throw e; } }, all: function(iterator) { var result = true; this.each(function(value, index) { result = result && !!(iterator || Prototype.K)(value, index); if (!result) throw $break; }); return result; }, any: function(iterator) { var result = true; this.each(function(value, index) { if (result = !!(iterator || Prototype.K)(value, index)) throw $break; }); return result; }, collect: function(iterator) { var results = []; this.each(function(value, index) { results.push(iterator(value, index)); }); return results; }, detect: function (iterator) { var result; this.each(function(value, index) { if (iterator(value, index)) { result = value; throw $break; } }); return result; }, findAll: function(iterator) { var results = []; this.each(function(value, index) { if (iterator(value, index)) results.push(value); }); return results; }, grep: function(pattern, iterator) { var results = []; this.each(function(value, index) { var stringValue = value.toString(); if (stringValue.match(pattern)) results.push((iterator || Prototype.K)(value, index)); }) return results; }, include: function(object) { var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found; }, inject: function(memo, iterator) { this.each(function(value, index) { memo = iterator(memo, value, index); }); return memo; }, invoke: function(method) { var args = $A(arguments).slice(1); return this.collect(function(value) { return value[method].apply(value, args); }); }, max: function(iterator) { var result; this.each(function(value, index) { value = (iterator || Prototype.K)(value, index); if (value >= (result || value)) result = value; }); return result; }, min: function(iterator) { var result; this.each(function(value, index) { value = (iterator || Prototype.K)(value, index); if (value <= (result || value)) result = value; }); return result; }, partition: function(iterator) { var trues = [], falses = []; this.each(function(value, index) { ((iterator || Prototype.K)(value, index) ? trues : falses).push(value); }); return [trues, falses]; }, pluck: function(property) { var results = []; this.each(function(value, index) { results.push(value[property]); }); return results; }, reject: function(iterator) { var results = []; this.each(function(value, index) { if (!iterator(value, index)) results.push(value); }); return results; }, sortBy: function(iterator) { return this.collect(function(value, index) { return {value: value, criteria: iterator(value, index)}; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); }, toArray: function() { return this.collect(Prototype.K); }, zip: function() { var iterator = Prototype.K, args = $A(arguments); if (typeof args.last() == 'function') iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { iterator(value = collections.pluck(index)); return value; }); }, inspect: function() { return '#'; } } Object.extend(Enumerable, { map: Enumerable.collect, find: Enumerable.detect, select: Enumerable.findAll, member: Enumerable.include, entries: Enumerable.toArray }); var $A = Array.from = function(iterable) { if (!iterable) return []; if (iterable.toArray) { return iterable.toArray(); } else { var results = []; for (var i = 0; i < iterable.length; i++) results.push(iterable[i]); return results; } } Object.extend(Array.prototype, Enumerable); Array.prototype._reverse = Array.prototype.reverse; Object.extend(Array.prototype, { _each: function(iterator) { for (var i = 0; i < this.length; i++) iterator(this[i]); }, clear: function() { this.length = 0; return this; }, first: function() { return this[0]; }, last: function() { return this[this.length - 1]; }, compact: function() { return this.select(function(value) { return value != undefined || value != null; }); }, flatten: function() { return this.inject([], function(array, value) { return array.concat(value.constructor == Array ? value.flatten() : [value]); }); }, without: function() { var values = $A(arguments); return this.select(function(value) { return !values.include(value); }); }, indexOf: function(object) { for (var i = 0; i < this.length; i++) if (this[i] == object) return i; return -1; }, reverse: function(inline) { return (inline !== false ? this : this.toArray())._reverse(); }, shift: function() { var result = this[0]; for (var i = 0; i < this.length - 1; i++) this[i] = this[i + 1]; this.length--; return result; }, inspect: function() { return '[' + this.map(Object.inspect).join(', ') + ']'; } }); var Hash = { _each: function(iterator) { for (key in this) { var value = this[key]; if (typeof value == 'function') continue; var pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } }, keys: function() { return this.pluck('key'); }, values: function() { return this.pluck('value'); }, merge: function(hash) { return $H(hash).inject($H(this), function(mergedHash, pair) { mergedHash[pair.key] = pair.value; return mergedHash; }); }, toQueryString: function() { return this.map(function(pair) { return pair.map(encodeURIComponent).join('='); }).join('&'); }, inspect: function() { return '#'; } } function $H(object) { var hash = Object.extend({}, object || {}); Object.extend(hash, Enumerable); Object.extend(hash, Hash); return hash; } ObjectRange = Class.create(); Object.extend(ObjectRange.prototype, Enumerable); Object.extend(ObjectRange.prototype, { initialize: function(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; }, _each: function(iterator) { var value = this.start; do { iterator(value); value = value.succ(); } while (this.include(value)); }, include: function(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <= this.end; } }); var $R = function(start, end, exclusive) { return new ObjectRange(start, end, exclusive); } var Ajax = { getTransport: function() { return Try.these( function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')}, function() {return new XMLHttpRequest()} ) || false; }, activeRequestCount: 0 } Ajax.Responders = { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responderToAdd) { if (!this.include(responderToAdd)) this.responders.push(responderToAdd); }, unregister: function(responderToRemove) { this.responders = this.responders.without(responderToRemove); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (responder[callback] && typeof responder[callback] == 'function') { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) {} } }); } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++; }, onComplete: function() { Ajax.activeRequestCount--; } }); Ajax.Base = function() {}; Ajax.Base.prototype = { setOptions: function(options) { this.options = { method: 'post', asynchronous: true, parameters: '' } Object.extend(this.options, options || {}); }, responseIsSuccess: function() { return this.transport.status == undefined || this.transport.status == 0 || (this.transport.status >= 200 && this.transport.status < 300); }, responseIsFailure: function() { return !this.responseIsSuccess(); } } Ajax.Request = Class.create(); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Request.prototype = Object.extend(new Ajax.Base(), { initialize: function(url, options) { this.transport = Ajax.getTransport(); this.setOptions(options); this.request(url); }, request: function(url) { var parameters = this.options.parameters || ''; if (parameters.length > 0) parameters += '&_='; try { this.url = url; if (this.options.method == 'get' && parameters.length > 0) this.url += (this.url.match(/\?/) ? '&' : '?') + parameters; Ajax.Responders.dispatch('onCreate', this, this.transport); this.transport.open(this.options.method, this.url, this.options.asynchronous); if (this.options.asynchronous) { this.transport.onreadystatechange = this.onStateChange.bind(this); setTimeout((function() {this.respondToReadyState(1)}).bind(this), 10); } this.setRequestHeaders(); var body = this.options.postBody ? this.options.postBody : parameters; this.transport.send(this.options.method == 'post' ? body : null); } catch (e) { this.dispatchException(e); } }, setRequestHeaders: function() { var requestHeaders = ['X-Requested-With', 'XMLHttpRequest', 'X-Prototype-Version', Prototype.Version]; if (this.options.method == 'post') { requestHeaders.push('Content-type', 'application/x-www-form-urlencoded'); /* Force "Connection: close" for Mozilla browsers to work around * a bug where XMLHttpReqeuest sends an incorrect Content-length * header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType) requestHeaders.push('Connection', 'close'); } if (this.options.requestHeaders) requestHeaders.push.apply(requestHeaders, this.options.requestHeaders); for (var i = 0; i < requestHeaders.length; i += 2) this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]); }, onStateChange: function() { var readyState = this.transport.readyState; if (readyState != 1) this.respondToReadyState(this.transport.readyState); }, header: function(name) { try { return this.transport.getResponseHeader(name); } catch (e) {} }, evalJSON: function() { try { return eval(this.header('X-JSON')); } catch (e) {} }, evalResponse: function() { try { return eval(this.transport.responseText); } catch (e) { this.dispatchException(e); } }, respondToReadyState: function(readyState) { var event = Ajax.Request.Events[readyState]; var transport = this.transport, json = this.evalJSON(); if (event == 'Complete') { try { (this.options['on' + this.transport.status] || this.options['on' + (this.responseIsSuccess() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(transport, json); } catch (e) { this.dispatchException(e); } if ((this.header('Content-type') || '').match(/^text\/javascript/i)) this.evalResponse(); } try { (this.options['on' + event] || Prototype.emptyFunction)(transport, json); Ajax.Responders.dispatch('on' + event, this, transport, json); } catch (e) { this.dispatchException(e); } /* Avoid memory leak in MSIE: clean up the oncomplete event handler */ if (event == 'Complete') this.transport.onreadystatechange = Prototype.emptyFunction; }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Updater = Class.create(); Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), { initialize: function(container, url, options) { this.containers = { success: container.success ? $(container.success) : $(container), failure: container.failure ? $(container.failure) : (container.success ? null : $(container)) } this.transport = Ajax.getTransport(); this.setOptions(options); var onComplete = this.options.onComplete || Prototype.emptyFunction; this.options.onComplete = (function(transport, object) { this.updateContent(); onComplete(transport, object); }).bind(this); this.request(url); }, updateContent: function() { var receiver = this.responseIsSuccess() ? this.containers.success : this.containers.failure; var response = this.transport.responseText; if (!this.options.evalScripts) response = response.stripScripts(); if (receiver) { if (this.options.insertion) { new this.options.insertion(receiver, response); } else { Element.update(receiver, response); } } if (this.responseIsSuccess()) { if (this.onComplete) setTimeout(this.onComplete.bind(this), 10); } } }); Ajax.PeriodicalUpdater = Class.create(); Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), { initialize: function(container, url, options) { this.setOptions(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = {}; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(request) { if (this.options.decay) { this.decay = (request.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = request.responseText; } this.timer = setTimeout(this.onTimerEvent.bind(this), this.decay * this.frequency * 1000); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); document.getElementsByClassName = function(className, parentElement) { var children = ($(parentElement) || document.body).getElementsByTagName('*'); return $A(children).inject([], function(elements, child) { if (child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) elements.push(child); return elements; }); } /*--------------------------------------------------------------------------*/ if (!window.Element) { var Element = new Object(); } Object.extend(Element, { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function() { for (var i = 0; i < arguments.length; i++) { var element = $(arguments[i]); Element[Element.visible(element) ? 'hide' : 'show'](element); } }, hide: function() { for (var i = 0; i < arguments.length; i++) { var element = $(arguments[i]); element.style.display = 'none'; } }, show: function() { for (var i = 0; i < arguments.length; i++) { var element = $(arguments[i]); element.style.display = ''; } }, remove: function(element) { element = $(element); element.parentNode.removeChild(element); }, update: function(element, html) { $(element).innerHTML = html.stripScripts(); setTimeout(function() {html.evalScripts()}, 10); }, getHeight: function(element) { element = $(element); return element.offsetHeight; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; return Element.classNames(element).include(className); }, addClassName: function(element, className) { if (!(element = $(element))) return; return Element.classNames(element).add(className); }, removeClassName: function(element, className) { if (!(element = $(element))) return; return Element.classNames(element).remove(className); }, // removes whitespace-only text node children cleanWhitespace: function(element) { element = $(element); for (var i = 0; i < element.childNodes.length; i++) { var node = element.childNodes[i]; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) Element.remove(node); } }, empty: function(element) { return $(element).innerHTML.match(/^\s*$/); }, scrollTo: function(element) { element = $(element); var x = element.x ? element.x : element.offsetLeft, y = element.y ? element.y : element.offsetTop; window.scrollTo(x, y); }, getStyle: function(element, style) { element = $(element); var value = element.style[style.camelize()]; if (!value) { if (document.defaultView && document.defaultView.getComputedStyle) { var css = document.defaultView.getComputedStyle(element, null); value = css ? css.getPropertyValue(style) : null; } else if (element.currentStyle) { value = element.currentStyle[style.camelize()]; } } if (window.opera && ['left', 'top', 'right', 'bottom'].include(style)) if (Element.getStyle(element, 'position') == 'static') value = 'auto'; return value == 'auto' ? null : value; }, setStyle: function(element, style) { element = $(element); for (name in style) element.style[name.camelize()] = style[name]; }, getDimensions: function(element) { element = $(element); if (Element.getStyle(element, 'display') != 'none') return {width: element.offsetWidth, height: element.offsetHeight}; // All *Width and *Height properties give 0 on elements with display none, // so enable the element temporarily var els = element.style; var originalVisibility = els.visibility; var originalPosition = els.position; els.visibility = 'hidden'; els.position = 'absolute'; els.display = ''; var originalWidth = element.clientWidth; var originalHeight = element.clientHeight; els.display = 'none'; els.position = originalPosition; els.visibility = originalVisibility; return {width: originalWidth, height: originalHeight}; }, makePositioned: function(element) { element = $(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; // Opera returns the offset relative to the positioning context, when an // element is position relative but top and left have not been defined if (window.opera) { element.style.top = 0; element.style.left = 0; } } }, undoPositioned: function(element) { element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; } }, makeClipping: function(element) { element = $(element); if (element._overflow) return; element._overflow = element.style.overflow; if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden') element.style.overflow = 'hidden'; }, undoClipping: function(element) { element = $(element); if (element._overflow) return; element.style.overflow = element._overflow; element._overflow = undefined; } }); var Toggle = new Object(); Toggle.display = Element.toggle; /*--------------------------------------------------------------------------*/ Abstract.Insertion = function(adjacency) { this.adjacency = adjacency; } Abstract.Insertion.prototype = { initialize: function(element, content) { this.element = $(element); this.content = content.stripScripts(); if (this.adjacency && this.element.insertAdjacentHTML) { try { this.element.insertAdjacentHTML(this.adjacency, this.content); } catch (e) { if (this.element.tagName.toLowerCase() == 'tbody') { this.insertContent(this.contentFromAnonymousTable()); } else { throw e; } } } else { this.range = this.element.ownerDocument.createRange(); if (this.initializeRange) this.initializeRange(); this.insertContent([this.range.createContextualFragment(this.content)]); } setTimeout(function() {content.evalScripts()}, 10); }, contentFromAnonymousTable: function() { var div = document.createElement('div'); div.innerHTML = '' + this.content + '
'; return $A(div.childNodes[0].childNodes[0].childNodes); } } var Insertion = new Object(); Insertion.Before = Class.create(); Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), { initializeRange: function() { this.range.setStartBefore(this.element); }, insertContent: function(fragments) { fragments.each((function(fragment) { this.element.parentNode.insertBefore(fragment, this.element); }).bind(this)); } }); Insertion.Top = Class.create(); Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), { initializeRange: function() { this.range.selectNodeContents(this.element); this.range.collapse(true); }, insertContent: function(fragments) { fragments.reverse(false).each((function(fragment) { this.element.insertBefore(fragment, this.element.firstChild); }).bind(this)); } }); Insertion.Bottom = Class.create(); Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), { initializeRange: function() { this.range.selectNodeContents(this.element); this.range.collapse(this.element); }, insertContent: function(fragments) { fragments.each((function(fragment) { this.element.appendChild(fragment); }).bind(this)); } }); Insertion.After = Class.create(); Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), { initializeRange: function() { this.range.setStartAfter(this.element); }, insertContent: function(fragments) { fragments.each((function(fragment) { this.element.parentNode.insertBefore(fragment, this.element.nextSibling); }).bind(this)); } }); /*--------------------------------------------------------------------------*/ Element.ClassNames = Class.create(); Element.ClassNames.prototype = { initialize: function(element) { this.element = $(element); }, _each: function(iterator) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator); }, set: function(className) { this.element.className = className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set(this.toArray().concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) { if (!this.include(classNameToRemove)) return; this.set(this.select(function(className) { return className != classNameToRemove; }).join(' ')); }, toString: function() { return this.toArray().join(' '); } } Object.extend(Element.ClassNames.prototype, Enumerable); var Field = { clear: function() { for (var i = 0; i < arguments.length; i++) $(arguments[i]).value = ''; }, focus: function(element) { $(element).focus(); }, present: function() { for (var i = 0; i < arguments.length; i++) if ($(arguments[i]).value == '') return false; return true; }, select: function(element) { $(element).select(); }, activate: function(element) { element = $(element); element.focus(); if (element.select) element.select(); } } /*--------------------------------------------------------------------------*/ var Form = { serialize: function(form) { var elements = Form.getElements($(form)); var queryComponents = new Array(); for (var i = 0; i < elements.length; i++) { var queryComponent = Form.Element.serialize(elements[i]); if (queryComponent) queryComponents.push(queryComponent); } return queryComponents.join('&'); }, getElements: function(form) { form = $(form); var elements = new Array(); for (tagName in Form.Element.Serializers) { var tagElements = form.getElementsByTagName(tagName); for (var j = 0; j < tagElements.length; j++) elements.push(tagElements[j]); } return elements; }, getInputs: function(form, typeName, name) { form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return inputs; var matchingInputs = new Array(); for (var i = 0; i < inputs.length; i++) { var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name)) continue; matchingInputs.push(input); } return matchingInputs; }, disable: function(form) { var elements = Form.getElements(form); for (var i = 0; i < elements.length; i++) { var element = elements[i]; element.blur(); element.disabled = 'true'; } }, enable: function(form) { var elements = Form.getElements(form); for (var i = 0; i < elements.length; i++) { var element = elements[i]; element.disabled = ''; } }, findFirstElement: function(form) { return Form.getElements(form).find(function(element) { return element.type != 'hidden' && !element.disabled && ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); }); }, focusFirstElement: function(form) { Field.activate(Form.findFirstElement(form)); }, reset: function(form) { $(form).reset(); } } Form.Element = { serialize: function(element) { element = $(element); var method = element.tagName.toLowerCase(); var parameter = Form.Element.Serializers[method](element); if (parameter) { var key = encodeURIComponent(parameter[0]); if (key.length == 0) return; if (parameter[1].constructor != Array) parameter[1] = [parameter[1]]; return parameter[1].map(function(value) { return key + '=' + encodeURIComponent(value); }).join('&'); } }, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); var parameter = Form.Element.Serializers[method](element); if (parameter) return parameter[1]; } } Form.Element.Serializers = { input: function(element) { switch (element.type.toLowerCase()) { case 'submit': case 'hidden': case 'password': case 'text': return Form.Element.Serializers.textarea(element); case 'checkbox': case 'radio': return Form.Element.Serializers.inputSelector(element); } return false; }, inputSelector: function(element) { if (element.checked) return [element.name, element.value]; }, textarea: function(element) { return [element.name, element.value]; }, select: function(element) { return Form.Element.Serializers[element.type == 'select-one' ? 'selectOne' : 'selectMany'](element); }, selectOne: function(element) { var value = '', opt, index = element.selectedIndex; if (index >= 0) { opt = element.options[index]; value = opt.value; if (!value && !('value' in opt)) value = opt.text; } return [element.name, value]; }, selectMany: function(element) { var value = new Array(); for (var i = 0; i < element.length; i++) { var opt = element.options[i]; if (opt.selected) { var optValue = opt.value; if (!optValue && !('value' in opt)) optValue = opt.text; value.push(optValue); } } return [element.name, value]; } } /*--------------------------------------------------------------------------*/ var $F = Form.Element.getValue; /*--------------------------------------------------------------------------*/ Abstract.TimedObserver = function() {} Abstract.TimedObserver.prototype = { initialize: function(element, frequency, callback) { this.frequency = frequency; this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); this.registerCallback(); }, registerCallback: function() { setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, onTimerEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } } } Form.Element.Observer = Class.create(); Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(); Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { getValue: function() { return Form.serialize(this.element); } }); /*--------------------------------------------------------------------------*/ Abstract.EventObserver = function() {} Abstract.EventObserver.prototype = { initialize: function(element, callback) { this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { var elements = Form.getElements(this.element); for (var i = 0; i < elements.length; i++) this.registerCallback(elements[i]); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; case 'password': case 'text': case 'textarea': case 'select-one': case 'select-multiple': Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } } Form.Element.EventObserver = Class.create(); Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(); Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { getValue: function() { return Form.serialize(this.element); } }); if (!window.Event) { var Event = new Object(); } Object.extend(Event, { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, element: function(event) { return event.target || event.srcElement; }, isLeftClick: function(event) { return (((event.which) && (event.which == 1)) || ((event.button) && (event.button == 1))); }, pointerX: function(event) { return event.pageX || (event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)); }, pointerY: function(event) { return event.pageY || (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop)); }, stop: function(event) { if (event.preventDefault) { event.preventDefault(); event.stopPropagation(); } else { event.returnValue = false; event.cancelBubble = true; } }, // find the first node with the given tagName, starting from the // node the event was triggered on; traverses the DOM upwards findElement: function(event, tagName) { var element = Event.element(event); while (element.parentNode && (!element.tagName || (element.tagName.toUpperCase() != tagName.toUpperCase()))) element = element.parentNode; return element; }, observers: false, _observeAndCache: function(element, name, observer, useCapture) { if (!this.observers) this.observers = []; if (element.addEventListener) { this.observers.push([element, name, observer, useCapture]); element.addEventListener(name, observer, useCapture); } else if (element.attachEvent) { this.observers.push([element, name, observer, useCapture]); element.attachEvent('on' + name, observer); } }, unloadCache: function() { if (!Event.observers) return; for (var i = 0; i < Event.observers.length; i++) { Event.stopObserving.apply(this, Event.observers[i]); Event.observers[i][0] = null; } Event.observers = false; }, observe: function(element, name, observer, useCapture) { var element = $(element); useCapture = useCapture || false; if (name == 'keypress' && (navigator.appVersion.match(/Konqueror|Safari|KHTML/) || element.attachEvent)) name = 'keydown'; this._observeAndCache(element, name, observer, useCapture); }, stopObserving: function(element, name, observer, useCapture) { var element = $(element); useCapture = useCapture || false; if (name == 'keypress' && (navigator.appVersion.match(/Konqueror|Safari|KHTML/) || element.detachEvent)) name = 'keydown'; if (element.removeEventListener) { element.removeEventListener(name, observer, useCapture); } else if (element.detachEvent) { element.detachEvent('on' + name, observer); } } }); /* prevent memory leaks in IE */ Event.observe(window, 'unload', Event.unloadCache, false); var Position = { // set to true if needed, warning: firefox performance problems // NOT neeeded for page scrolling, only if draggable contained in // scrollable elements includeScrollOffsets: false, // must be called before calling withinIncludingScrolloffset, every time the // page is scrolled prepare: function() { this.deltaX = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, realOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return [valueL, valueT]; }, cumulativeOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); return [valueL, valueT]; }, positionedOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { p = Element.getStyle(element, 'position'); if (p == 'relative' || p == 'absolute') break; } } while (element); return [valueL, valueT]; }, offsetParent: function(element) { if (element.offsetParent) return element.offsetParent; if (element == document.body) return element; while ((element = element.parentNode) && element != document.body) if (Element.getStyle(element, 'position') != 'static') return element; return document.body; }, // caches x/y coordinate pair to use with overlap within: function(element, x, y) { if (this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element, x, y); this.xcomp = x; this.ycomp = y; this.offset = this.cumulativeOffset(element); return (y >= this.offset[1] && y < this.offset[1] + element.offsetHeight && x >= this.offset[0] && x < this.offset[0] + element.offsetWidth); }, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache = this.realOffset(element); this.xcomp = x + offsetcache[0] - this.deltaX; this.ycomp = y + offsetcache[1] - this.deltaY; this.offset = this.cumulativeOffset(element); return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >= this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, // within must be called directly before overlap: function(mode, element) { if (!mode) return 0; if (mode == 'vertical') return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode == 'horizontal') return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth; }, clone: function(source, target) { source = $(source); target = $(target); target.style.position = 'absolute'; var offsets = this.cumulativeOffset(source); target.style.top = offsets[1] + 'px'; target.style.left = offsets[0] + 'px'; target.style.width = source.offsetWidth + 'px'; target.style.height = source.offsetHeight + 'px'; }, page: function(forElement) { var valueT = 0, valueL = 0; var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; // Safari fix if (element.offsetParent==document.body) if (Element.getStyle(element,'position')=='absolute') break; } while (element = element.offsetParent); element = forElement; do { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } while (element = element.parentNode); return [valueL, valueT]; }, clone: function(source, target) { var options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || {}) // find page position of source source = $(source); var p = Position.page(source); // find coordinate system to use target = $(target); var delta = [0, 0]; var parent = null; // delta [0,0] will do fine with position: fixed elements, // position:absolute needs offsetParent deltas if (Element.getStyle(target,'position') == 'absolute') { parent = Position.offsetParent(target); delta = Position.page(parent); } // correct by body offsets (fixes Safari) if (parent == document.body) { delta[0] -= document.body.offsetLeft; delta[1] -= document.body.offsetTop; } // set position if(options.setLeft) target.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if(options.setTop) target.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if(options.setWidth) target.style.width = source.offsetWidth + 'px'; if(options.setHeight) target.style.height = source.offsetHeight + 'px'; }, absolutize: function(element) { element = $(element); if (element.style.position == 'absolute') return; Position.prepare(); var offsets = Position.positionedOffset(element); var top = offsets[1]; var left = offsets[0]; var width = element.clientWidth; var height = element.clientHeight; element._originalLeft = left - parseFloat(element.style.left || 0); element._originalTop = top - parseFloat(element.style.top || 0); element._originalWidth = element.style.width; element._originalHeight = element.style.height; element.style.position = 'absolute'; element.style.top = top + 'px';; element.style.left = left + 'px';; element.style.width = width + 'px';; element.style.height = height + 'px';; }, relativize: function(element) { element = $(element); if (element.style.position == 'relative') return; Position.prepare(); element.style.position = 'relative'; var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); element.style.top = top + 'px'; element.style.left = left + 'px'; element.style.height = element._originalHeight; element.style.width = element._originalWidth; } } // Safari returns margins on body which is incorrect if the child is absolutely // positioned. For performance reasons, redefine Position.cumulativeOffset for // KHTML/WebKit only. if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) { Position.cumulativeOffset = function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body) if (Element.getStyle(element, 'position') == 'absolute') break; element = element.offsetParent; } while (element); return [valueL, valueT]; } }_(http://static.last.fm/js/11/prototype.js_text/javascriptOqbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?ISZNS.objectsWNS.keys@ABCDEFGHJKLMNOPQR _Content-EncodingTVary]Last-Modified]Accept-RangesVServerTDate^Content-LengthTEtag\Content-TypeTgzip_Accept-Encoding_Wed, 24 May 2006 13:02:34 GMTUbytes_lighttpd/1.4.10_Wed, 31 May 2006 17:11:47 GMTT2704_"6816114425642080328"12fggh6_NSMutableDictionary\NSDictionary12jkk6_NSHTTPURLResponseInternal12mnno6_NSHTTPURLResponse]NSURLResponse$)2DILbd #/135chq| !/=DIX]jo"'*FKOcpqO-E//{{{ Lastfm var Lastfm = { //{{{ Constants Version: '0.1a', RES_TRACK: 9, RES_ALBUM: 8, RES_ARTIST: 6, RES_BASE: 0, RES_TAG: 32, //}}} //{{{ Variables resources: new Array(), //}}} //{{{ Classes //{{{ Resource superclass Resource: { Resource: function(_restype, anchor, placebutton, icon) { this._restype = _restype; this.anchor = anchor; this.icon = this.icon ? this.icon : (icon ? icon : false); this.href = typeof(this.anchor)=='object' ? this.anchor.href : this.anchor; this.index = Lastfm.resources.length; this.linkcount = 0; this.track = ''; this.placebutton = placebutton; //{{{ private functions /* this.placeInfoBox = function () { var swfaddress = 'http://static.last.fm/flashpreview/6/'; session = document.location.href.match(/^http(s|):\/\/(test|www|beta|)\.last.fm\//) && getCookie ? getCookie('Session') : ''; swfaddress = swfaddress+this.swf+'?url='+this.href+'&index='+this.index+'&session='+session+'&self='+escape(document.location.href); this.swfCode = '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + ''; var code = '

'; if(!this.placebutton) { document.write(code); } else { Lastfm.Insertion.before(code, this.button); } //get the div we just inserted. this.infoBox = document.getElementById('LastfmResourceInfoBox'+this.index); } */ this.placeInfoBox = function () { var swfaddress = 'http://static.last.fm/flashpreview/6/'; session = document.location.href.match(/^http:\/\/(test|www|beta|)\.last.fm\//) && getCookie ? getCookie('Session') : ''; swfaddress = swfaddress+this.swf+'?url='+escape(this.href)+'&index='+this.index+'&session='+session+'&self='+escape(document.location.href); this.swfCode = '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + ''; var code = ''; if(!this.placebutton) { document.write(code); } else { Lastfm.Insertion.before(code, this.button); } //get the div we just inserted. this.infoBox = document.getElementById('LastfmResourceInfoBox'+this.index); this.infoBox.style.position = 'absolute'; } this.placeButton = function () { var icon = this.icon ? this.icon : 'http://playground.audioscrobbler.com/steve/extlinks/new/icon.php?url='+this.href; var button = '
' + '' + '
'; this.linkcount++; if(typeof this.anchor == 'object') { Lastfm.Insertion.before(button, this.anchor); } else { document.write(button); } //get the div we just inserted. this.button = document.getElementById('LastfmResourceButton'+this.index); if(this.postPlace) this.postPlace(); } //X if(this.placebutton) this.placeButton(); this.placeInfoBox(); //{{{ public functions this.finish = function() { this.isStarted = false; if(this._finish) { this.finish = this._finish; this._finish = false; } this.finished(); this.onend(); } this.close = function() { this.closed(); this.isStarted = false; this.onend(); } this.stop = function() { this.isStarted = false; //reset finish so that it doesn't go to the next song. this.stopped(); this.onend(); } this.start = function(e) { if(!this.startedBefore) { this.init(); } for(var i=0; i?ISZNS.objectsWNS.keys@ABCDEFGHJKLMNOPQR _Content-EncodingTVary]Last-Modified]Accept-RangesVServerTDate^Content-LengthTEtag\Content-TypeTgzip_Accept-Encoding_Thu, 20 Apr 2006 19:08:21 GMTUbytes_lighttpd/1.4.10_Wed, 31 May 2006 17:11:47 GMTU17404_"-5866805718163941037"12fggh6_NSMutableDictionary\NSDictionary12jkk6_NSHTTPURLResponseInternal12mnno6_NSHTTPURLResponse]NSURLResponse$)2DILbd  %1357]bkvz)7>CRWdi{#&BGK_pmO var Cart={links:new Array,reqs:new Array,load:function(){ var _1=document.getElementsByTagName("a"); for(var i=0;i<_1.length;i++){ if("a2cButton"==_1[i].className){ var _3=_1[i].id.replace(/dlbid/,""); _1[i].onclick=function(){ Cart.add2cart(_3); }; Cart.links.push(_1[i]); } } },add2cart:function(id){ var _5; for(var _6 in Cart.reqs){ if(_6==id){ return false; } } if(window.XMLHttpRequest){ Cart.reqs[id]=new XMLHttpRequest; }else{ if(window.ActiveXObject){ Cart.reqs[id]=new ActiveXObject("Microsoft.XMLHTTP"); }else{ return false; } } var _7="http://test.last.fm/ajax/a2c.php?id="+id; Cart.reqs[id].open("GET",_7,true); Cart.reqs[id].onreadystatechange=function(){ Cart.response(id); }; Cart.reqs[id].send(null); },response:function(id){ if(!Cart.reqs[id]){ alert("No request object:/"+Cart.reqs[id]); return false; } if(Cart.reqs[id].readyState==4){ if(Cart.reqs[id].responseXML){ var _8=getElementText(Cart.reqs[id].responseXML,"success"); var _9; if(_8.match(/true/i)){ alert("SUCCESS!!!"); var _10=document.getElementById("dlbid"+id); _10.className="a2cGrey"; _10.onclick=null; var _11=getElementText(Cart.reqs[id].responseXML,"count"); var url=getElementText(Cart.reqs[id].responseXML,"url"); var _13=document.getElementById("cartdisplay"); _13.href=url; _13.innerHTML="Cart ("+_11+")"; return true; }else{ if(_8.match(/false/i)){ _9=getElementText(Cart.reqs[id].responseXML,"error"); } } if(!_9){ _9="Unknown fail condition"; } alert("ERROR: "+_9); return false; } } }}; var imageTag=false; var theSelection=false; var clientPC=navigator.userAgent.toLowerCase(); var clientVer=parseInt(navigator.appVersion); var is_ie=((clientPC.indexOf("msie")!=-1)&&(clientPC.indexOf("opera")==-1)); var is_nav=((clientPC.indexOf("mozilla")!=-1)&&(clientPC.indexOf("spoofer")==-1)&&(clientPC.indexOf("compatible")==-1)&&(clientPC.indexOf("opera")==-1)&&(clientPC.indexOf("webtv")==-1)&&(clientPC.indexOf("hotjava")==-1)); var is_moz=0; var is_saf=clientPC.indexOf("safari")!=-1; var is_win=((clientPC.indexOf("win")!=-1)||(clientPC.indexOf("16bit")!=-1)); var is_mac=(clientPC.indexOf("mac")!=-1); var helplines={"b":"Bold text: [b]text[/b] (alt+b)","i":"Itgalic text: [i]text[/i] (alt+i)","u":"Underline text: [u]text[/u] (alt+u)","q":"Quote text: [quote]text[/quote] (alt+q)","c":"Code display: [code]code[/code] (alt+c)","l":"List: [ulist]text[/ulist] (alt+l)","o":"Ordered list: [list=1]text[/list] (alt+o)","p":"Insert image: [img]http://www.server.org/image.jpg[/img] (alt+p)","w":"Insert link: [url]http://www.server.org[/url] or [url=http://www.server.org]URL text[/url] (alt+w)","a":"Close all open bbCode tags","fc":"Font color: [color=red]text[/color] Tip: you can also use color=#FF0000","fs":"Font size: [size=x-small]small text[/size]","ft":"Font type: [font=Arial]text[/font]","s":"Strike text: [s]text[/s] (alt+s)","sub":"Subscript text: [sub]text[/sub]","sub":"Superscript text: [sup]text[/sup]","e":"Insert email address: [email]guest@anonymous.org[/email] or [email=guest@anonymous.org]guest[/email] (alt+e)","al":"Align text: [align=right]right[/align]","li":"Insert a list item: [li]Item line[/li]","artist":"Insert a link to an artist page: [artist]Artist Name[/artist]","album":"Insert a link to an album page: [album artist=\"artist name\"]album name[/artist]","track":"Insert a link to a track page: [track artist=\"artist name\"]album name[/artist]"}; var prompts={"b":"Bold text: ","i":"Italic text: ","u":"Underline text: ","q":"Quote text: ","c":"Code display: ","p":"Insert image: ","w":"Insert link: ","a":"Close all open bbCode tags","fc":"Colored text: ","fs":"Sized text: ","ft":"Font type: [font=Arial]text[/font]","s":"Strike text: [s]text[/s] (alt+s)","sub":"Subscript text: [sub]text[/sub]","sub":"Superscript text: [sup]text[/sup]","e":"Insert email address: [email]guest@anonymous.org[/email] or [email=guest@anonymous.org]guest[/email] (alt+e)","li":"Insert a list item: [li]Item line[/li]","artist":"Insert a link to an artist page: [artist]Artist Name[/artist]","album":"Insert a link to an album page: [album artist=\"artist name\"]album name[/artist]","track":"Insert a link to a track page: [track artist=\"artist name\"]album name[/artist]"}; bbtags=["b","i","u","quote","code","ulist","list","img","url","sub","sup","s","email","align","li","size","font","color","artist"]; restags=["artist","album","track"]; bbstack=new Array(); imageTag=false; function helpline(_14){ document.getElementById("helpbox").value=helplines[_14]; } function getarraysize(_15){ for(i=0;i<_15.length;i++){ if((_15[i]=="undefined")||(_15[i]=="")||(_15[i]==null)){ return i; } } return _15.length; } function arraypush(_16,_17){ _16[getarraysize(_16)]=_17; } function arraypop(_18){ thearraysize=getarraysize(_18); retval=_18[thearraysize-1]; delete _18[thearraysize-1]; return retval; } function in_array(_19,_20){ for(var i=0;i<_20.length;i++){ if(_19==_20[i]){ return true; } } return false; } function bbstyle(_21,arg){ var _23=getTxtarea(); _23.focus(); if((clientVer>=4)&&is_ie&&is_win){ theSelection=document.selection.createRange().text; if(theSelection){ opentag="["+_21; if(arg){ if(typeof arg=="string"){ opentag=opentag+"="+prompt(arg); }else{ if(typeof arg=="object"){ for(var key in arg){ opentag=opentag+" "+key+"=\""+prompt(arg[key])+"\""; } } } } opentag+="]"; document.selection.createRange().text=opentag+theSelection+"[/"+_21+"]"; if(in_array(_21,restags)){ charhistory=document.selection.createRange().text; catchchar=true; bodypress(true); } _23.focus(); theSelection=""; return; } }else{ if(_23.selectionEnd&&(_23.selectionEnd-_23.selectionStart>0)){ opentag="["+_21; if(arg){ if(typeof arg=="string"){ opentag=opentag+"="+prompt(arg); }else{ if(typeof arg=="object"){ for(var key in arg){ opentag=opentag+" "+key+"=\""+prompt(arg[key])+"\""; } } } } opentag+="]"; var _25=_23.textLength; var _26=_23.selectionStart; var _27=_23.selectionEnd; if(_27==1||_27==2){ _27=_25; } var s1=_23.value.substring(0,_26); var s2=_23.value.substring(_26,_27); var s3=_23.value.substring(_27,_25); _23.value=s1=opentag+s2+"[/"+_21+"]"+s3; if(in_array(_21,restags)){ charhistory=opentag+s2+"[/"+_21+"]"; catchchar=true; bodypress(true); } return; } } var _31=null; if(prompts[_21]){ _31=prompt(prompts[_21]); } opentag="["+_21; if(arg){ if(typeof arg=="string"){ opentag+="="+prompt(arg); }else{ if(typeof arg=="object"){ for(var key in arg){ opentag+=" "+key+"=\""+prompt(arg[key])+"\""; } } } } opentag+="]"; _23.value+=opentag; charhistory=opentag; catchchar=true; if(_31){ _23.value+=_31+"[/"+_21+"]"; charhistory+=_31+"[/"+_21+"]"; bodypress(true); } _23.focus(); return; } function activateButton(_32){ frm=getForm(); btn=eval("frm.addbbcode"+_32); if(btn.type=="button"){ btn.value+="*"; } } function deactivateButton(_33){ frm=getForm(); btn=eval("frm.addbbcode"+_33); if(btn.type=="button"){ btn.value=btn.value.substr(0,(btn.value.length-1)); } } function mozWrap(_34,_35,_36,arg){ opentag=_35; if(arg){ if(_35.match(/(album|track)/)){ opentag=opentag.substring(0,opentag.length-1)+" artist="+arg+"]"; }else{ opentag=opentag.substring(0,opentag.length-1)+"="+arg+"]"; } } var _37=_34.textLength; var _38=_34.selectionStart; var _39=_34.selectionEnd; if(_39==1||_39==2){ _39=_37; } var s1=(_34.value).substring(0,_38); var s2=(_34.value).substring(_38,_39); var s3=(_34.value).substring(_39,_37); _34.value=s1+opentag+s2+_36+s3; return opentag+s2+_36; } function storeCaret(_40){ if(_40.createTextRange){ _40.caretPos=document.selection.createRange().duplicate(); } } var bbtagsettings={b:{helpline:"Bold text: [b]bold[/b]",prompttype:"textarea",prompthelp:"Bold:"},i:{helpline:"Italic text: [i]italic[/b]",prompttype:"textarea",prompthelp:"Italic:"},u:{helpline:"Underline text: [u]underline[/b]",prompttype:"textarea",prompthelp:"Underline:"},s:{helpline:"Strike text: [s]text[/s]",prompttype:"textarea",prompthelp:"Strike:"},quote:{helpline:"Quote text: [quote]quote[/quote]",prompttype:"textarea",prompthelp:"Quote:"},img:{helpline:"Link to an image: [img]http://images.com/theimage.jpg[/img]",prompttype:"text",prompthelp:"Image URL:"},url:{helpline:"Insert link: [url]http://site.com/thelink[/url] or [url=http://site.com/thelink]the link[/url]",prompttype:"text",prompthelp:"Link URL:"},sub:{helpline:"Subscript: [sub]subscript[/sub]",prompttype:"text",prompthelp:"Subscript:"},sup:{helpline:"Superscript: [sup]superscript[/sup]",prompttype:"text",prompthelp:"Superscript:"},ulist:{helpline:"List: [ulist]text[/ulist]",prompttype:"none",open:false},li:{helpline:"Insert a list item: [li]item[/li]",prompttype:"text",prompthelp:"List Item:"},quote:{helpline:"Quote text: [quote]text[/quote]",prompttype:"textarea",prompthelp:"Quote:"},artist:{helpline:"Last.fm Artist: [artist]artist name[/artist]",prompttype:"text",prompthelp:"Enter an artist name:",ajaxian:{restype:6}},album:{helpline:"Last.fm Album: [album artist=artist name]album name[/album]",prompttype:"text",prompthelp:"Enter an album name:",ajaxian:{restype:8,artist:""},subtags:["artist"]},track:{helpline:"Last.fm Track: [track artist=artist name]track name[/track]",prompttype:"text",prompthelp:"Enter a track name:",ajaxian:{restype:9,artist:""},subtags:["artist"]},user:{helpline:"Last.fm User: [user]username[/user]",prompttype:"text",prompthelp:"User:",ajaxian:{restype:4}},group:{helpline:"Last.fm Group: [group]group name[/group]",prompttype:"text",prompthelp:"Group:",ajaxian:{restype:20}},tag:{helpline:"Last.fm Tag: [tag]tag name[/tag]",prompttype:"text",prompthelp:"Tag:"},label:{helpline:"Last.fm Label: [label]label name[/tag]",prompttype:"text",prompthelp:"Label:",ajaxian:{restype:10}},rescan:{helpline:"Click to rescan your blog for connections"}}; var clientPC=navigator.userAgent.toLowerCase(); var clientVer=parseInt(navigator.appVersion); var is_ie=((clientPC.indexOf("msie")!=-1)&&(clientPC.indexOf("opera")==-1)); var is_nav=((clientPC.indexOf("mozilla")!=-1)&&(clientPC.indexOf("spoofer")==-1)&&(clientPC.indexOf("compatible")==-1)&&(clientPC.indexOf("opera")==-1)&&(clientPC.indexOf("webtv")==-1)&&(clientPC.indexOf("hotjava")==-1)); var is_moz=0; var is_saf=clientPC.indexOf("safari")!=-1; var is_win=((clientPC.indexOf("win")!=-1)||(clientPC.indexOf("16bit")!=-1)); var is_mac=(clientPC.indexOf("mac")!=-1); function in_array(_41,_42){ for(val in _42){ if(_41==_42[val]){ return true; } } return false; } function key_exists(_43,_44){ for(val in _44){ if(_43==val){ return true; } } return false; } var BBCode={withPanel:false,load:function(){ BBCode.txtarea=$("message"); BBCode.helpline=$("bbhelpline"); BBCode.selection=""; var _45=$("bbbuttons"); var _46=_45.childNodes; for(var i=0;i<_46.length;i++){ if(_46[i].nodeType==1&&_46[i].tagName.toLowerCase()=="li"){ if(_46[i].getAttribute("ID")=="bbrescan"){ _46[i].onclick=function(){ BBCode.scanText(); }; }else{ _46[i].onclick=function(){ BBCode.handleClick(this); }; } try{ _46[i].onmouseover=function(){ BBCode.showHelpline(this); }; } catch(e){ alert("NO BBCode"); } } } if(BBCode.withPanel){ try{ BBCode.txtarea.onchange=function(){ BBCode.scanText(); }; BBCode.txtarea.onkeypress=function(){ window.clearTimeout(); window.setTimeout(function(){ BBCode.scanText(); },3000); }; } catch(e){ alert("NO BBCode 2"); } BBCode.panel=new Panel($("bbpanel")); } },getTag:function(id){ id.match(/^bb(.*)$/); var _47=RegExp.$1; if(!key_exists(_47,bbtagsettings)){ return false; } return _47; },handleClick:function(_48){ var _49=BBCode.getTag(_48.id); if(!_49){ alert("fail one"); return false; } if(!key_exists(_49,bbtagsettings)){ alert("Failed two ["+_49+"]"); return false; } BBCode.currentTag=_49; txtarea=BBCode.txtarea; if(clientVer>=4&&is_ie&&is_win){ theSelection=document.selection.createRange().text; txtarea=BBCode.txtarea; if(theSelection){ BBCode.selection=document.selection.createRange().text; } }else{ if(txtarea.selectionEnd&&txtarea.selectionEnd-txtarea.selectionStart>0){ BBCode.selection=txtarea.value.substring(txtarea.selectionStart,txtarea.selectionEnd); BBCode.selstart=txtarea.selectionStart; BBCode.selend=txtarea.selectionEnd; } } BBCode.clearWidget(); if(bbtagsettings[_49].prompttype=="none"){ if(bbtagsettings[_49].open){ BBCode.txtarea.value+="[/"+_49+"]"; }else{ BBCode.txtarea.value+="["+_49+"]"; } bbtagsettings[_49].open=!bbtagsettings[_49].open; } BBCode.buildWidget(_49); },showHelpline:function(_50){ var _51=BBCode.getTag(_50.id); if(!_51){ return false; } BBCode.helpline.value=bbtagsettings[_51].helpline; BBCode.helpline.style.color="#444444"; },reset:function(){ BBCode.clearWidget(); BBCode.selection=null; BBCode.selstart=null; BBCode.selend=null; },clearWidget:function(){ var _52=$("bbwidget"); var _53=_52.childNodes; while(_53.length>0){ _52.removeChild(_53[0]); } },buildWidget:function(_54){ var _55=document.createElement("span"); _55.appendChild(document.createTextNode(bbtagsettings[_54].prompthelp)); if(BBCode.addToWidget(_54,true)){ return; } if(bbtagsettings[_54].subtags){ for(var i=0;i=4&&is_ie&&is_win){ BBCode.selection=_74; }else{ s1=BBCode.txtarea.value.substring(0,BBCode.selstart); s2=BBCode.txtarea.value.substring(BBCode.selend,BBCode.txtarea.textLength); BBCode.txtarea.value=s1+_74+s2; } }else{ BBCode.txtarea.value+=_74; } BBCode.txtarea.focus(); },scanText:function(){ var _76=BBCode.txtarea; var _77=this.panel.listItems("other"); var _78=new Array(_77.length); for(var i=0;i<_77.length;i++){ _78[i]=_77[i]; } var _79=/\[([^ ]+)([^\]]*)\]([^\[]+)\[\/\1\]/g; var _80; while((_80=_79.exec(_76.value))!=null){ if(in_array(_80[1],["artist","album","track"])){ switch(this.panel.checkForItem(_80[1],_80[3],_80[2])){ case 0: break; case 1: this.panel.list.appendChild(panelRemovedItems[this.panel.panel.id][this.panel.lastItemCheck].element); break; case 2: _78[this.panel.lastItemCheck]=false; break; case 3: var _81=new ResourceGet(); for(key in bbtagsettings[_80[1]].ajaxian){ if(key=="artist"){ try{ var _82=_80[2].match(/artist=([^\]]*)/)[1]; _81.setParam(key,_82); } catch(e){ } }else{ _81.setParam(key,bbtagsettings[_80[1]].ajaxian[key]); } } _81.setParam("name",_80[3]); _81.setCallback(function(_83,_84){ BBCode.ajaxCatch(_83,_84,true); },false); _81.send(); break; } } } for(var i=0;i<_78.length;i++){ if(_78[i]){ this.panel.removeItem(_78[i].element.id); } } }}; var bbtagsettings={b:{helpline:"Bold text: [b]bold[/b]",prompttype:"textarea",prompthelp:"Bold:"},i:{helpline:"Italic text: [i]italic[/b]",prompttype:"textarea",prompthelp:"Italic:"},u:{helpline:"Underline text: [u]underline[/b]",prompttype:"textarea",prompthelp:"Underline:"},quote:{helpline:"Quote text: [quote]quote[/quote]",prompttype:"textarea",prompthelp:"Quote:"},img:{helpline:"Link to an image: [img]http://images.com/theimage.jpg[/img]",prompttype:"text",prompthelp:"Image URL:"},url:{helpline:"Insert link: [url]http://site.com/thelink[/url] or [url=http://site.com/thelink]the link[/url]",prompttype:"text",prompthelp:"Link URL:"},sub:{helpline:"Subscript: [sub]subscript[/sub]",prompttype:"text",prompthelp:"Subscript:"},sup:{helpline:"Superscript: [sup]superscript[/sup]",prompttype:"text",prompthelp:"Superscript:"},artist:{helpline:"Last.fm Artist: [artist]artist name[/artist]",prompttype:"text",prompthelp:"Artist:",ajaxian:{restype:6}},album:{helpline:"Last.fm Album: [album artist=\"artist name\"]album name[/album]",prompttype:"text",prompthelp:"Album:",ajaxian:{restype:8,artist:""},subtags:["artist"]},track:{helpline:"Last.fm Track: [track artist=\"artist name\"]track name[/track]",prompttype:"text",prompthelp:"Track:",ajaxian:{restype:9,artist:""},subtags:["artist"]},user:{helpline:"Last.fm User: [user]username[/user]",prompttype:"text",prompthelp:"User:",ajaxian:{restype:4}},group:{helpline:"Last.fm Group: [group]group name[/group]",prompttype:"text",prompthelp:"Group:",ajaxian:{restype:20}},tag:{helpline:"Last.fm Tag: [tag]tag name[/tag]",prompttype:"text",prompthelp:"Tag:"},rescan:{helpline:"Click to rescan your blog for connections"}}; var Behaviour={list:new Array,register:function(_85){ Behaviour.list.push(_85); },start:function(){ Behaviour.addLoadEvent(function(){ Behaviour.apply(); }); },apply:function(){ for(h=0;sheet=Behaviour.list[h];h++){ for(selector in sheet){ list=document.getElementsBySelector(selector); if(!list){ continue; } for(i=0;element=list[i];i++){ sheet[selector](element); } } } },addLoadEvent:function(_86){ var _87=window.onload; if(typeof window.onload!="function"){ window.onload=_86; }else{ window.onload=function(){ _87(); _86(); }; } }}; Behaviour.start(); function getAllChildren(e){ return e.all?e.all:e.getElementsByTagName("*"); } document.getElementsBySelector=function(_88){ if(!document.getElementsByTagName){ return new Array(); } var _89=_88.split(" "); var _90=new Array(document); for(var i=0;i<_89.length;i++){ token=_89[i].replace(/^\s+/,"").replace(/\s+$/,""); if(token.indexOf("#")>-1){ var _91=token.split("#"); var _92=_91[0]; var id=_91[1]; var _93=document.getElementById(id); if(_92&&_93.nodeName.toLowerCase()!=_92){ return new Array(); } _90=new Array(_93); continue; } if(token.indexOf(".")>-1){ var _91=token.split("."); var _92=_91[0]; var _94=_91[1]; if(!_92){ _92="*"; } var _95=new Array; var _96=0; for(var h=0;h<_90.length;h++){ var _98; if(_92=="*"){ _98=getAllChildren(_90[h]); }else{ _98=_90[h].getElementsByTagName(_92); } for(var j=0;j<_98.length;j++){ _95[_96++]=_98[j]; } } _90=new Array; var _100=0; for(var k=0;k<_95.length;k++){ if(_95[k].className&&_95[k].className.match(new RegExp("\\b"+_94+"\\b"))){ _90[_100++]=_95[k]; } } continue; } if(token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/)){ var _92=RegExp.$1; var _102=RegExp.$2; var _103=RegExp.$3; var _104=RegExp.$4; if(!_92){ _92="*"; } var _95=new Array; var _96=0; for(var h=0;h<_90.length;h++){ var _98; if(_92=="*"){ _98=getAllChildren(_90[h]); }else{ _98=_90[h].getElementsByTagName(_92); } for(var j=0;j<_98.length;j++){ _95[_96++]=_98[j]; } } _90=new Array; var _100=0; var _105; switch(_103){ case "=": _105=function(e){ return (e.getAttribute(_102)==_104); }; break; case "~": _105=function(e){ return (e.getAttribute(_102).match(new RegExp("\\b"+_104+"\\b"))); }; break; case "|": _105=function(e){ return (e.getAttribute(_102).match(new RegExp("^"+_104+"-?"))); }; break; case "^": _105=function(e){ return (e.getAttribute(_102).indexOf(_104)==0); }; break; case "$": _105=function(e){ return (e.getAttribute(_102).lastIndexOf(_104)==e.getAttribute(_102).length-_104.length); }; break; case "*": _105=function(e){ return (e.getAttribute(_102).indexOf(_104)>-1); }; break; default: _105=function(e){ return e.getAttribute(_102); }; } _90=new Array; var _100=0; for(var k=0;k<_95.length;k++){ if(_105(_95[k])){ _90[_100++]=_95[k]; } } continue; } if(!_90[0]){ return; } _92=token; var _95=new Array; var _96=0; for(var h=0;h<_90.length;h++){ var _98=_90[h].getElementsByTagName(_92); for(var j=0;j<_98.length;j++){ _95[_96++]=_98[j]; } } _90=_95; } return _90; }; function isSafari(){ return (navigator.userAgent.toLowerCase().indexOf("safari")!==-1); } var Autocompleter={}; Autocompleter.Base=function(){ }; Autocompleter.Base.prototype={baseInitialize:function(_106,_107,_108){ this.element=$(_106); this.update=$(_107); this.hasFocus=false; this.changed=false; this.active=false; this.index=0; this.entryCount=0; if(this.setOptions){ this.setOptions(_108); }else{ this.options=_108||{}; } this.options.paramName=this.options.paramName||this.element.name; this.options.tokens=this.options.tokens||[]; this.options.frequency=this.options.frequency||0.4; this.options.minChars=this.options.minChars||1; this.options.onShow=this.options.onShow||function(_106,_107){ if(!_107.style.position||_107.style.position=="absolute"){ _107.style.position="absolute"; Position.clone(_106,_107,{setHeight:false,offsetTop:_106.offsetHeight}); } Effect.Appear(_107,{duration:0.15}); }; this.options.onHide=this.options.onHide||function(_109,_110){ new Effect.Fade(_110,{duration:0.15}); }; if(typeof (this.options.tokens)=="string"){ this.options.tokens=new Array(this.options.tokens); } this.observer=null; this.element.setAttribute("autocomplete","off"); Element.hide(this.update); Event.observe(this.element,"blur",this.onBlur.bindAsEventListener(this)); Event.observe(this.element,"keypress",this.onKeyPress.bindAsEventListener(this)); },show:function(){ if(Element.getStyle(this.update,"display")=="none"){ this.options.onShow(this.element,this.update); } if(!this.iefix&&(navigator.appVersion.indexOf("MSIE")>0)&&(navigator.userAgent.indexOf("Opera")<0)&&(Element.getStyle(this.update,"position")=="absolute")){ new Insertion.After(this.update,""); this.iefix=$(this.update.id+"_iefix"); } if(this.iefix){ setTimeout(this.fixIEOverlapping.bind(this),50); } },fixIEOverlapping:function(){ Position.clone(this.update,this.iefix); this.iefix.style.zIndex=1; this.update.style.zIndex=2; Element.show(this.iefix); },hide:function(){ this.stopIndicator(); if(Element.getStyle(this.update,"display")!="none"){ this.options.onHide(this.element,this.update); } if(this.iefix){ Element.hide(this.iefix); } },startIndicator:function(){ if(this.options.indicator){ Element.show(this.options.indicator); } },stopIndicator:function(){ if(this.options.indicator){ Element.hide(this.options.indicator); } },onKeyPress:function(_111){ if(this.active){ switch(_111.keyCode){ case Event.KEY_TAB: case Event.KEY_RETURN: this.selectEntry(); Event.stop(_111); case Event.KEY_ESC: this.hide(); this.active=false; Event.stop(_111); return; case Event.KEY_LEFT: case Event.KEY_RIGHT: return; case Event.KEY_UP: this.markPrevious(); this.render(); if(navigator.appVersion.indexOf("AppleWebKit")>0){ Event.stop(_111); } return; case Event.KEY_DOWN: this.markNext(); this.render(); if(navigator.appVersion.indexOf("AppleWebKit")>0){ Event.stop(_111); } return; } }else{ if(_111.keyCode==Event.KEY_TAB||_111.keyCode==Event.KEY_RETURN){ return; } } this.changed=true; this.hasFocus=true; if(this.observer){ clearTimeout(this.observer); } this.observer=setTimeout(this.onObserverEvent.bind(this),this.options.frequency*1000); },onHover:function(_112){ var _113=Event.findElement(_112,"LI"); if(this.index!=_113.autocompleteIndex){ this.index=_113.autocompleteIndex; this.render(); } Event.stop(_112); },onClick:function(_114){ var _115=Event.findElement(_114,"LI"); this.index=_115.autocompleteIndex; this.selectEntry(); this.hide(); },onBlur:function(_116){ setTimeout(this.hide.bind(this),250); this.hasFocus=false; this.active=false; },render:function(){ if(this.entryCount>0){ for(var i=0;i0){ this.index--; }else{ this.index=this.entryCount-1; } },markNext:function(){ if(this.index0){ _119=Element.collectTextNodes(_120[0],this.options.select); } }else{ _119=Element.collectTextNodesIgnoreClass(_118,"informal"); } var _121=this.findLastToken(); if(_121!=-1){ var _122=this.element.value.substr(0,_121+1); var _123=this.element.value.substr(_121+1).match(/^\s+/); if(_123){ _122+=_123[0]; } this.element.value=_122+_119; }else{ this.element.value=_119; } this.element.focus(); if(this.options.afterUpdateElement){ this.options.afterUpdateElement(this.element,_118); } },updateChoices:function(_124){ if(!this.changed&&this.hasFocus){ this.update.innerHTML=_124; Element.cleanWhitespace(this.update); Element.cleanWhitespace(this.update.firstChild); if(this.update.firstChild&&this.update.firstChild.childNodes){ this.entryCount=this.update.firstChild.childNodes.length; for(var i=0;i=this.options.minChars){ this.startIndicator(); this.getUpdatedChoices(); }else{ this.active=false; this.hide(); } },getToken:function(){ var _127=this.findLastToken(); if(_127!=-1){ var ret=this.element.value.substr(_127+1).replace(/^\s+/,"").replace(/\s+$/,""); }else{ var ret=this.element.value; } return /\n/.test(ret)?"":ret; },findLastToken:function(){ var _129=-1; for(var i=0;i_129){ _129=_130; } } return _129; }}; Ajax.Autocompleter=Class.create(); Object.extend(Object.extend(Ajax.Autocompleter.prototype,Autocompleter.Base.prototype),{initialize:function(_131,_132,url,_133){ this.baseInitialize(_131,_132,_133); this.options.asynchronous=true; this.options.onComplete=this.onComplete.bind(this); this.options.defaultParams=this.options.parameters||null; this.url=url; },getUpdatedChoices:function(){ entry=encodeURIComponent(this.options.paramName)+"="+encodeURIComponent(this.getToken()); this.options.parameters=this.options.callback?this.options.callback(this.element,entry):entry; if(this.options.defaultParams){ this.options.parameters+="&"+this.options.defaultParams; } new Ajax.Request(this.url,this.options); },onComplete:function(_134){ this.updateChoices(_134.responseText); }}); Autocompleter.Local=Class.create(); Autocompleter.Local.prototype=Object.extend(new Autocompleter.Base(),{initialize:function(_135,_136,_137,_138){ this.baseInitialize(_135,_136,_138); this.options.array=_137; },getUpdatedChoices:function(){ this.updateChoices(this.options.selector(this)); },setOptions:function(_139){ this.options=Object.extend({choices:10,partialSearch:true,partialChars:2,ignoreCase:true,fullSearch:false,selector:function(_140){ var ret=[]; var _141=[]; var _142=_140.getToken(); var _143=0; for(var i=0;i<_140.options.array.length&&ret.length<_140.options.choices;i++){ var elem=_140.options.array[i]; var _145=_140.options.ignoreCase?elem.toLowerCase().indexOf(_142.toLowerCase()):elem.indexOf(_142); while(_145!=-1){ if(_145==0&&elem.length!=_142.length){ ret.push("
  • "+elem.substr(0,_142.length)+""+elem.substr(_142.length)+"
  • "); break; }else{ if(_142.length>=_140.options.partialChars&&_140.options.partialSearch&&_145!=-1){ if(_140.options.fullSearch||/\s/.test(elem.substr(_145-1,1))){ _141.push("
  • "+elem.substr(0,_145)+""+elem.substr(_145,_142.length)+""+elem.substr(_145+_142.length)+"
  • "); break; } } } _145=_140.options.ignoreCase?elem.toLowerCase().indexOf(_142.toLowerCase(),_145+1):elem.indexOf(_142,_145+1); } } if(_141.length){ ret=ret.concat(_141.slice(0,_140.options.choices-ret.length)); } return "
      "+ret.join("")+"
    "; }},_139||{}); }}); Field.scrollFreeActivate=function(_146){ setTimeout(function(){ Field.activate(_146); },1); }; Ajax.InPlaceEditor=Class.create(); Ajax.InPlaceEditor.defaultHighlightColor="#FFFF99"; Ajax.InPlaceEditor.prototype={initialize:function(_147,url,_148){ this.url=url; this.element=$(_147); this.options=Object.extend({okButton:true,okText:"ok",cancelLink:true,cancelText:"cancel",savingText:"Saving...",clickToEditText:"Click to edit",okText:"ok",rows:1,onComplete:function(_149,_147){ new Effect.Highlight(_147,{startcolor:this.options.highlightcolor}); },onFailure:function(_150){ alert("Error communicating with the server: "+_150.responseText.stripTags()); },callback:function(form){ return Form.serialize(form); },handleLineBreaks:true,loadingText:"Loading...",savingClassName:"inplaceeditor-saving",loadingClassName:"inplaceeditor-loading",formClassName:"inplaceeditor-form",highlightcolor:Ajax.InPlaceEditor.defaultHighlightColor,highlightendcolor:"#FFFFFF",externalControl:null,submitOnBlur:false,ajaxOptions:{}},_148||{}); if(!this.options.formId&&this.element.id){ this.options.formId=this.element.id+"-inplaceeditor"; if($(this.options.formId)){ this.options.formId=null; } } if(this.options.externalControl){ this.options.externalControl=$(this.options.externalControl); } this.originalBackground=Element.getStyle(this.element,"background-color"); if(!this.originalBackground){ this.originalBackground="transparent"; } this.element.title=this.options.clickToEditText; this.onclickListener=this.enterEditMode.bindAsEventListener(this); this.mouseoverListener=this.enterHover.bindAsEventListener(this); this.mouseoutListener=this.leaveHover.bindAsEventListener(this); Event.observe(this.element,"click",this.onclickListener); Event.observe(this.element,"mouseover",this.mouseoverListener); Event.observe(this.element,"mouseout",this.mouseoutListener); if(this.options.externalControl){ Event.observe(this.options.externalControl,"click",this.onclickListener); Event.observe(this.options.externalControl,"mouseover",this.mouseoverListener); Event.observe(this.options.externalControl,"mouseout",this.mouseoutListener); } },enterEditMode:function(evt){ if(this.saving){ return; } if(this.editing){ return; } this.editing=true; this.onEnterEditMode(); if(this.options.externalControl){ Element.hide(this.options.externalControl); } Element.hide(this.element); this.createForm(); this.element.parentNode.insertBefore(this.form,this.element); Field.scrollFreeActivate(this.editField); if(evt){ Event.stop(evt); } return false; },createForm:function(){ this.form=document.createElement("form"); this.form.id=this.options.formId; Element.addClassName(this.form,this.options.formClassName); this.form.onsubmit=this.onSubmit.bind(this); this.createEditField(); if(this.options.textarea){ var br=document.createElement("br"); this.form.appendChild(br); } if(this.options.okButton){ okButton=document.createElement("input"); okButton.type="submit"; okButton.value=this.options.okText; this.form.appendChild(okButton); } if(this.options.cancelLink){ cancelLink=document.createElement("a"); cancelLink.href="#"; cancelLink.appendChild(document.createTextNode(this.options.cancelText)); cancelLink.onclick=this.onclickCancel.bind(this); this.form.appendChild(cancelLink); } },hasHTMLLineBreaks:function(_154){ if(!this.options.handleLineBreaks){ return false; } return _154.match(/
    /i); },convertHTMLLineBreaks:function(_155){ return _155.replace(/
    /gi,"\n").replace(//gi,"\n").replace(/<\/p>/gi,"\n").replace(/

    /gi,""); },createEditField:function(){ var text; if(this.options.loadTextURL){ text=this.options.loadingText; }else{ text=this.getText(); } var obj=this; if(this.options.rows==1&&!this.hasHTMLLineBreaks(text)){ this.options.textarea=false; var _158=document.createElement("input"); _158.obj=this; _158.type="text"; _158.name="value"; _158.value=text; _158.style.backgroundColor=this.options.highlightcolor; var size=this.options.size||this.options.cols||0; if(size!=0){ _158.size=size; } if(this.options.submitOnBlur){ _158.onblur=this.onSubmit.bind(this); } this.editField=_158; }else{ this.options.textarea=true; var _160=document.createElement("textarea"); _160.obj=this; _160.name="value"; _160.value=this.convertHTMLLineBreaks(text); _160.rows=this.options.rows; _160.cols=this.options.cols||40; if(this.options.submitOnBlur){ _160.onblur=this.onSubmit.bind(this); } this.editField=_160; } if(this.options.loadTextURL){ this.loadExternalText(); } this.form.appendChild(this.editField); },getText:function(){ return this.element.innerHTML; },loadExternalText:function(){ Element.addClassName(this.form,this.options.loadingClassName); this.editField.disabled=true; new Ajax.Request(this.options.loadTextURL,Object.extend({asynchronous:true,onComplete:this.onLoadedExternalText.bind(this)},this.options.ajaxOptions)); },onLoadedExternalText:function(_161){ Element.removeClassName(this.form,this.options.loadingClassName); this.editField.disabled=false; this.editField.value=_161.responseText.stripTags(); },onclickCancel:function(){ this.onComplete(); this.leaveEditMode(); return false; },onFailure:function(_162){ this.options.onFailure(_162); if(this.oldInnerHTML){ this.element.innerHTML=this.oldInnerHTML; this.oldInnerHTML=null; } return false; },onSubmit:function(){ var form=this.form; var _163=this.editField.value; this.onLoading(); new Ajax.Updater({success:this.element,failure:null},this.url,Object.extend({parameters:this.options.callback(form,_163),onComplete:this.onComplete.bind(this),onFailure:this.onFailure.bind(this)},this.options.ajaxOptions)); if(arguments.length>1){ Event.stop(arguments[0]); } return false; },onLoading:function(){ this.saving=true; this.removeForm(); this.leaveHover(); this.showSaving(); },showSaving:function(){ this.oldInnerHTML=this.element.innerHTML; this.element.innerHTML=this.options.savingText; Element.addClassName(this.element,this.options.savingClassName); this.element.style.backgroundColor=this.originalBackground; Element.show(this.element); },removeForm:function(){ if(this.form){ if(this.form.parentNode){ Element.remove(this.form); } this.form=null; } },enterHover:function(){ if(this.saving){ return; } this.element.style.backgroundColor=this.options.highlightcolor; if(this.effect){ this.effect.cancel(); } Element.addClassName(this.element,this.options.hoverClassName); },leaveHover:function(){ if(this.options.backgroundColor){ this.element.style.backgroundColor=this.oldBackground; } Element.removeClassName(this.element,this.options.hoverClassName); if(this.saving){ return; } this.effect=new Effect.Highlight(this.element,{startcolor:this.options.highlightcolor,endcolor:this.options.highlightendcolor,restorecolor:this.originalBackground}); },leaveEditMode:function(){ Element.removeClassName(this.element,this.options.savingClassName); this.removeForm(); this.leaveHover(); this.element.style.backgroundColor=this.originalBackground; Element.show(this.element); if(this.options.externalControl){ Element.show(this.options.externalControl); } this.editing=false; this.saving=false; this.oldInnerHTML=null; this.onLeaveEditMode(); },onComplete:function(_164){ this.leaveEditMode(); this.options.onComplete.bind(this)(_164,this.element); },onEnterEditMode:function(){ },onLeaveEditMode:function(){ },dispose:function(){ if(this.oldInnerHTML){ this.element.innerHTML=this.oldInnerHTML; } this.leaveEditMode(); Event.stopObserving(this.element,"click",this.onclickListener); Event.stopObserving(this.element,"mouseover",this.mouseoverListener); Event.stopObserving(this.element,"mouseout",this.mouseoutListener); if(this.options.externalControl){ Event.stopObserving(this.options.externalControl,"click",this.onclickListener); Event.stopObserving(this.options.externalControl,"mouseover",this.mouseoverListener); Event.stopObserving(this.options.externalControl,"mouseout",this.mouseoutListener); } }}; Form.Element.DelayedObserver=Class.create(); Form.Element.DelayedObserver.prototype={initialize:function(_165,_166,_167){ this.delay=_166||0.5; this.element=$(_165); this.callback=_167; this.timer=null; this.lastValue=$F(this.element); Event.observe(this.element,"keyup",this.delayedListener.bindAsEventListener(this)); },delayedListener:function(_168){ if(this.lastValue==$F(this.element)){ return; } if(this.timer){ clearTimeout(this.timer); } this.timer=setTimeout(this.onTimerEvent.bind(this),this.delay*1000); this.lastValue=$F(this.element); },onTimerEvent:function(){ this.timer=null; this.callback(this.element,$F(this.element)); }}; if(typeof (Lastfm)!="object"){ Lastfm={RES_ARTIST:6,RES_USER:4,RES_LOCATION:1623}; } if(typeof (Lastfm.utils)!="object"){ Lastfm.utils={}; } Lastfm.utils.Step=Class.create(); Lastfm.utils.Step.prototype={initialize:function(_169){ this.element=_169; this.next=false; },go2Next:function(){ this.controller.go2(this.next); },go2Previous:function(){ this.controller.go2(this.previous); },go2:function(){ this.controller.go2(this); },pre:function(){ },post:function(){ },validate:function(){ return true; }}; Lastfm.utils.StepController=Class.create(); Lastfm.utils.StepController.prototype={current:false,indexCounter:0,previous:false,nextstep:false,initialize:function(_170){ this.selector=_170.selector?_170.selector:Lastfm.Selectors.visibility; this.steps={}; var c=_170.className?_170.className:false; var t=_170.tag?_170.tag:false; var _173=t?document.getElementsByTagName(t):document.getElementsByClassName(c); for(var i=0;i<_173.length;i++){ if((t&&!c)||(c&&Element.hasClassName(_173[i],c))){ var step=new Lastfm.utils.Step(_173[i]); this.add(step); if(i==0){ this.current=step; }else{ this.selector(_173[i],false); } } } },go2:function(step){ step=this.get(step); if(step){ this.nextstep=step; } if(!this.current||!this.current.validate()){ return; } this.current.post(); this.selector(this.current.element,false); this.current=step; if(step){ this.selector(this.current.element,true); step.pre(); } },next:function(){ this.go2(this.current.next); },previous:function(){ this.go2(this.current.previous); },get:function(step){ if(!step){ return false; } return typeof (step)!="object"?this.steps[step]:step; },add:function(step){ var id=step.element.getAttribute("id"); ++this.indexCounter; if(!id){ id=this.indexCounter; } step.id=id; step.index=this.indexCounter; step.controller=this; step.previous=this.previous; step.previous.next=step; this.previous=step; this.steps[id]=step; }}; Lastfm.Selectors={}; Lastfm.Selectors.visibility=function(_175,_176){ _175=$(_175); _175.style.display=_176?"block":"none"; }; Lastfm.Selectors.halfOpacity=function(_177,_178){ _177=$(_177); _177.style.filter="alpha(opacity='"+(_178?"100":"30")+"')"; _177.style.opacity=_178?"1":"0.3"; _177.style.mozopacity=_178?"1":"0.3"; }; Lastfm.Selectors.disable=function(_179,_180){ _179=$(_179); Lastfm.Selectors.halfOpacity(_179,_180); var each=["input","select"]; for(var i=0;i1){ hideClass(arguments[1]); } _217.style.display=""; }else{ _217.style.display="none"; } } } var hideClassList={}; function hideClass(_218){ if(hideClassList[_218]){ for(var key in hideClassList[_218]){ hideClassList[_218][key].style.display="none"; } }else{ var _219=document.getElementById(_218); if(_219){ hideClassList[_218]=new Array(); for(var key in _219.childNodes){ if(_219.childNodes[key].className&&_219.childNodes[key].className.match(new RegExp(_218))){ hideClassList[_218].push(_219.childNodes[key]); } } hideClass(_218); } } } var actionConf={jcommentdelete:{msg:"Are you sure you would like to delete this comment?",urlpass:null},journaldelete:{msg:"Are you sure you would like to delete this journal entry?",urlpass:null}}; function confirmAction(_220){ if(confirm(actionConf[_220].msg)){ if(actionConf[_220].urlpass==null){ if(arguments.length==1){ alert("ERROR:: There is no rediret URL"); }else{ window.location.href=arguments[1]; } }else{ window.location.href=actionConf[_220].urlpass; } }else{ if(!actionConf[_220].urlfail){ }else{ window.location.href=actionConf[_220].urlfail; } } } function showShopCondition(_221,_222){ var _223=document.getElementById(_221); var _224=_223.childNodes; var _225=null; var _226=null; var _227=new RegExp(_222,"i"); for(var i=0;i<_224.length;i++){ if(_224[i].className=="shopdisplay"){ _225=_224[i]; }else{ if(_224[i].className=="shopswitch"){ for(var j=0;j<_224[i].childNodes.length;j++){ if(_224[i].childNodes[j].className){ if(_224[i].childNodes[j].className.match(_222)){ _224[i].childNodes[j].style.fontWeight="bold"; }else{ _224[i].childNodes[j].style.fontWeight="normal"; } } } } } } var _228=_225.childNodes; for(var i=0;i<_228.length;i++){ if(_228[i].nodeType==1){ if(_228[i].className.match(_227)){ _228[i].style.display="block"; }else{ _228[i].style.display="none"; } } } } function print_r(_229,_230){ if(typeof (_230)=="number"){ if(_230>2){ return "Too Far\n"; } var _231=" "; for(var j=0;j<_230;j++){ _231+=_231; } paren_indent-=" "; _230++; }else{ var _230=1; var _231=" "; var _232=""; } switch(typeof (_229)){ case "boolean": var _233=(_229?"true":"false")+"\n"; break; case "object": if(_229===null){ var _233="null\n"; break; } var _233=((_229.reverse)?"Array":"Object")+" (\n"; for(var i in _229){ try{ _233+=_231+"["+i+"] => "+print_r(_229[i],_230); } catch(ex){ } } _233+=_232+")\n"; break; case "number": case "string": default: var _233=""+_229+"\n"; } return _233; } function setFocus(id){ element=document.getElementById(id); setTimeout("element.focus();",500); } function confirmAndGo(msg,url){ if(confirm(msg)){ self.location=url; }else{ return false; } } function whelp(_235){ wh_clear(0); var _236=$("whelp"); if(_236){ _236.appendChild(document.createTextNode(_235.title)); } } function wh_clear(_237){ var _238=$("whelp"); if(_238){ while(_238.firstChild){ _238.removeChild(_238.firstChild); } if(wh_default&&_237>0){ _238.appendChild(document.createTextNode(wh_default)); } } } String.prototype.trim=function(){ a=this.replace(/^\s+/,""); return a.replace(/\s+$/,""); }; var panelDefaultItems=new Array(); var panelRemovedItems=new Array(); var panelOtherItems=new Array(); Panel.prototype.addItem=Panel_addItem; Panel.prototype.getItem=Panel_getItem; Panel.prototype.removeItem=Panel_removeItem; Panel.prototype.checkForItem=Panel_checkForItem; Panel.prototype.removeAllItems=Panel_removeAllItems; Panel.prototype.listItems=Panel_listItems; function Panel(_239){ this.panel=_239; var _240=this.panel.childNodes; panelDefaultItems[this.panel.id]=new Array(); panelRemovedItems[this.panel.id]=new Array(); panelOtherItems[this.panel.id]=new Array(); for(var i=0;i<_240.length;i++){ if(_240[i].nodeType==1&&_240[i].tagName.toLowerCase()=="div"){ switch(_240[i].className){ case "h": this.header=_240[i]; break; case "c": this.content=_240[i]; var _241=this.content.childNodes; for(var j=0;j<_241.length;j++){ if(_241[j].nodeType==1&&_241[j].tagName.toLowerCase()=="ul"){ this.list=_241[j]; var _242=this.list.childNodes; for(var k=0;k<_242.length;k++){ if(_242[k].nodeType==1&&_242[k].tagName.toLowerCase()=="li"){ for(var l=0;l<_242[k].length;l++){ if(_242[k][l].nodeType==1&&_242[k][l].tagName.toLowerCase()=="a"&&_242[k][l].className=="it"){ var name=_242[k][l].childNodes[0].data; var it=panelDefaultItems[this.panel.id].length; panelDefaultItems[this.panel.id][it]={name:name,"element":_242[k]}; } } } } break; } } break; case "f": this.footer=_240[i]; break; } } } this.itemcount=0; } function Panel_addItem(_245,_246){ var _247=document.getElementById("emptyConnectionsDiv"); if(_247){ _247.style.display="none"; } var li=document.createElement("li"); var liid=this.panel.id+"_li"+this.itemcount; li.id=liid; li.className="imgtags"; var a1=document.createElement("a"); a1.title=""; a1.className="it"; a1.target="_new"; a1.href=getElementText(_245,"url"); var a2=document.createElement("a"); a2.target="_new"; a2.href=getElementText(_245,"url"); a2.className="img"; var img=document.createElement("img"); img.width="50"; img.height="50"; img.src=getElementText(_245,"smallimg"); var a3=document.createElement("span"); a3.className="x"; a3.href="javascript:;"; var _246=document.createElement("input"); _246.type="checkbox"; _246.style.display="none"; _246.value="true"; _246.name=this.panel.id+this.itemcount.toString()+"c"; a3.appendChild(_246); a2.appendChild(img); li.appendChild(a2); a1.appendChild(document.createTextNode(getElementText(_245,"name"))); li.appendChild(a1); li.appendChild(a3); if(_246){ var _254=document.createElement("input"); _254.setAttribute("type","hidden"); _254.setAttribute("name",this.panel.id+this.itemcount.toString()); _254.setAttribute("value",getElementText(_245,"restype")+":"+getElementText(_245,"id")); li.appendChild(_254); } var i=panelOtherItems[this.panel.id].length; panelOtherItems[this.panel.id][i]={"name":getElementText(_245,"name"),"resname":getElementText(_245,"resname"),"element":li}; var _255; if((_255=getElementText(_245,"artistname"))!=null){ panelOtherItems[this.panel.id][i].artist=getElementText(_245,"artistname"); } this.list.appendChild(li); this.itemcount++; return liid; } function Panel_getItem(loc,id){ switch(loc){ case 1: return panelRemovedItems[this.panel.id][id]; break; default: return null; } } function Panel_removeItem(id){ var _257=document.getElementById(id); var _258=false; var _259=panelOtherItems[this.panel.id]; var tmp; for(var i=0;i<_259.length;i++){ if(_259[i].element==_257){ tmp=_259[i]; _259.splice(i,1); break; } } panelRemovedItems[this.panel.id][panelRemovedItems[this.panel.id].length]=tmp; try{ _257.parentNode.removeChild(_257); this.listItems("removed"); this.listItems("other"); } catch(e){ alert("Error[Panel.removeItem("+id+")]"); } } function Panel_checkForItem(tag,_262,_263){ var _264=[panelDefaultItems[this.panel.id],panelRemovedItems[this.panel.id],panelOtherItems[this.panel.id]]; var _265=/artist=([^\]]*)\]"/g; try{ var _266=_263.match(_265)[1]; } catch(e){ } for(var i=0;i<_264.length;i++){ for(var j=0;j<_264[i].length;j++){ if(i==0){ }else{ if(_264[i][j].resname.toLowerCase()==tag.toLowerCase()&&_264[i][j].name.toLowerCase()==_262.toLowerCase()){ if(!_266||(_264[i][j].artistname.toLowerCase()&&_266==_264[i][j].artistname.toLowerCase())){ this.lastItemCheck=j; return i; } } } } } return 3; } function Panel_removeAllItems(){ var _267=this.list; for(var i=0;i=this.allowedValues.max()){ return (this.allowedValues.max()); } if(_289<=this.allowedValues.min()){ return (this.allowedValues.min()); } var _290=Math.abs(this.allowedValues[0]-_289); var _291=this.allowedValues[0]; this.allowedValues.each(function(v){ var _293=Math.abs(v-_289); if(_293<=_290){ _291=v; _290=_293; } }); return _291; } if(_289>this.range.end){ return this.range.end; } if(_2890)&&(_294this.values[_295+1])){ _294=this.values[_295+1]; } } _294=this.getNearestValue(_294); this.values[_295]=_294; this.value=this.values[0]; this.handles[_295].style[this.isVertical()?"top":"left"]=this.translateToPx(_294); this.drawSpans(); if(!this.dragging||!this.event){ this.updateFinished(); } },setValueBy:function(_296,_297){ this.setValue(this.values[_297||this.activeHandleIdx||0]+_296,_297||this.activeHandleIdx||0); },translateToPx:function(_298){ return Math.round(((this.trackLength-this.handleLength)/(this.range.end-this.range.start))*(_298-this.range.start))+"px"; },translateToValue:function(_299){ return ((_299/(this.trackLength-this.handleLength)*(this.range.end-this.range.start))+this.range.start); },getRange:function(_300){ var v=this.values.sortBy(Prototype.K); _300=_300||0; return $R(v[_300],v[_300+1]); },minimumOffset:function(){ return (this.isVertical()?this.alignY:this.alignX); },maximumOffset:function(){ return (this.isVertical()?this.track.offsetHeight-this.alignY:this.track.offsetWidth-this.alignX); },isVertical:function(){ return (this.axis=="vertical"); },drawSpans:function(){ var _301=this; if(this.spans){ $R(0,this.spans.length-1).each(function(r){ _301.setSpan(_301.spans[r],_301.getRange(r)); }); } if(this.options.startSpan){ this.setSpan(this.options.startSpan,$R(0,this.values.length>1?this.getRange(0).min():this.value)); } if(this.options.endSpan){ this.setSpan(this.options.endSpan,$R(this.values.length>1?this.getRange(this.spans.length-1).max():this.value,this.maximum)); } },setSpan:function(span,_304){ if(this.isVertical()){ span.style.top=this.translateToPx(_304.start); span.style.height=this.translateToPx(_304.end-_304.start); }else{ span.style.left=this.translateToPx(_304.start); span.style.width=this.translateToPx(_304.end-_304.start); } },updateStyles:function(){ this.handles.each(function(h){ Element.removeClassName(h,"selected"); }); Element.addClassName(this.activeHandle,"selected"); },startDrag:function(_305){ if(Event.isLeftClick(_305)){ if(!this.disabled){ this.active=true; var _306=Event.element(_305); var _307=[Event.pointerX(_305),Event.pointerY(_305)]; if(_306==this.track){ var _308=Position.cumulativeOffset(this.track); this.event=_305; this.setValue(this.translateToValue((this.isVertical()?_307[1]-_308[1]:_307[0]-_308[0])-(this.handleLength/2))); var _308=Position.cumulativeOffset(this.activeHandle); this.offsetX=(_307[0]-_308[0]); this.offsetY=(_307[1]-_308[1]); }else{ while((this.handles.indexOf(_306)==-1)&&_306.parentNode){ _306=_306.parentNode; } this.activeHandle=_306; this.activeHandleIdx=this.handles.indexOf(this.activeHandle); this.updateStyles(); var _308=Position.cumulativeOffset(this.activeHandle); this.offsetX=(_307[0]-_308[0]); this.offsetY=(_307[1]-_308[1]); } } Event.stop(_305); } },update:function(_309){ if(this.active){ if(!this.dragging){ this.dragging=true; } this.draw(_309); if(navigator.appVersion.indexOf("AppleWebKit")>0){ window.scrollBy(0,0); } Event.stop(_309); } },draw:function(_310){ var _311=[Event.pointerX(_310),Event.pointerY(_310)]; var _312=Position.cumulativeOffset(this.track); _311[0]-=this.offsetX+_312[0]; _311[1]-=this.offsetY+_312[1]; this.event=_310; this.setValue(this.translateToValue(this.isVertical()?_311[1]:_311[0])); if(this.initialized&&this.options.onSlide){ this.options.onSlide(this.values.length>1?this.values:this.value,this); } },endDrag:function(_313){ if(this.active&&this.dragging){ this.finishDrag(_313,true); Event.stop(_313); } this.active=false; this.dragging=false; },finishDrag:function(_314,_315){ this.active=false; this.dragging=false; this.updateFinished(); },updateFinished:function(){ if(this.initialized&&this.options.onChange){ this.options.onChange(this.values.length>1?this.values:this.value,this); } this.event=null; }}; function searchboxFocus(){ $("roundsearch").className="searching"; if($("rstext").value=="Search"&&!isSafari()){ $("rstext").value=""; } } function searchboxBlur(){ $("roundsearch").className=""; if($("rstext").value==""&&!isSafari()){ $("rstext").value="Search"; } } function searchboxClick(){ if($("rstext").value=="Search"){ $("rstext").value=""; } } var holderVisible=false; var frameLoaded=false; var current; var curSrc; function $(){ var _316=new Array(); for(var i=0;i1){ _320.value=_320.value+", "; } _320.value=_320.value+tag; } function delTag(tag){ confirm("Really remove your tag \""+tag+"\" from this item?"); } function setFocus(id){ element=document.getElementById(id); setTimeout("element.focus();",500); } function faqpopup(id){ var url="/popups/faq.php?id="+id; faq=window.open(url,"faq","toolbar=no, location=no, directories=no, status=no,menubar=no, scrollbars=yes, resizable=yes, width=350, height=400"); } var WinLoad={loadfuncs:new Array(),addFunc:function(ref){ if(arguments.length>1){ WinLoad.loadfuncs.unshift(ref); }else{ WinLoad.loadfuncs.push(ref); } },exFuncs:function(){ for(var i=0;i?GOZNS.objectsWNS.keys@ABCDEFHIJKLMN VServer]Accept-Ranges]Last-ModifiedTDate^Content-LengthTEtag\Content-Type_lighttpd/1.4.10Ubytes_Tue, 15 Nov 2005 02:26:32 GMT_Wed, 31 May 2006 17:11:48 GMTT1852_"8098200991889289269"12^__`6_NSMutableDictionary\NSDictionary12bcc6_NSHTTPURLResponseInternal12effg6_NSHTTPURLResponse]NSURLResponse$)2DILbd+-/1Z_hsw}#(5GMmh%O?GOZNS.objectsWNS.keys@ABCDEFHIJKLMN VServer]Accept-Ranges]Last-ModifiedTDate^Content-LengthTEtag\Content-Type_lighttpd/1.4.10Ubytes_Tue, 15 Nov 2005 02:26:13 GMT_Wed, 31 May 2006 17:11:48 GMTS727_"-7062146550699970849"12^__`6_NSMutableDictionary\NSDictionary12bcc6_NSHTTPURLResponseInternal12effg6_NSHTTPURLResponse]NSURLResponse$)2DILbd+-/1afoz~*/<NTt h,OGIF89a9?j=hX}TzKs5b*Z^0^6c닥.]8d1_3a邞Jrꉣu>i了遝;gIrHqoBl9e됩Fos:f훱Z$Uꊤ~2`v(XjgV|쒪q_Lt댦%V씬h\`s?GOZNS.objectsWNS.keys@ABCDEFHIJKLMN VServer]Accept-Ranges]Last-ModifiedTDate^Content-LengthTEtag\Content-Type_lighttpd/1.4.10Ubytes_Tue, 15 Nov 2005 04:05:14 GMT_Wed, 31 May 2006 17:11:48 GMTT1467_"1857371415175647478"12^__`6_NSMutableDictionary\NSDictionary12bcc6_NSHTTPURLResponseInternal12effg6_NSHTTPURLResponse]NSURLResponse$)2DILbd+-/1glu!05BTZz $h2OGIF89a{{{wwwsssoookkkgggcccZZZVVVRRRNNNJJJFFFBBB>>>:::555111! NETSCAPE2.0!2,@p(H!A(BHDƠR;V H@`1TeaJ"yP D$/-*{DlGC ZB"$C ~C *%  p pC&2P22!2P PA!2, R@ H`Z$ B1B Z$cPr8rL G,(!g"l" f2H 2P2BZwIA!2, L@PH  d,FtLI%dMCʤj8_ #  qx)Hp ^G2BL CA!2, J@p(C< EdRɸ#lҘC! '"<QR2 f2 C t`A!2, R@p(l$@ q^qA^3-]@ # B!#2 O}Du2q}B2 GA!2, P@p(PQH2J)D##,12 WDt, : %T J ITDk{ BA!2, E@ x Rv$ fi,$ T fCmT3i(7)UX68Լjz22JA!2, V@p(Ly\db 12 TAR$ rbL!bR ɂ\ 3Ge>P)'i LOVB-D!/, B $A!2, I@qéArQQU@GaY2 F6$Fu G61 `h,*kB,2FA!2, B@P 2 )'RD s<ң"0I#B]J#¬Q ÒLH/D'H$[A!2, M@PFbx\LxB0RjBˆR!#cNPS$C`1/ (2#!C$#2+2 G RA! 2,P@pH,ȤrtP2 u@ t0!Cu"64ҐL!022E*2#2H 2%BKFA;_3http://static.last.fm/tageditor/progress_active.gif1234O0bplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?GOZNS.objectsWNS.keys@ABCDEFHIJKLMN VServer]Accept-Ranges]Last-ModifiedTDate^Content-LengthTEtag\Content-Type_lighttpd/1.4.10Ubytes_Fri, 21 Apr 2006 09:49:46 GMT_Wed, 31 May 2006 17:11:48 GMTT2674_"344430848151712810"12^__`6_NSMutableDictionary\NSDictionary12bcc6_NSHTTPURLResponseInternal12effg6_NSHTTPURLResponse]NSURLResponse$)2DILbd+-/1uz+0?DQci2h@O rJFIFHHC    $.' ",#(7),01444'9=82<.342 ss"< !1A"2QaqB#R$3ber?)JR)JR+#r Nw#}N2OjWuee#}P)JR)S-y5v0!Pʤ}{!yq SU^PbFҲZR)JReb jsH*.mAWÉgP+tP M g9omq7Q˜>dQN4}f.cE4)}H֡iJR+{tsȾڤ7uAj7#"4tW}A_Cc8{<1[_K0t6#kJ2,r[S Ǫjo|>B+mne'OM=:&H)uD!滮VF*A)J]gmgKLr0WzXYx3AOV'_iy+~?]6*`clzd3[ {IH0(jO=Y,8B:fv?ASMeV\G!K XXF~uI,{pX>!볿QQ8ث"9Vp\G*}{ЗW2`;pGV5w&'=W^\,C1+".\}=^u޿ZLRNQ>>ɡgU+"0>_^i~d + <|\afCުپ,|d-V6,;>Pzo[Jq|uMmbQe %G_^x//Ke9Ϻ.Lp S#={ [qHV;6=xS-o4fdQ4D_*E^p7ONYQ Mc3}R}Ns֜GL.\I 駐y`~d=IW )ȓA.$""չ~XBmuZ= PL`)k> Brq*Q/;nӪcbdz#xsdd/+;=ҡiJًA<ܣQ,sf$?ud\b|PF|WݼIOªsk{kcxY'5|Q`<̺=% f`u?ISZNS.objectsWNS.keys@ABCDEFGHJKLMNOPQR VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthZKeep-AliveTEtag\Content-Type_Apache/1.3.33 (Unix) PHP/4.4.0_Fri, 01 Jul 2005 08:01:42 GMTUbytes_Wed, 31 May 2006 17:14:11 GMTR70Ztimeout=15_"35c689-46-42c4f866"12effg6_NSMutableDictionary\NSDictionary12ijj6_NSHTTPURLResponseInternal12lmmn6_NSHTTPURLResponse]NSURLResponse$)2DILbd".024\ajuy   .9>MX]j"'*FKOcoqOFfunction phpads_deliverActiveX(content) { document.write(content); }_%http://campaign.indieclick.com/adx.js_application/x-javascript;<=9Obplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse (./67;STUVWXYZ[\]W^_`ab6cgjU$null  !"#$%&%'R$6S$10R$2S$13R$7R$3S$11R$8R$4S$14R$9R$0V$classR$5S$12R$1#A\ ^#A\ q)*!,-WNS.base[NS.relative_Khttp://campaign.indieclick.com/adjs.php?n=000007826&what=zone:286&exclude=,0123X$classesZ$classname345UNSURLV%NSURLXNSObject_application/x-javascript89:<=>HRZNS.objectsWNS.keys?@ABCDEFGIJKLMNOPQ VServer]Cache-ControlZConnectionTDateZKeep-Alive_Transfer-EncodingVPragma\X-Powered-By\Content-Type_Apache/1.3.33 (Unix) PHP/4.4.0_private, max-age=0, no-cache_Wed, 31 May 2006 17:14:11 GMTZtimeout=15XIdentityXno-cacheYPHP/4.4.001deef5_NSMutableDictionary\NSDictionary01hii5_NSHTTPURLResponseInternal01kllm5_NSHTTPURLResponse]NSURLResponse$)2DILbd  &(*,z  !#%')0>INYmt 4AFIejnnOvar phpadsbanner = ''; phpadsbanner += '<'+'a href=\'http://campaign.indieclick.com/adclick.php?bannerid=7282&zoneid=286&source=&dest=http%3A%2F%2Fad.doubleclick.net%2Fclk%3B32019386%3B13144659%3Bi%3Fhttp%3A%2F%2Fvideo.msn.com%2Fv%2Fus%2Fv.htm%3Fg%3Ddcd920cf-be75-45d0-ac82-610d5aa5d4d1%26f%3D\' target=\'_blank\' onMouseOver="self.status=\'Advertise on the IndieClick Network- IndieClick.com\'; return true;" onMouseOut="self.status=\'\';return true;">Exclusive Nada Surf playing backstage at SxSW\n<'+'/a><'+'div id="beacon_7282" style="position: absolute; left: 0px; top: 0px; visibility: hidden;"><'+'img src=\'http://campaign.indieclick.com/adlog.php?bannerid=7282&clientid=3474&zoneid=286&source=&block=0&capping=0&cb=ad56b162746e51a2119a2c3f39f819aa\' width=\'0\' height=\'0\' alt=\'\' style=\'width: 0px; height: 0px;\'><'+'/div>'; document.write(phpadsbanner); _Khttp://campaign.indieclick.com/adjs.php?n=000007826&what=zone:286&exclude=,?@A'Obplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse (./67;STUVWXYZ[\]X^_`ab6cgjU$null  !"#$%&%'R$6S$10R$2S$13R$7R$3S$11R$8R$4S$14R$9R$0V$classR$5S$12R$1#A\ M+#A\ )*!,-WNS.base[NS.relative_http://campaign.indieclick.com/adlog.php?bannerid=7282&clientid=3474&zoneid=286&source=&block=0&capping=0&cb=ad56b162746e51a2119a2c3f39f819aa0123X$classesZ$classname345UNSURLV%NSURLXNSObjectYimage/gif89:<=>HRZNS.objectsWNS.keys?@ABCDEFGIJKLMNOPQ VServer]Cache-ControlZConnectionTDate^Content-LengthZKeep-AliveVPragma\X-Powered-By\Content-Type_Apache/1.3.33 (Unix) PHP/4.4.0_private, max-age=0, no-cache_Wed, 31 May 2006 17:14:11 GMTR43Ztimeout=15Xno-cacheYPHP/4.4.001deef5_NSMutableDictionary\NSDictionary01hii5_NSHTTPURLResponseInternal01kllm5_NSHTTPURLResponse]NSURLResponse$)2DILbd %')+ )+-/13579;EGIKMOQSUWY`ny~'0:?CYfknnO+GIF89a!,D;_http://campaign.indieclick.com/adlog.php?bannerid=7282&clientid=3474&zoneid=286&source=&block=0&capping=0&cb=ad56b162746e51a2119a2c3f39f819aaCDEFObplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse (./67;KLMNOPQRS6TX[U$null  !"#$%&%'R$6S$10R$2S$13R$7R$3S$11R$8R$4S$14R$9R$0V$classR$5S$12R$1#A\ c=#A\ ))*!,-WNS.base[NS.relative_Ohttp://4.adbrite.com/mb/text_group.php?sid=95151&br=1&dk=7469636b6574735f335f310123X$classesZ$classname345UNSURLV%NSURLXNSObjectYtext/html89:<=>DJZNS.objectsWNS.keys?@ABC EFGHI VServerZConnectionTDate_Transfer-Encoding\Content-TypeVApacheUclose_Wed, 31 May 2006 17:11:36 GMTXIdentity01UVVW5_NSMutableDictionary\NSDictionary01YZZ5_NSHTTPURLResponseInternal01\]]^5_NSHTTPURLResponse]NSURLResponse$)2DILbd|  "$v{'4;Aajos_Odocument.write('RaveWorx.com Party Gear
    Flashing toys, clubbing clothes, and jewelry. Free shipping over $50!

    ');_Ohttp://4.adbrite.com/mb/text_group.php?sid=95151&br=1&dk=7469636b6574735f335f31Ytext/htmlHIJ'Obplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?GOZNS.objectsWNS.keys@ABCDEFHIJKLMN VServer]Accept-Ranges]Last-ModifiedTDate^Content-LengthTEtag\Content-Type_lighttpd/1.4.10Ubytes_Wed, 08 Feb 2006 18:59:51 GMT_Wed, 31 May 2006 17:11:52 GMTS120_"5787712361343750404"12^__`6_NSMutableDictionary\NSDictionary12bcc6_NSHTTPURLResponseInternal12effg6_NSHTTPURLResponse]NSURLResponse$)2DILbd *,.0\ajuy%*7IOoh&OxGIF89a »ûĽʼŽº!, %I `.L| NA;-(9iE;_)http://static.last.fm/matt/tiny_popup.gifLMN4O2bplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?GOZNS.objectsWNS.keys@ABCDEFHIJKLMN VServer]Accept-Ranges]Last-ModifiedTDate^Content-LengthTEtag\Content-Type_lighttpd/1.4.10Ubytes_Mon, 14 Nov 2005 16:23:14 GMT_Wed, 31 May 2006 17:11:52 GMTU27183_"8617046347114009926"12^__`6_NSMutableDictionary\NSDictionary12bcc6_NSHTTPURLResponseInternal12effg6_NSHTTPURLResponse]NSURLResponse$)2DILbd+-/1uz+0?DQci 4hBOj/JFIF 氫)EъjrĴ#g{$VN}MuKA-B \$b B /f־)K$V:,ƺj/w=s[I UT/IW2-.ej:}Mdew Z\C+GN.#j~G'/u= ~.i?Ot,lnP񝲟*ok旧L*4pʩ/|/ab%nWz8IYb!U߻b|~,R+FSTsIet*xe֞sQ-\~\Ϫ*,}guڄ6|Ϣx"}S\Z%TC pśI Ǵx>h XxGHӴ12ȱO^ꚔΈd7Z`v[cKu_< Z _@M3>-<#E ΖIQgw0񢕻k9 qaw4QOѾX$CG5ȷHn6*H5C:(i1%) .կ^XAi5ʏ6~p; KFX`qcUӯuƶk}j>"6Q 4O g4[{GA}yWzqE+K.."Vper$"#_;>Hdʗ ̇[ RJ X=USQJMz{hVCq 8 fX^ކ3 xɺV&T(UXjJҥ5.YFMs[Ҡ5=.S[կf$-oh Q^0E-( t˛xkn-x-留_ϐJ .ll bb[L緋<7O>%mu/g1Ť]|?ՃFSnE5 i3\C_i[%> xĿ;V:n܍O]hvwq+=G+K]-NY]ܵѾ 6geBʵ7<=xR jS)4x63߂9;cǹUe -wիNxlEN"U{exCx }K{ ]i3D\k]B18+*7I;0sC"C@xOmx4Mf/ nx>_3W e? xVc7k=V[w+E,|O[o5:5-kUO`ՌEh] '4+pZxK^6AU|KS~[#^DX[ "Y6Kg O ÷e.f%tec8{ >*<QuiS#!Z XJ3ۦ T^ <(<uix:&x~-iݜ0HuZmzV I/:@Bf^[|yQ6ľ'ӦMn.=gĺTk.ȵ څH`TK/hɥ\k7pЮ;ˡJ'ʭwQ'G ;7^\=YYʏժz+{\?%g}$ +6k=ܮѴMO8I!&.nBRrÌ:v]hQldK-F. z=2;c45j^0ѴUW|-i5mkD🁭ψdyγ&Υv4~l7ٺvZy\LX{_Rx/r7>61:Ig}yt8]s<4U5M NckgoΕxgX?o_<?|%K-7Vh5{o] [R{ o |IxO|uizNjsywھo-֘5tXlDlj ?ه8~xV—9zuS C_~"Z]<#Y|A3z7}f[m{DԴW.t:8yB5x>)6}"T< u%Kyo,/+K'ݹ2} 9c#py9fQ'(,S]mguu~e2V=\-iR-RM{JRK_S廵0ish\h<]$;+8fmOE͒K74(g_ßk^-Zck—:.s4tYRmvP]jZ|7Vzi:ڙ^0|Ǎ5X'l.!|Ox/-Yhd=+JZi։#Guwc⿈.>1Ӽ67bI}245Ew 恚 Gs:ceҩByKM ,MJx*̩21|zZU9Ў.xzBuU:i}7Rv*h2ӎn3hC4Z6q3Z2~=V|dE=͇qq*iV;꠲!]#N4ԙW7ZQ>G3ksZG4r;ҵ}Zg욍Ψ/q>5}iM6.fYZXi#,1ZXZkk yV1Iۋ3.côiqRKB8i_R I5/i..<2J~:|6"GVY <ƝHb~IKO ԫB:GݭRrkς3Q4MU EsR*J6W=UAVFy1W-Ko;n}9kjxLRîq$k2uFF}1VW\Gԗ%9Prn6M.ei'wdg ٪3|>'=*uby]4[jhފǮ^E㨵K;QjVKp}wJ !eeBZm=Kញ>44b%6rXZ-hr˩ǡJŞM7TP #i-DqFoqY仙keb,`| 0?~ |'tQm/Fⷆ4.oXU4mm6 'ލu=܍2YLXkWfNx(X|LmVPrsJN{4x\y昼1cWJ҅5xP*XUS)5%+E,-|N>'x/ {Xzχ]Ltkm9*>0]6N}JԬh$Y"_yjo!~*u-:iֱj$IaiqioZ}ͨi0eI!Dm>x ߲xgߍ|+o⇉#΍vү.}_פw / vYu8u{w?I:~4Vwzׇ|Dwķ1\ŤGjrvmxKCӬ[xx-t)&6-Z}2R ܬ _>i/RRA='MJug"ۈXᲥg/G87 bvojy }_7px~b8[3T ia*XW)_a%S-c|?^]sox: ilv6{<LW6M%lۡe|I|'w{k^[CmS~&H.5ۭ.K$9jq[̱kr"~ OBI2CpWQ@%`hֳ4YmbA<ȯOkiV!Eg棰v(yR_ˌ'k?'a'̧>_ӥIҗ4jsCO)8K[?]ŹFNVJn^~HrEBVZ#& Umt߇W|?Ix;VwW|jY>nφ>^SAyoxobtgm4JtG1we*i:~k]2;)M1+%#Ko<IoOqIaDmn nyM<ѿd&H}W{ºe!oZLO,J.%;J6"{9͸fTs-+M$yWxK}`i._h~&_j^ikn-mE S.tK>{XnڞtZ:vZ]~~͟< eg/l4Hվcw|Uw;ZŤX:K^1_/gÝf6&ӼwI=O:nDmΕL̈`!}ov>&O C4ѵ-_\v<.Xel\K#'W >'IykXM,I%-lȢt2") x*ʳ*)–zc';bUf#gZU:PU\lTh,r3 0L6U)40X:nxYbkVtOJQ/~~wOx/Ǎ3TOtZ[!/`Jv6X 6$ ("2zwZd׺gmmW3=ƪX֡ǐ. `F{h?- u/i .$~̶W1-S}C?|Qy7-uƺ;_ܵ=_VXѧKhl&,[Yu4>vHǝ|>Kq- ~Uq]\KQBw+#r'a > 9j8 n.itSa1U)`"oN'OimYf3Ufx.33Oq|"xc)ETKK_ҿ<IG~y >y/]JOgl5;slaU%h|ɴU`? zZf5K;[- W3.pj᰸XDQ)$:vW_G ZX ~6:QhN H_ պiWF$1`P>ϧz/'n jLgYen<3qot:eӡR(hoK{X}didqF c: 0;&IFm?G8=XPü=Eyݟ xw [cչ?g,f#F3\Qt8o~ ]'<[ڽ귕u:-8ei=ChjyP|O&@eh$iѺ;;`qӽ?oMr7s.+n\}/w<0BJ4$c,-RJI_z?㮗m%04$vhډݡR]1 w3EJ3K|i^>ekAhK}N E6me"lkSˆ;jWVzvq{j ee]DqUP?X~h>feބP1]iRyx4IWbIs$k߇t,mt;#l׶-.C+-E q#]K"${YFmlԬDֈKio i2˺54!#2" 6|_3N jjJR7ˢZk#Uz%oVv>-FinnpVmmt.SvdāK_Z" k)'YwXiwq3\A=LM%CvXH |#NgyzA[O[CV)eDzUjb r<_MNxj]p+aj2Zm:4P(F]+[d~QfaB g: r̆.䱈J<ɴ[aQ 6e=>"oҧ[Rb1xɪp]Fz)˕хH)7iKEN9̡O"`B,=| zu^1^ t+GX¬ͭdkA_~ּUxCyk]\MѬQ,WSޥƫw=ߝ=Z7| _g ^MaI5h[\9HmP^& 3zU.aW )W$ӧK>'ޗsEJ;:ŵ]-,'g/plioxok~X_N>uE]f_ٿf"km>6G[G|,,WqKhnK{>nQVZ}AuĖIP2G,V2 ixCʈ&WCR~jLah|=&%ŕͽz~j/XAqCZ& |#غ1W0Νتp^6Ju;iuVpy W b .tkF &a1R*Pn%nZ>hy͡ɫ/VZzz<6qiZ^*y5SO-ŷ:?48=|zV:#{n4 ](x%drm ~Do'ߥz_GGӢjK}4I 2cwIS< '.(t^/m*%l0%QbJ&Ym崚(.~pNs1T;jkCB IsoeQ99<^g9%Nq!OF U|E4__' Yynǘl;4m{FIm3M*\1 $6̻v.xBK񾗣xN%SYԩ -&\etb{k'XIjH;|YǕs46'6)6Ӵ[cFIUFf^3,VMhHWj2sJp~Ns?O~Iπʕ NQzt6m&^߻G^M kes6)i#Vs)s]WEgtA3QKcynG.VX.qq ǖml"GIUEۙ>泳I-CVdA(@rdTiܘP??o.YJi=}^Y%h8Fevҝ<<,vOK]}"ɥ.2 nhYs0a制̑FĤ{IO-!p'}mkkge3KXyT>yȰl>idci&7RZpC#8maULdT1ټ.49%kMOߩ,obZJj4ۺ:7.n/%,Gn11j X#.],(}ozgs|Qux]_mI^H5bW&)jl7FO7ŚJէx{NwkwGCUZBYR(<:P:q&W[t;M6XL,[PKԮ$dfѐyPGr(4-;2I|g<+G+ 8ಳqhnC06vL6rv<]/"xx^}^ek 3K`3VkeL9%?!|WWhvi7/tswYDkv-m 1C 7=Ĺ2x8%8%aMԩT#̓nz3.kiJ .tUP/ѯRiU'9G$ۏ/Zlj>"_^-}D!-  AwdY'PYKJCQG0f@VkW+o; hًĤȖIU?W_5񭧄%FPl,bc[MnB$t@[dx㐶N?,wOa%Ë|I~6^]7L?2?*\KtEHg(treM|kQ ]$4n'Db>;Bּ/~``=χ<Lѽ$N5d#5iYnkp>3N1Sxv%*,,ԩrIO괨TH{]}N]`}sq.?*ԩQ2̺e>^ZW[ ZSin5P/&ȸAKx#E=sjҫl=э>O|8u{?W71ZS>&Է~E0ŹAOs Z-#xuh>v?2|hy_&~6!X#kx'T-g'B< /kZO+K|Hl,5^ {+/Y5Ht[4O jRxHb.#^{Dkt7Cs9;$[s.?xH4F[P$hP;q eehP] 3G$u=Տ~Eh4m+RaC %t"\}8.' "q/49zj0)u! ԛ*Rn.x<> yШgU848E9`"gUөv9NI>k]?^k{|g{%߅pVZݵ cCr5=n mn[떗[^%G;wUv({h:է< sZYEkȴ-$5ݪ۸kKyx6I2i#4 ^M M705g!#CdJԵ[Ct 6V /o5y$OicdeM.)cCd3}ߍ$)~S`qpw\㪵r0'7zZdn9Ķj˄t1D{RIk(쎱G=,O޴i>7f8Z}H1}qzBMqq2ZV5wAO>u}QM,eDPa`-TsR>FOo[Ӵ;_SW Jգ t4: 5rT0ynCTfXTg,w'3]LYߖQVN+d ~ߌ-5./ g\xVSE$%o ~׿0IKnhj_|gPTHSx./얲Y.j aa O N^Œ9Ԍ7𫧺W4 մ:v NѬ`4)oCnKHOWe;?_?j㧅.>sJMivc\jl bi,}Q,$Kq 3GO Ǩ\GkmM=zۥi~~[~>2ʷHymĿi4u照ZXJRO …0גSRW:6VOFoO$e 0j`N\+ѡ?eV3Q*Q坟&>~-~̞  ƾ "2SѴ3L{!$L+0n#$h7?.m7;f~jp@?OĚӣ4냲H%ƣMHW7-=J36ִ G8|Sskiʱt>-Q-YL7Bk_a>: ?M7(e_i_jI%|Ex"H&Dz. ynWOv3ζ*g.Iœ#}xgexIg8ׇjb*0\]Jyl^JTj5Σȓ~ ߳f4|SZLjt_5ݭCjP>E[p1[OtY%+,K 67WX!hJ"ጛxYv R!^6bМ~Dӻ-Pˌ/\6Z8WVʥH`gƽh٧[֧7M;.m7iKEkVkC %7&)#mw :]ΣƂ  ƞ^6+_xX4ߙ%شctd_@$j;:zHP7mey%c͸Ay@n"ھ˛DQ2N%,f[u7di!$ , #bhxFAShSp7mmEZF}Yl6=NJcbaZ5}z\ntڷ4qQNOu&\f!@$W8Emim6EV>\icDB2$W HQ~NZ(swz\FʵIQJW~Jn_{]tj:]ņL \\~̨`>k#!~jZ~$r[km,Ä+, :lAܰY|Uċ-%QlmĚ$a1k,Dҗq )*9gZ]>!֯nhHIgki"E% Yn9'yTRN%wUDV~ Y#ުcFEi>rQ4v񥹏ΓT􉣐V`gx^GYm$ޮ?q`gy vԼCJy6Y{ ɿa@d\|0'8J pԧ).W Kn+W~G(e~g\- y\c[2;MUr:=dYƇMg|>_XZ']jns%Bnr)Hv |7N񭞞a, 'Gxt40e1^>-ͧua 1K[mE"q%Z o M-Fl֟gZc"Ek2Q>^!x𦇥e"񕖙 +˛nNv[ GHcvVhdx[h<7âb4=㱙a7SaYփx\-JXd$!ו{dW ^; ο pr.Oӫ8ԧbqR qaXj\>)Zp~i|ݦ/?Ěji,m{; jVekd/wΠ\eo\ںmkL1u;L.uk>[ΆG+hmVndua;f3.|2tƎ/<>_S(VxZRYЄײ8)r~FSQpog*]*8(W`*}YJ"*Rt#Pp콙?d_xᯋ_ڗl5o"Ԭ-xM#%ۭۅ|M%Gk/muӭ'Xn.cU:ldX0ݛ ETCu })^uwgċCeiM=CU1j{}tJڌ.Z})l@];VCe/w|"4&8k<.ҋY.ܰ_<-7C.qO ׈UISoJ.5aMm>i >Z'ҵ-,ެ4 wEow%ô !¸>XF#% kG^)B?b(xxN1xzXJ2Sٵ;(>w<φJw*k'T\ejsU+rU:Ta8if.$nq8f Y{A3Hdž{ cWYwO074kKnְK>M.Zm2iA+&ӧ Tp?&.6]gV}k;xQM/LrLI..Oݼӈ""7Bh:6e r?maj\$@eo9PV:®8,,c(19y5(ЊeQrY].~ӎ+8ubeD0Gb/Z_ìS)iU7H$#(_fVfa*do( Z}AF A2];Hd97 6XnWoʼ'&}4Kۻi-I FbHJ;+,Ѳn(~9<ΰ.ŶGX7ɮ4s,el +pHyLwDZq)iYHDVF y`g_XuK6 ѰvOkdH݌+F SX(\>wY+kѫ?^ }W7cPI.h5hG^ҖjJs=ͷeEG\3lΥ,kgO8n;{{%z̢AaV7/$z6wk|&]Ԥܤ#/Y`hI$1`L 7I"XC] ǗSDjV ԣhfV0[kVaYTG%(X$2XHv^%~!+[M_ m2R.rnL:eiqb$4H2}[Yu{GvEVtFG&TJdU{@h 꺙>+ ;$Nֺ}QJ-ۖ?ɲw\C_0Jl**;Z56V7Xw*G1եN\ 9F-YÏ|Mx37b0<>cüAQBL4|vj1UkI-,\%^u-CIE9J }EmVѥ[i^H,R(tu0jP |[xGđ:x$Ԣwz|H * K<8&"Zgjh&YZD֬t]igjcM,gYige4Hzڇ~|6%/d%ᨪTTWzDq>'ye̳*9 x^];88Pvˮկ7zt7Hҵ!k=:HԘ bS M2E$;3i? . 5V/f DvqpH]H%܅p2OOSOnb5t|>}fÚ֗v˩nro&8"Gjw%zd]_dk>5{?2M]n{j5ֵ&y`>L cO,^Z+VJHjkx:Pi:ȭ,>'չ›ThuYХ^}_5ݣ4$>xbV;skPsAesk#yM^9Ǒ=4dŐxV1ҵŋSZ12]P-+څ k{HDE_>'O:/?QÏi>m/4O6f{ P'Rr vEm;+tN[YL6^]0!-(',݉F\=RWdxH(cB,ĪXPuP>IVsRkK &83k+ a&# ^LZS\ JxÞ\ሄNN _g4ͺ\jKaXϨG&fl%PѭJHi!m(8ɹ.R#^nQsw<!9΀jʱ_&$ 7kKgb3E(,糐<^7 gx"]Dl6:Žͪn[ãE$qhך).]bȦc,! RjKO)N:+ )+ߛعu88;pU8?._-)gS^({l%WIoy&o7i6/p|5+IuK{ )VrZk@Hϭ7Q]畛Ȕe(CP@хPm`6osƷ;RN۵/iT6z#AĈymܣC Y.bťC). THfUbIsSn\ھXݥd[#_\ A/^F-Q+gCi' I%+kk,d7I`M(L`M#׻x~9dh^Mtr4w1Lծ_I1O3]iFdu6~TQBD4k4I8xVq.'FIyYyuospprF|Ԝ&%j0j I-]E"'D-]$oj?= 4˵4q#H%Fk(Db2g pdC+EO h.Hln,ft Z#1ʍ$Ѣ4j!û x~{E,ќ$ #}q v3 ;7 ˪YiWOJߕ9T)i~^{%hk2,N0ጋB^ʰ5)U{kwƫ?.-uhY9du3HWD4`ʗK":/eeE!o)H!x[ $RFHe')6Gt=NM=bW*ic rn i32JaVIT*Oө*~aK'b*…:Jkᵕ~a?2ԪqOeX5*|ʵ<)b:%Z> )_Ab>uCLqloD\ЬϨ$>kV70i?|=̾=aO--ý[Un5y<}wy nI>mK= Vb'Hxdϟ|x[^ٿ| R}>'{MA+#isj%4˙\.dhR$Zu(7PQxէfj)C ^*VgBs5^ sMܷ羗xfknBWdeMW&m: eFie]c0|7uox%Zt!ҴAa4$仞辛uz2O ȹAթOY/F7R#eƤdtQwKDw uL;hE{ F*xq,>UT0FOLJ|co oz_hwRߍ_U.tjouAeE[cVZ]m-ԭۏԯ/g~$3_ V6ΰ\CyQ$R f M!RӼ+[^gEӴh~K#K0«uuBx. ir~piؚt72hO%g`_%o ¾Lrzvmn8ߣ)x!}W_ JWRT`VUM)JZr/qʲT2\:<N551-o~0J/ AUaKK_BWR75գMŽ ~KI&Aidkc̕􎇄H04F(^<*#%EC.xO Iᯆ 5bZVY ZCm~! @䳼'w 3n f)V]գb#>s kψ83H5Zn2R̪ԍ8I$ʴu>,&erN3$?aURg*jJ[?xbmg]Ng>U!ӠԊkU{i:+<_Śmٳ隮gr n0vpMZ'33ye}y3 x'aB,2)Ӵ#ѧ%̴S>(ܣ.e>l gĿhw<RRow} ܄[#|"Iɰ sgl!U&dj|AAip]G16 (#9]dȈK%w(7aэo]>z[Ru$ k}5},_M'PxoMMxdZ(g,gV%[g%cE!(UiXUFSU%9ǓJSjmG3sV35k*ԡOMTJj" KMw|s_|0X]1쮼4ȲDⵅ,$cydf13DymCW後.vuRGo:O 3x E^B5z0HgJ+ t\̷\sJM=.+ 9㰑8fWiWCSV7E{F3/_Ahttp://static.last.fm/avatar/92f440166792f3000172c24dca4e0715.jpgPQR'Obplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078\*+!-.WNS.base[NS.relative_(http://static.last.fm/matt/tiny_mail.gif1234X$classesZ$classname456UNSURLV%NSURLXNSObjectYimage/gif9:;=>?GOZNS.objectsWNS.keys@ABCDEFHIJKLMN VServer]Accept-Ranges]Last-ModifiedTDate^Content-LengthTEtag\Content-Type_lighttpd/1.4.10Ubytes_Thu, 02 Feb 2006 14:40:40 GMT_Wed, 31 May 2006 17:11:52 GMTS295_"293039052201567742"12^__`6_NSMutableDictionary\NSDictionary12bcc6_NSHTTPURLResponseInternal12effg6_NSHTTPURLResponse]NSURLResponse$)2DILbd+-/1\ajuy%*7IOoh%O'GIF89a &º»û񼾶ĽƿŽ!&, D@pH,6$(` G$ E(uHCa2L2`0#< JJA;_(http://static.last.fm/matt/tiny_mail.gifTUV4O1bplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?GOZNS.objectsWNS.keys@ABCDEFHIJKLMN VServer]Accept-Ranges]Last-ModifiedTDate^Content-LengthTEtag\Content-Type_lighttpd/1.4.10Ubytes_Wed, 19 Apr 2006 19:12:09 GMT_Wed, 31 May 2006 17:11:52 GMTT3391_"6100090841040477874"12^__`6_NSMutableDictionary\NSDictionary12bcc6_NSHTTPURLResponseInternal12effg6_NSHTTPURLResponse]NSURLResponse$)2DILbd+-/1uz+0?DQci3hAO ?JFIFHHC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222"9!1AQa"2qB#34CRT$!1"A#2Qa ?66jyTi&F۷8FiR`;:ISzvVJjG<6-z~6fr1[:Pŀ6p5F88aP {eo~3R䠋 c2r*-tc4inA;hخ.8=.Tg#ڬGTpGLT FEt]`Ba 暾Rgff~U$G65w%UofV"v %ޙ$޽sodTGTQԐ PRM~IZHblhu .}EAZ3`MIG(4I_oִ}V dF=NԭU~8;>?Hn 0&Ե~ !NpO0⣖i%)ߜ )4_^5!='@ޕ`;c9k*;ZܖHFo_;Х TNᮧagEŤ1']Qlǻ199Uae^)tƩv{Z*>Y55v0(9j3d~cJ= f;eUQk5 &i&Rerh 屎R07jj@xFjNc[Ԯ`.srzp;TpҒ$^W,ǹ߲O ūKntllOzӒT:粟 ͥx~nc),Ȥ`ۀ}@Ex}mYg)+cLTP1AQ@ L;RIjH744"b6`$M"*GnP+2=BޤlY|TcM M d''\1&Mxʦ㌼NiXNGpbŬ{cJ}m+ ZYZZXmv4=,h$8u(;2d跏O7qxDÅ*[{ex8`:j+YU VVsUzExN+G3*/sos,H&UNS7s{WcozNta?ޞH7z4Ta,)1[*VQ@I0ޖm"5$9[khM.⹀yV&N.5?ZWwN7ra۱8ڜ@X|'uk\Xġm5e˅eϦuwh-ѳo)ܷ28޺2n)YlK:VB mj{|F6zӻI"\v35 }b^UNJ袊lQ@o 721R>ⴢ.G/R jy_w8WKXHUnt[)ztP[mÃS>m[|Gl&"3J0oUIN1x110~eruTYݖ7lǷQg=[hVh,O'Lu{KFhR9U_7Tߴ_MqklN6 ރEl=*H ( ( (7fq3)1 ].ޢܖ%۹ږgiK1'ri7Sy™|hQEQEQGj(X@XmpRWC87u~Nv{Tfb IK:S ox0Ccղ[;{>%lq1]">|v>Nc9]wⴚ3+%i'RD:Q"y >AȣŲ/im&imlMEISJV[Q@t_Ahttp://static.last.fm/avatar/f564c626af6b7074f910e9934ddf6088.jpgPQR'YZ[4O2bplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?GOZNS.objectsWNS.keys@ABCDEFHIJKLMN VServer]Accept-Ranges]Last-ModifiedTDate^Content-LengthTEtag\Content-Type_lighttpd/1.4.10Ubytes_Sun, 21 May 2006 11:02:04 GMT_Wed, 31 May 2006 17:11:52 GMTT8874_"-9176099482936175648"12^__`6_NSMutableDictionary\NSDictionary12bcc6_NSHTTPURLResponseInternal12effg6_NSHTTPURLResponse]NSURLResponse$)2DILbd+-/1uz+0?DQci 4hBO"JFIFddC    !'"#%%%),($+!$%$ ?!1"AQ2aqB#b$3RSe?9e1 BǒVQ5>+mTt,-EV?&NDS!dԧ*qaoNSϨԎ>gQ5);pyIcͿLΐPȥ/{Ie*la$\?΃ 0H B&0@?~5ndGKz&_p91jJ2ˁyЗiVwaq/ +-9J;jEnrZԗ]_aҒU`!E /ӻF>->e.ĭM50JnJJN=fQ}ɣ@(PSE?P7}y>hV>J ܣr?[}h|BWe*@oր^n3k] ;Պ@C|F%LYڽreR* 6 L@$ʀO 9H5tHJ8p8hTPB65, (S@_Q aeP>mwLn2*𓸐pRF;}t֢DZ R鑡J9UJcQ"Aq+Ӝ ;KP+ɦ-; 7.29PʉPf;Q('Z ewr2A?|}ٴunҗ#}JXsY<}/Ͼč% &cRqOԊ7դ Źu?@;1 9'2Ol]J6 ]u(mCRd)JԤy+Q9̺tLD~-L7lʈMjFvy_g_]/zPD$0b׿|cFuZvUT>6mH_ 鍛,:8)d4wl\}\Ϩ$> ӓRLY/u)Ǿ\@A'h>(Pǧn}V\k)nR| Lw7On4"`a::68qgNNNQ+H O=tS?q5!:ڷ:!SrxBJ?$fl$eJΆA\Qnwm³[R+<p.Oo'M."\PSj{䑌htG&5EnQFrmE&4^銘XqcmHJ׵D,2vnt>j91!.oadN{2`jTzTbLv"]A__pD@}9-E-904O~j*MjuϦ葘jP(8r{ƏFYEˉ Q{{{-*{9) $8 H珛[bضXS q,%;2B0}~U"ʋJ.7B 1U/yFBˤwl)?Ch}лۢ9!ͧ0 r[)H# qf=Me !mR2x %њJqM-GnVmmp&GeAdy=vO-L.+ R7'RLg`zwVj TnIq M$egA򁁎u \$n]]P9 p]W4uVlZr;L U̔\mZ9RYuH46-.(c9cʞ R)]y(RP JA ׍TԐ;nٔ\qNh$%9v4"FD' H@H8 5?d)\),TpA4#=9ƫm+JHI 2 >MJW*UB Z)JFOԢӝ8Һ@6j癞^- -Gc5Ug[)/,U'iM('p#JsAcSL:m:Oʒ;'Jի^WVn]=.KH.)#WӪJÍ%CA_pwΉSi)pRӱԦB Up#;TsǦ۴HӮfPgIќKN$2)[214tӳbIVI\ 5RJG93Ov"#j|`O&kLzJ$DfݞRSW (ˑMAUJVLGk{9l65؀S;W%]4Ls YWnAt鴵S y)Fs>T;!)KR1Ƿ'*jEZ-h]…͘8CoЕFUs=Nlg۫Om)X[6Qǩ]ѤI\:숲\`uN8RH+9'JnҙCKnPq|n@Av.em!8PH cc[zpԧ:ʔ$}2O[لۉZ=,LnqTޖd)(X?$H>њCsWUV7<4Ay.,H H%ԮV,:lZuktq’ZY;H5U}^J@Gq~Z7FjN( )Ec JAV|=3@b] S@K[2aH·%+@d?a[eޱZ}/cBkO$r@$㾴̩ˉQ>iJ c9Ǿ5oզZCHy ڥa^p=}xJU;}^JTiqJ>݀ 7tbӼj;(N tl-`2}Y5fG,F[.凷ҶJ5 4txBRU >NZuhTR*#9@ -Q.؆5v2KBj#i=8i%r`Hn'kwUizTX?#⁕l}kVmJ'Dy\v!i.%#<?L>M2ku*mQ[!TC@z'=ի+ LR"+m#Mu*Zo|kWN>)?-K1* #s}j(ZơbSh\I DkxڌRȯ4X,JSm==T JHLҔ-cv?ViG5Zٲ!H QZQ c@#O.Uڝ)6P REӰιRoKs QQRrGq+I$$wƌ$RKB/͔ϡ5&ͭUYR AT Λ^ݮ\ԩhY4_\ڌ'cT5 ꬵ/> 0>@PQ 7 'v5$YRjc _G}y_YXrRqJF>kGkZR-WŒ]/9HHn1UU xyAv5^`zs+kPi"F 2NR*9vZˎ)oO69oEj(WJ076,U-⑅8/v}yӴZ}B;lۉƌ8HT2Fx^V]?ӌ^jBTgN| ;}v2t=Y~I +8d))ss]"uS?1eVX*8J0r8':vp{k>$ K%NDvV$4Mz.[T96˗K0lx vJr$@,[=75EQ-PZqخ;=@9ԑi~b>P,egn9r1;m鲓t*kP^t$e󭇨zЊ+BVZEui%xgr4N4@-93-L s-stH WoCX֭Xjq* :R% ;p`}uFhڵu>WO\x8 QR҃D[UjbER* hLҟp4IoSjIQD`RB<,cz×PM.+S$ySqu%xق[0_%}R`qInZtUNù*UHXedE eDw_:"|"vtDQSDu A dI]`'dy!J< O:AR^t֜Z*'T5/mNGpdc[E]}OVŹ^dR\~+2 K|BILuMY5+Uu3v ø>iK[B^pI3I):|ZB਑Ն|'A̷d%ւTR9BL.7,GtX8:+ekf)ELm+X| JI"tK?R5,#kw '9e^3bT,< OVp`xC).T cYF?R,JSy:CN)&E^*wdd9֕Xm%ƫ~cIɋFfT[-8q{ki:=>ҸJnCrЦc\(!J_*o<ej+EKTa5R$(Zv s; P&OImk G8$cIHm+0@E4-rPҖTFѴq*PZY r;hݏlSj 1Rl4!fB@ qI%GL[:XNMx&;+yѲ8SჅ unGK`Q1Ró)聀%;'?>t}AHOLSrTiԹe+R r1:{^ߢUj4@̦𑝡I'*qm NI#pZ 1= {R5J-QKcK.)E OsCd^պQ:Exl>K܀ф'wJTm@gTzNa^oq\ޙ#?}A{tʡ}_K#AuB+E ƔpRy9J<}cuږ~sG.>K*L2pI=އYZ[&;Pm$ }δ^tdjKedq >Ov%'i֓Rϫ,kWLn ETzp9szWhnC\ՠT!áͶq|) !>K( vNe5"bBV_$uubЬeĚ,vcӕ%4g- m>?QƏU:rT*Uji=)tK"]lP **Ljvdnڸ-MuH" 2O6z>uǿ(ijݥɦ%K^BHF夝{ƼhԧF#=ZɎW 2E{)$dZS:Fzk߅RfvP5v䌜sYո3?4BqXVʔ0]l_h4%1CE[?M–FFH+'V1|0T?}r5}FvuEl-HepA%Ҥ1O[mBDyŐm!7+pN#:h~fOƩ#>JIҭ`!+#8gu8罴Z$}:xgUҺo=\!ЄD }yot ȋaT wŒ#FzZFn",jJ<Z-F^SzoQ̗j/ӚݲB ܬG|zC߅~є|0m, ӛR*? Rr4d' ,-IRNdgJ%ɒ}ŕ41ZyvyaؚӋtjRB6eM2IDq3qy#at'Rn&TGLGdNRRF%Zdhv:@iim gqqiJ*|TjJ$8 In>]Luc_0)Ц'mR{v#Td~| y՚s HQy b4IuFql4VR;8-QiNTunSf3mAV>!ڔzh+P?G/8;(u**)dZE~ nPB}%`}{n2SuU"R:פ(FksV_U~{8^]-z rd{v*ǸVuu5ڥYJ&{*!iTۦi-Y }J x$9'QBSt?GOZNS.objectsWNS.keys@ABCDEFHIJKLMN VServer]Accept-Ranges]Last-ModifiedTDate^Content-LengthTEtag\Content-Type_lighttpd/1.4.10Ubytes_Tue, 15 Nov 2005 02:26:32 GMT_Wed, 31 May 2006 17:11:52 GMTT1828_"7318340287326778686"12^__`6_NSMutableDictionary\NSDictionary12bcc6_NSHTTPURLResponseInternal12effg6_NSHTTPURLResponse]NSURLResponse$)2DILbd+-/1\ajuy%*7IOoh'O$GIF89ap񘟕꺿ԟГ߰ý𞥜žסꚢծ딜ϸſֵ͙䧮ǩɬ¼К»򷽵埦󪱨ˢ盢Դ𛣙ʵܭǑ!,p H*\ȰÇ#JHŋ3Bd0aP=d!- Ȳj$9ӂф9G  -PD]1M 0L!@8KfYa& :QKDRJkxc 23 H$$Zk"@ZPh0yi"ج@2B)ƌ H AD/> tAoرe=t`j / Qf @ ЊpxIHB}Qd$Q*:<̈ڏ@hZgev" R1 =0H( 'Q%@@LƘ"աpdag@,0 4,4 @3t4B/"2~ `"~`Xj$XBLT"[=tF%gj8|w}0NiЀ"1@1Ub8VE ȨQX$ Q$rƹPs'A'B@$" `A@LR$d+ v, K!B7ACAi Q| g¦ ݝ0ˡ|) 縶&bhB QTqP P fH`% K`" pRNl{iԝ1u*|$@"8 PJ !"fM.0_+h+xY" ȒI!(0&,hp] 1["8J̴o 3Q@ 0Slv 'aB߸)p)-b#k1#!1dSqzA3E@~0! Ġ]A1 c-PXC\(|q ePgs<Ŕ%:AE1 4P_? @0xG8wƓY2C93_e1If@2o,A` 'h£ "jp!(A $h v 98̡w@a@;_(http://static.last.fm/media/powered4.gifghijF_WebResourceTextEncodingNameUUTF-8OAnatomie Bousculaire - drazoum's Journal - Last.fm

    drazoum

    Anatomie Bousculaire

    Friday, 3 February at 18:33


    Petit groupe de punk-rock feminin de la scéne parisienne, Anatomie Bousculaire est un phénomène. Une energie à vous couper le soufle, des textes viollement poetique, un charisme et une generosité rare. Aux influences aussi vaste que Bowie, Noir dez, PJ harvey, Ferré... Melangez tout ca et vous avez Anatomie, pour moi successeur de Hole et une de leur icone: Courtney Love.
    Pour tous les amateurs de punk energique et poetique.


    http://www.anatomiebousculaire.com/

    Log in to comment on this journal entry.
    User
    drazoum avatar

    Featured stations


    Registered on Jan 6, 2006
    Last seen: 3 days ago

    1 years old
    France

    Tracks played: 3482
    Posts: 3  (view history)

    About me:
    I don't know just where I'm going
    But I'm gonna try for the kingdom, if I can
    'Cause it makes me feel like I'm a man
    When I put a spike into my vein
    And I'll tell ya, things aren't quite the same
    When I'm rushing on my run
    And I feel just like Jesus' son
    And I guess that I just don't know
    And I guess that I just don't know
    I have made the big decision
    I'm gonna try to nullify my life
    'Cause when the blood begins to flow
    When it shoots up the dropper's neck
    When I'm closing in on death
    And you can't help me now, you guys
    And all you sweet girls with all your sweet talk
    You can all go take a walk
    And I guess that I just don't know
    And I guess that I just don't know

    Feel like watching a video?
    Exclusive Nada Surf playing backstage at SxSW

    What you get when you sign up:

    • Personal music profile
    • Your own music charts
    • Friends and neighbours
    • Audioscrobbler plugin
    • Discussion groups and forums
    • Thousands of radio tracks
    • Your own music journal
    • Album art and artist stats
    • A pony

    Sign up now

    Take the tour

    Shoutbox Send PM


    Penny-Lane said: Je vous renvoie le compliment, voisin ! 31 days ago Send PM
    Mishkaaa said: On frappe à la porte : - Bonjour monsieur, voulez-vous donner quelque chose pour les maisons de retraite ? - (voix à l'intérieur) Mammie, mets ton manteau je prépare ta valise. 31 days ago Send PM
    Chachatte said: TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING TUNING 39 days ago Send PM
    Mishkaaa said: TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK TEK 40 days ago Send PM
    Mishkaaa said: Et c'est le temps qui court, court Qui nous rend sérieux La vie nous a rendu plus orgueilleux Parce que le temps qui court, court Change les plaisirs Et que le manque d'amour nous fait vieillir ALLIAGE 44 days ago Send PM

    Powered by Audioscrobbler © Copyright 2002–2006 Last.fm Ltd. Gotta Lotta Audioscrobbler.

    _8http://www.last.fm/user/drazoum/journal/2006/02/3/70200/ 1OXn&T^g &/  7 @ 8JS?H   7`jsn!'''+6u666;@;;;;@eCDCDLII/IIMPPPPUUUUYbkȄɯ[۟ۨ۱3[k