From: <neb...@us...> - 2009-03-03 23:22:33
|
Revision: 1643 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1643&view=rev Author: nebelschwade Date: 2009-03-03 23:22:22 +0000 (Tue, 03 Mar 2009) Log Message: ----------- Initial Commit for Diploma "Musikempfehlungen im Semantic Web", code is ugly, no OOP at all by now. - Basic Web Application Layout, JS-enhanced - AJAX-Communication Test Functions - RDF-Parser Tests Note: Yahoo Media Player ist not working on 'localhost' in most cases, use 127.0.0.1 instead Added Paths: ----------- trunk/src/moosique.net/ trunk/src/moosique.net/css/ trunk/src/moosique.net/css/default.css trunk/src/moosique.net/css/style.css trunk/src/moosique.net/img/ trunk/src/moosique.net/img/bg_body.png trunk/src/moosique.net/img/del.png trunk/src/moosique.net/img/loading.gif trunk/src/moosique.net/img/next.png trunk/src/moosique.net/img/pause.png trunk/src/moosique.net/img/play.png trunk/src/moosique.net/img/prev.png trunk/src/moosique.net/img/stop.png trunk/src/moosique.net/index.php trunk/src/moosique.net/js/ trunk/src/moosique.net/js/ajax.js trunk/src/moosique.net/js/ie6fixes.js trunk/src/moosique.net/js/mootools-core.js trunk/src/moosique.net/js/mootools-more.js trunk/src/moosique.net/js/player.js trunk/src/moosique.net/js/slimbox.js trunk/src/moosique.net/mp3/ trunk/src/moosique.net/mp3/moosique.mp3 trunk/src/moosique.net/php/ trunk/src/moosique.net/php/ajaxer.php trunk/src/moosique.net/php/arc/ trunk/src/moosique.net/php/arc/ARC2.php trunk/src/moosique.net/php/arc/ARC2_Class.php trunk/src/moosique.net/php/arc/ARC2_Reader.php trunk/src/moosique.net/php/arc/ARC2_getFormat.php trunk/src/moosique.net/php/arc/ARC2_getPreferredFormat.php trunk/src/moosique.net/php/arc/extractors/ trunk/src/moosique.net/php/arc/extractors/ARC2_DcExtractor.php trunk/src/moosique.net/php/arc/extractors/ARC2_ErdfExtractor.php trunk/src/moosique.net/php/arc/extractors/ARC2_MicroformatsExtractor.php trunk/src/moosique.net/php/arc/extractors/ARC2_OpenidExtractor.php trunk/src/moosique.net/php/arc/extractors/ARC2_PoshRdfExtractor.php trunk/src/moosique.net/php/arc/extractors/ARC2_RDFExtractor.php trunk/src/moosique.net/php/arc/extractors/ARC2_RdfaExtractor.php trunk/src/moosique.net/php/arc/extractors/ARC2_TwitterProfilePicExtractor.php trunk/src/moosique.net/php/arc/parsers/ trunk/src/moosique.net/php/arc/parsers/ARC2_AtomParser.php trunk/src/moosique.net/php/arc/parsers/ARC2_CBJSONParser.php trunk/src/moosique.net/php/arc/parsers/ARC2_JSONParser.php trunk/src/moosique.net/php/arc/parsers/ARC2_LegacyXMLParser.php trunk/src/moosique.net/php/arc/parsers/ARC2_RDFParser.php trunk/src/moosique.net/php/arc/parsers/ARC2_RDFXMLParser.php trunk/src/moosique.net/php/arc/parsers/ARC2_RSSParser.php trunk/src/moosique.net/php/arc/parsers/ARC2_SGAJSONParser.php trunk/src/moosique.net/php/arc/parsers/ARC2_SPARQLParser.php trunk/src/moosique.net/php/arc/parsers/ARC2_SPARQLPlusParser.php trunk/src/moosique.net/php/arc/parsers/ARC2_SPARQLXMLResultParser.php trunk/src/moosique.net/php/arc/parsers/ARC2_SPOGParser.php trunk/src/moosique.net/php/arc/parsers/ARC2_SemHTMLParser.php trunk/src/moosique.net/php/arc/parsers/ARC2_TurtleParser.php trunk/src/moosique.net/php/arc/serializers/ trunk/src/moosique.net/php/arc/serializers/ARC2_LegacyHTMLSerializer.php trunk/src/moosique.net/php/arc/serializers/ARC2_LegacyJSONSerializer.php trunk/src/moosique.net/php/arc/serializers/ARC2_LegacyXMLSerializer.php trunk/src/moosique.net/php/arc/serializers/ARC2_NTriplesSerializer.php trunk/src/moosique.net/php/arc/serializers/ARC2_POSHRDFSerializer.php trunk/src/moosique.net/php/arc/serializers/ARC2_RDFJSONSerializer.php trunk/src/moosique.net/php/arc/serializers/ARC2_RDFSerializer.php trunk/src/moosique.net/php/arc/serializers/ARC2_RDFXMLSerializer.php trunk/src/moosique.net/php/arc/serializers/ARC2_TurtleSerializer.php trunk/src/moosique.net/php/arc/sparqlscript/ trunk/src/moosique.net/php/arc/sparqlscript/ARC2_SPARQLScriptParser.php trunk/src/moosique.net/php/arc/sparqlscript/ARC2_SPARQLScriptProcessor.php trunk/src/moosique.net/php/arc/store/ trunk/src/moosique.net/php/arc/store/ARC2_RemoteStore.php trunk/src/moosique.net/php/arc/store/ARC2_Store.php trunk/src/moosique.net/php/arc/store/ARC2_StoreAskQueryHandler.php trunk/src/moosique.net/php/arc/store/ARC2_StoreAtomLoader.php trunk/src/moosique.net/php/arc/store/ARC2_StoreCBJSONLoader.php trunk/src/moosique.net/php/arc/store/ARC2_StoreConstructQueryHandler.php trunk/src/moosique.net/php/arc/store/ARC2_StoreDeleteQueryHandler.php trunk/src/moosique.net/php/arc/store/ARC2_StoreDescribeQueryHandler.php trunk/src/moosique.net/php/arc/store/ARC2_StoreDumpQueryHandler.php trunk/src/moosique.net/php/arc/store/ARC2_StoreDumper.php trunk/src/moosique.net/php/arc/store/ARC2_StoreEndpoint.php trunk/src/moosique.net/php/arc/store/ARC2_StoreHelper.php trunk/src/moosique.net/php/arc/store/ARC2_StoreInferencer.php trunk/src/moosique.net/php/arc/store/ARC2_StoreInsertQueryHandler.php trunk/src/moosique.net/php/arc/store/ARC2_StoreLoadQueryHandler.php trunk/src/moosique.net/php/arc/store/ARC2_StoreQueryHandler.php trunk/src/moosique.net/php/arc/store/ARC2_StoreRDFXMLLoader.php trunk/src/moosique.net/php/arc/store/ARC2_StoreRSSLoader.php trunk/src/moosique.net/php/arc/store/ARC2_StoreSGAJSONLoader.php trunk/src/moosique.net/php/arc/store/ARC2_StoreSPOGLoader.php trunk/src/moosique.net/php/arc/store/ARC2_StoreSelectQueryHandler.php trunk/src/moosique.net/php/arc/store/ARC2_StoreSemHTMLLoader.php trunk/src/moosique.net/php/arc/store/ARC2_StoreTableManager.php trunk/src/moosique.net/php/arc/store/ARC2_StoreTurtleLoader.php trunk/src/moosique.net/php/xml2json/ trunk/src/moosique.net/php/xml2json/json.php trunk/src/moosique.net/php/xml2json/xml2json.php Added: trunk/src/moosique.net/css/default.css =================================================================== --- trunk/src/moosique.net/css/default.css (rev 0) +++ trunk/src/moosique.net/css/default.css 2009-03-03 23:22:22 UTC (rev 1643) @@ -0,0 +1,33 @@ +@charset 'utf-8'; +@media all { + +/* based loosely on CSS-Reset Style from Eric Meyer and Stefan Nietzsche */ +html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td + { margin: 0; padding: 0; border: 0; outline: 0; vertical-align: baseline; } +:focus { outline: 0; } +html { height: 100%; } +body { height: 101%; line-height: 1; background: #fff; } +ol, ul { list-style: none; } +table { border-collapse: collapse; border-spacing: 0; } +caption, th, td { text-align: left; font-weight: normal; } +blockquote:before, blockquote:after, q:before, q:after { content: ""; } +blockquote, q { quotes: "" ""; } +label, input[type=button], input[type=submit], button { cursor: pointer; } +q:lang(de) { quotes: '„' '“' '‚' '‘'; } +q:lang(en) { quotes: '“' '”' "‘" "’"; } +abbr[title] { border-bottom: 1px dotted #888 !important; cursor: help; } +a abbr { cursor: pointer !important; } +.clearfix:after { clear: both; content: "."; display: block; height: 0; visibility: hidden; } +.clearfix { display: inline-block; } +.hidden { position: absolute; left: -9999em; top: -9999em; } + +/* =================================================================== */ +fieldset { border: 1px solid #333; padding: 9px; } +fieldset legend { padding: 0 9px; } +h1, h2, h3, h4, h5, h6 { clear: both; font-weight: normal;} + + +} /* End @media all */ \ No newline at end of file Added: trunk/src/moosique.net/css/style.css =================================================================== --- trunk/src/moosique.net/css/style.css (rev 0) +++ trunk/src/moosique.net/css/style.css 2009-03-03 23:22:22 UTC (rev 1643) @@ -0,0 +1,380 @@ +@charset 'utf-8'; +@import url(default.css); + +/* moosique.net + * + * Overall width: 955px -- golden ratio: 590px & 365px + * + * Semiblack: #131313 + * Dark Grey: #383838 + * Light Grey: #545454 + * White: #fff + * Yellowish: #ffbc00 + * Border: #272727 + * + * + */ + +@media screen { + +/* Default Element Styling --- Start Editing below this line */ +/* =================================================================== */ +* { + font-family: Verdana, Arial, "Lucida Grande", Helvetica, sans-serif; + font-size: 14px; + line-height: 18px; + color: #fff; +} + +body { + background: url(../img/bg_body.png) top left repeat-x #383838; +} + +a { + text-decoration: none; +} + +a:hover { + text-decoration: underline; + color: #ffbc00; +} + +/* Abstand Zeilenhoehe nach unten bei manchen Elementen */ +p, h1, h2, h3, h4, h5, h6, table, ul, ol, blockquote, pre, form { + margin-bottom: 18px; +} + +/* Default Container Positioning */ +/* =================================================================== */ + +#container, #header, #mainContainer, #content { + position: relative; +} + +#container { + width: 955px; + margin: 0 auto; +} + +#header { + height: 132px; +} + +#content { + /* width: 590px; */ + top: 4px; + width: 557px; + padding: 30px 30px 30px 0; + border-right: 3px solid #272727; + min-height: 300px; + height: auto !important; + height: 300px; +} + +#sidebar { + /* width: 365px; */ + width: 335px; + position: absolute; + right: 0; + top: 4px; + padding: 30px 0 30px 30px; + +} + +#footer { + padding: 20px; + text-align: center; +} + + +/* Header Area */ +/* =================================================================== */ +#header h1 a { + font-size: 36px; + line-height: 120px; + font-family: Georgia, "Times New Roman", Times, serif; + text-decoration: none; +} + +#now { + position: absolute; + top: 30px; + left: 280px; + width: 410px; + height: 37px; + padding: 10px 20px; + background: #545454; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; +} + +#now h2, #now h3, now p { + margin: 0; +} + +#now h2, #now p { + font-size: 11px; + line-height: 11px; +} + +#now h3 { + font-size: 18px; + line-height: 24px; +} + +#now p { + position: absolute; + top: 10px; + right: 10px; + text-align: right; +} + +#status { + position: absolute; + top: 93px; + left: 300px; + width: 410px; + font-size: 11px; +} + +#playerControls { + position: absolute; + width: 116px; + height: 37px; + top: 30px; + right: 0; + padding: 10px 20px; + background: #545454; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; +} + +#prev, #next, #stop, #playPause { + display: block; + width: 20px; + height: 37px; + text-decoration: none; + text-indent: -1000000px; + float: left; + margin-right: 10px; +} + +#next { + margin-right: 0; +} + +/* clicky feel */ +#prev:active, #next:active, #stop:active, #playPause:active { + position: relative; + top: 2px; +} + +#prev { + +} + +#playPause { + width: 26px; +} + +/* TODO Sprites */ +#prev { + background: url(../img/prev.png) center center no-repeat; +} +#next { + background: url(../img/next.png) center center no-repeat; +} +/* Will be changed by JavaScript onclick */ +#playPause { + background: url(../img/play.png) center center no-repeat; +} +#stop { + background: url(../img/stop.png) center center no-repeat; +} + +#toggles { + position: absolute; + width: 156px; + height: 18px; + top: 93px; + right: 0; + text-align: center; +} + +#toggleMute, #togglePlaylist { + font-size: 11px; + text-decoration: none; +} + +#toggleMute { + padding-right: 10px; +} + + + +/* Playlist Area */ +/* =================================================================== */ + +#playlistContainer { + position: absolute; + width: 368px; + /* top: 132px; */ + top: 450px; + right: 0; + background: #000; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + z-index: 100; +} + +#playlistHeader { + position: relative; + -moz-border-radius-topleft: 10px; + -moz-border-radius-topright: 10px; + -webkit-border-top-left-radius: 10px; + -webkit-border-top-right-radius: 10px; + background: #111; + padding: 5px 10px; + cursor: move; +} + +#playlistFooter { + position: absolute; + width: 100%; + bottom: 0; + -moz-border-radius-bottomleft: 10px; + -moz-border-radius-bottomright: 10px; + -webkit-border-bottom-left-radius: 10px; + -webkit-border-bottom-right-radius: 10px; + background: #111; + padding: 5px 0; + cursor: se-resize; +} + +#closePlaylist { + position: absolute; + width: 20px; + height: 20px; + top: 5px; + right: 10px; + text-align: right; + font-weight: bold; +} + +#playlist { + padding: 20px; + margin: 0 0 20px 0; +} + +#playlist li { + position: relative; /* Delete Buttons */ + list-style: decimal; + list-style-position: inside; + cursor: move; + padding: 3px; +} + +#playlist li a.ymp-btn-page-pause { + font-weight: bold; +} + +/* Delete buttons */ +#playlist li a.del { + position: absolute; + display: block; + top: 5px; + right: 10px; + width: 14px; + height: 14px; + line-height: 14px; + color: #131313; + background: #fff; + font-weight: bold; + text-align: center; + margin-right: -19px; + z-index: 1000; +} + +/* Samples */ +#samples li { + cursor: move; + padding: 3px; +} + + +/* Content Area */ +/* =================================================================== */ +#searchContainer * { + color: #131313; +} + + +#mainContainer h2 { + font-size: 20px; + line-height: 28px; + font-weight: bold; +} + +/* for debugging */ +#mainContainer pre { + font-size: 12px; + font-family: "Courier New", Courier, monospace; +} + +/* Recommendations and Samples */ +#content ol { + list-style: decimal; + margin-left: 24px; +} + +#content ol li a { + cursor: move; + text-decoration: none; +} + +#content ol li a:hover { + text-decoration: none; + color: #fff; +} + + +/* Draggable li-Items */ +#playlist li.moving, #samples li.moving, #recommendations li.moving { + background: #666; + border: 3px solid #ffbc00; + color: #000; + font-weight: bold; +} + + +/* Sidebar Area */ +/* =================================================================== */ + + + +/* Footer Area */ +/* =================================================================== */ +#footer a { + font-size: 11px; +} + + + + +/* =================================================================== */ +/* ======================== IE 7 Styles ============================== */ +/* =================================================================== */ +.ie7 .class { + +} + + +/* =================================================================== */ +/* ================= IE 6 (and below) Styles ======================== */ +/* =================================================================== */ +.ie6 .class { + +} + + +} /* end @media screen \ No newline at end of file Added: trunk/src/moosique.net/img/bg_body.png =================================================================== (Binary files differ) Property changes on: trunk/src/moosique.net/img/bg_body.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/src/moosique.net/img/del.png =================================================================== (Binary files differ) Property changes on: trunk/src/moosique.net/img/del.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/src/moosique.net/img/loading.gif =================================================================== (Binary files differ) Property changes on: trunk/src/moosique.net/img/loading.gif ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + application/octet-stream Added: trunk/src/moosique.net/img/next.png =================================================================== (Binary files differ) Property changes on: trunk/src/moosique.net/img/next.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/src/moosique.net/img/pause.png =================================================================== (Binary files differ) Property changes on: trunk/src/moosique.net/img/pause.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/src/moosique.net/img/play.png =================================================================== (Binary files differ) Property changes on: trunk/src/moosique.net/img/play.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/src/moosique.net/img/prev.png =================================================================== (Binary files differ) Property changes on: trunk/src/moosique.net/img/prev.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/src/moosique.net/img/stop.png =================================================================== (Binary files differ) Property changes on: trunk/src/moosique.net/img/stop.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/src/moosique.net/index.php =================================================================== --- trunk/src/moosique.net/index.php (rev 0) +++ trunk/src/moosique.net/index.php 2009-03-03 23:22:22 UTC (rev 1643) @@ -0,0 +1,127 @@ +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<head> + <title>moosique.net</title> + <link href="css/style.css" rel="stylesheet" type="text/css" /> + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> +</head> + +<!--[if IE 7]><body class="ie7"><![endif]--> +<!--[if lte IE 6]><body class="ie6"><![endif]--> +<!--[if !IE]><!--><body><!-- <![endif]--> + + <div id="container"> + + <div id="header"> + <h1><a href="index.php">moosique.net</a></h1> + <div id="now"> + <h2>Player stopped</h2> + <h3>...</h3> + <p>0:00 / 0:00</p> + </div> + + <div id="status"> + </div> + + <div id="playerControls"> + <a href="#" id="prev" title="Play previous Track in Playlist">Previous Tack</a> + <a href="#" id="playPause" title="Play/Pause">Play / Pause</a> + <a href="#" id="stop" title="Stop playing">Stop</a> + <a href="#" id="next" title="Play next Track in Playlist">Next Track</a> + </div> + + <div id="toggles"> + <a href="#" id="toggleMute" title="Sound on/off">Mute</a> + <a href="#" id="togglePlaylist" title="Show/Hide Playlist">Playlist</a> + </div> + </div> + + + <div id="playlistContainer"> + <div id="playlistHeader"> + Playlist + <a href="#" id="closePlaylist" title="Close Playlist Window">X</a> + </div> + <ol id="playlist"> + <li><a href="mp3/moosique.mp3" class="htrack">Welcome to moosique</a></li> + </ol> + <div id="playlistFooter"> </div> + </div> + + <div id="mainContainer"> + <div id="content"> + <div id="searchContainer"> + <form id="searchForm" method="post" action="php/ajaxer.php"> + <div> + <select name="typeOfSearch" id="typeOfSearch"> + <option value="artist">Artist</option> + <option value="song">Songtitle</option> + <option value="tag">Tag</option> + <option value="lastfm">Last.fm-User</option> + </select> + <input id="search" name="search" type="text" /> + <input id="searchSubmit" name="searchSubmit" value="Search" title="Search" type="submit" /> + </div> + </form> + </div> + + <div id="info"> + <h2>Welcome to moosique.net!</h2> + <p> + Want to listen to some good free music? Just enter an artist or song + name, search for tags or enter your last.fm username and let the moogic + happen... + </p> + <p> + Or fill your Playlist with these Samples...<br /> + (Drag them to the Playlist) + </p> + <ol id="samples"> + <li><a href="http://stream6-3.jamendo.com/8654/mp31/01%20-%20Low%20Earth%20Orbit%20-%20My%20Mistakes.mp3">Low Earth Orbit - My Mistakes</a></li> + <li><a href="http://stream6-3.jamendo.com/8654/mp31/02%20-%20Low%20Earth%20Orbit%20-%20Like%20Mud.mp3">Low Earth Orbit - Like Mud</a></li> + <li><a href="http://stream6-3.jamendo.com/8654/mp31/03%20-%20Low%20Earth%20Orbit%20-%20Defend.mp3">Low Earth Orbit - Defend</a></li> + <li><a href="http://stream6-3.jamendo.com/8654/mp31/04%20-%20Low%20Earth%20Orbit%20-%20What%20Can%20I%20Say.mp3">Low Earth Orbit - What Can I Say</a></li> + </ol> + </div> + + </div> + + + <div id="sidebar"> + <div id="moreInfo"> + <h2>About the Artist</h2> + <img src="http://imgjam.com/albums/8654/covers/1.200.jpg" alt="Cover" /> + <p> + Iusto odio dignissim qui blandit praesent. Nisl ut aliquip ex ea commodo, consequat + duis autem vel eum. Nam liber tempor cum soluta nobis eleifend option congue nihil + imperdiet doming id. In hendrerit eu feugiat nulla luptatum zzril delenit augue duis + dolore te feugait. Quod ii legunt saepius claritas est etiam processus dynamicus + qui nobis videntur parum. + </p> + </div> + + </div> + + <div id="footer"> + <a href="http://mediaplayer.yahoo.com/">Yahoo! Media Player</a> | + <a href="http://aksw.org/Projects/DLLearner">Powered by DL-Learner</a> + </div> + + + </div> + + </div> + + <!-- JS at the bottom, faster loading pages --> + <script type="text/javascript" src="js/mootools-core.js"></script> + <script type="text/javascript" src="js/mootools-more.js"></script> + <script type="text/javascript" src="http://mediaplayer.yahoo.com/js"></script> + + <script type="text/javascript" src="js/player.js"></script> + <script type="text/javascript" src="js/ajax.js"></script> + <!--[if lte IE 6]><script type="text/javascript" src="js/ie6fixes.js"></script><![endif]--> +</body> +</html> \ No newline at end of file Added: trunk/src/moosique.net/js/ajax.js =================================================================== --- trunk/src/moosique.net/js/ajax.js (rev 0) +++ trunk/src/moosique.net/js/ajax.js 2009-03-03 23:22:22 UTC (rev 1643) @@ -0,0 +1,55 @@ +window.addEvent('domready', function() { + +var responseObject = ''; + +// handle search requests +$('searchForm').addEvent('submit', function(e) { + + var info = $('info'); + var submit = $('searchSubmit'); + + e.stop(); // prevent form submitting the non-ajax way + this.set('send', { + + onRequest: function(response) { + submit.set('disabled', 'disabled'); // disable submit button until request complete + info.set('html', '<h2>Processing your search request...</h2>'); + }, + + onFailure: function(response) { + info.set('html', '<h2>Unable to process your search. Try again.</h2>'); + }, + + onSuccess: function(response) { + submit.erase('disabled'); // reenable submitbutton + responseObject = JSON.decode(response); + // info.set('text', response); + info.set('html', '<h2>Done.</h2>'); + // Firebug needed + console.log(responseObject); + + + + /* + var newPlaylistItem = new Element('a', { + 'href': responseObject.playlist.trackList.track.location, + 'html': responseObject.playlist.trackList.track.creator + ' - ' + responseObject.playlist.trackList.track.title + }); + + newPlaylistItem.inject(info); + */ + } + + + + + }); + + this.send(); + + +}); + + + +}); \ No newline at end of file Added: trunk/src/moosique.net/js/ie6fixes.js =================================================================== --- trunk/src/moosique.net/js/ie6fixes.js (rev 0) +++ trunk/src/moosique.net/js/ie6fixes.js 2009-03-03 23:22:22 UTC (rev 1643) @@ -0,0 +1,48 @@ +window.addEvent('domready', function() { + if (Browser.Engine.trident4) { + + // PNG-Support for IE6 for all img-Tags + $$('img').each(function(i) { + // additional styles + iStyle = "display: inline-block; "; + if (i.getParent().get('href') !== "") { + iStyle += "cursor: pointer; " + } + // if the img-src is a .png + var iName = i.get('src').toLowerCase(); + if (iName.substring(iName.length - 3, iName.length) == "png") { + var strNewHTML = '<span id="' + i.get('id') + + '" class="'+ i.get('class') + + '" style="' + iStyle + + 'width: ' + i.getSize().x + + 'px; height: ' + i.getSize().y + + 'px; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader' + + "(src=\'" + i.getProperty('src') + "\', sizingMethod='scale');\"></span>"; + i.outerHTML = strNewHTML; + } + }); + + // PNG-Background-Image-Support for chosen tags (edit for performance) + $$('div', 'a', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'li', 'form').each(function(el) { + var bgImg = el.getStyle('background-image'); + if (bgImg.contains('.png')) { + var expression = /url\("(.*\.png)"\)/; // IE-only, other browsers dont "" + var result = expression.exec(bgImg); + var imgUrl = result[1]; + + var method = 'crop'; + // if repeat-x or y scale the image, does not work for patterns + if ( el.getStyle('background-repeat') == 'repeat-x' || + el.getStyle('background-repeat') == 'repeat-y') { + method = 'scale'; + } + if (imgUrl.length > 4) { + el.setStyles({ + 'background-image': 'none', + 'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + imgUrl + "', sizingMethod='" + method + "');" + }); + } + } + }); + } +}); \ No newline at end of file Added: trunk/src/moosique.net/js/mootools-core.js =================================================================== --- trunk/src/moosique.net/js/mootools-core.js (rev 0) +++ trunk/src/moosique.net/js/mootools-core.js 2009-03-03 23:22:22 UTC (rev 1643) @@ -0,0 +1,129 @@ +//MooTools, <http://mootools.net>, My Object Oriented (JavaScript) Tools. Copyright (c) 2006-2008 Valerio Proietti, <http://mad4milk.net>, MIT Style License. + +var MooTools={'version':'1.2.1','build':'0d4845aab3d9a4fdee2f0d4a6dd59210e4b697cf'};var Native=function(options){options=options||{};var name=options.name;var legacy=options.legacy;var protect=options.protect;var methods=options.implement;var generics=options.generics;var initialize=options.initialize;var afterImplement=options.afterImplement||function(){};var object=initialize||legacy;generics=generics!==false;object.constructor=Native;object.$family={name:'native'};if(legacy&&initialize)object.prototype=legacy.prototype;object.prototype.constructor=object;if(name){var family=name.toLowerCase();object.prototype.$family={name:family};Native.typize(object,family);} +var add=function(obj,name,method,force){if(!protect||force||!obj.prototype[name])obj.prototype[name]=method;if(generics)Native.genericize(obj,name,protect);afterImplement.call(obj,name,method);return obj;};object.alias=function(a1,a2,a3){if(typeof a1=='string'){if((a1=this.prototype[a1]))return add(this,a2,a1,a3);} +for(var a in a1)this.alias(a,a1[a],a2);return this;};object.implement=function(a1,a2,a3){if(typeof a1=='string')return add(this,a1,a2,a3);for(var p in a1)add(this,p,a1[p],a2);return this;};if(methods)object.implement(methods);return object;};Native.genericize=function(object,property,check){if((!check||!object[property])&&typeof object.prototype[property]=='function')object[property]=function(){var args=Array.prototype.slice.call(arguments);return object.prototype[property].apply(args.shift(),args);};};Native.implement=function(objects,properties){for(var i=0,l=objects.length;i<l;i++)objects[i].implement(properties);};Native.typize=function(object,family){if(!object.type)object.type=function(item){return($type(item)===family);};};(function(){var natives={'Array':Array,'Date':Date,'Function':Function,'Number':Number,'RegExp':RegExp,'String':String};for(var n in natives)new Native({name:n,initialize:natives[n],protect:true});var types={'boolean':Boolean,'native':Native,'object':Object};for(var t in types)Native.typize(types[t],t);var generics={'Array':["concat","indexOf","join","lastIndexOf","pop","push","reverse","shift","slice","sort","splice","toString","unshift","valueOf"],'String':["charAt","charCodeAt","concat","indexOf","lastIndexOf","match","replace","search","slice","split","substr","substring","toLowerCase","toUpperCase","valueOf"]};for(var g in generics){for(var i=generics[g].length;i--;)Native.genericize(window[g],generics[g][i],true);};})();var Hash=new Native({name:'Hash',initialize:function(object){if($type(object)=='hash')object=$unlink(object.getClean());for(var key in object)this[key]=object[key];return this;}});Hash.implement({forEach:function(fn,bind){for(var key in this){if(this.hasOwnProperty(key))fn.call(bind,this[key],key,this);}},getClean:function(){var clean={};for(var key in this){if(this.hasOwnProperty(key))clean[key]=this[key];} +return clean;},getLength:function(){var length=0;for(var key in this){if(this.hasOwnProperty(key))length++;} +return length;}});Hash.alias('forEach','each');Array.implement({forEach:function(fn,bind){for(var i=0,l=this.length;i<l;i++)fn.call(bind,this[i],i,this);}});Array.alias('forEach','each');function $A(iterable){if(iterable.item){var array=[];for(var i=0,l=iterable.length;i<l;i++)array[i]=iterable[i];return array;} +return Array.prototype.slice.call(iterable);};function $arguments(i){return function(){return arguments[i];};};function $chk(obj){return!!(obj||obj===0);};function $clear(timer){clearTimeout(timer);clearInterval(timer);return null;};function $defined(obj){return(obj!=undefined);};function $each(iterable,fn,bind){var type=$type(iterable);((type=='arguments'||type=='collection'||type=='array')?Array:Hash).each(iterable,fn,bind);};function $empty(){};function $extend(original,extended){for(var key in(extended||{}))original[key]=extended[key];return original;};function $H(object){return new Hash(object);};function $lambda(value){return(typeof value=='function')?value:function(){return value;};};function $merge(){var mix={};for(var i=0,l=arguments.length;i<l;i++){var object=arguments[i];if($type(object)!='object')continue;for(var key in object){var op=object[key],mp=mix[key];mix[key]=(mp&&$type(op)=='object'&&$type(mp)=='object')?$merge(mp,op):$unlink(op);}} +return mix;};function $pick(){for(var i=0,l=arguments.length;i<l;i++){if(arguments[i]!=undefined)return arguments[i];} +return null;};function $random(min,max){return Math.floor(Math.random()*(max-min+1)+min);};function $splat(obj){var type=$type(obj);return(type)?((type!='array'&&type!='arguments')?[obj]:obj):[];};var $time=Date.now||function(){return+new Date;};function $try(){for(var i=0,l=arguments.length;i<l;i++){try{return arguments[i]();}catch(e){}} +return null;};function $type(obj){if(obj==undefined)return false;if(obj.$family)return(obj.$family.name=='number'&&!isFinite(obj))?false:obj.$family.name;if(obj.nodeName){switch(obj.nodeType){case 1:return'element';case 3:return(/\S/).test(obj.nodeValue)?'textnode':'whitespace';}}else if(typeof obj.length=='number'){if(obj.callee)return'arguments';else if(obj.item)return'collection';} +return typeof obj;};function $unlink(object){var unlinked;switch($type(object)){case'object':unlinked={};for(var p in object)unlinked[p]=$unlink(object[p]);break;case'hash':unlinked=new Hash(object);break;case'array':unlinked=[];for(var i=0,l=object.length;i<l;i++)unlinked[i]=$unlink(object[i]);break;default:return object;} +return unlinked;};var Browser=$merge({Engine:{name:'unknown',version:0},Platform:{name:(window.orientation!=undefined)?'ipod':(navigator.platform.match(/mac|win|linux/i)||['other'])[0].toLowerCase()},Features:{xpath:!!(document.evaluate),air:!!(window.runtime),query:!!(document.querySelector)},Plugins:{},Engines:{presto:function(){return(!window.opera)?false:((arguments.callee.caller)?960:((document.getElementsByClassName)?950:925));},trident:function(){return(!window.ActiveXObject)?false:((window.XMLHttpRequest)?5:4);},webkit:function(){return(navigator.taintEnabled)?false:((Browser.Features.xpath)?((Browser.Features.query)?525:420):419);},gecko:function(){return(document.getBoxObjectFor==undefined)?false:((document.getElementsByClassName)?19:18);}}},Browser||{});Browser.Platform[Browser.Platform.name]=true;Browser.detect=function(){for(var engine in this.Engines){var version=this.Engines[engine]();if(version){this.Engine={name:engine,version:version};this.Engine[engine]=this.Engine[engine+version]=true;break;}} +return{name:engine,version:version};};Browser.detect();Browser.Request=function(){return $try(function(){return new XMLHttpRequest();},function(){return new ActiveXObject('MSXML2.XMLHTTP');});};Browser.Features.xhr=!!(Browser.Request());Browser.Plugins.Flash=(function(){var version=($try(function(){return navigator.plugins['Shockwave Flash'].description;},function(){return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');})||'0 r0').match(/\d+/g);return{version:parseInt(version[0]||0+'.'+version[1]||0),build:parseInt(version[2]||0)};})();function $exec(text){if(!text)return text;if(window.execScript){window.execScript(text);}else{var script=document.createElement('script');script.setAttribute('type','text/javascript');script[(Browser.Engine.webkit&&Browser.Engine.version<420)?'innerText':'text']=text;document.head.appendChild(script);document.head.removeChild(script);} +return text;};Native.UID=1;var $uid=(Browser.Engine.trident)?function(item){return(item.uid||(item.uid=[Native.UID++]))[0];}:function(item){return item.uid||(item.uid=Native.UID++);};var Window=new Native({name:'Window',legacy:(Browser.Engine.trident)?null:window.Window,initialize:function(win){$uid(win);if(!win.Element){win.Element=$empty;if(Browser.Engine.webkit)win.document.createElement("iframe");win.Element.prototype=(Browser.Engine.webkit)?window["[[DOMElement.prototype]]"]:{};} +win.document.window=win;return $extend(win,Window.Prototype);},afterImplement:function(property,value){window[property]=Window.Prototype[property]=value;}});Window.Prototype={$family:{name:'window'}};new Window(window);var Document=new Native({name:'Document',legacy:(Browser.Engine.trident)?null:window.Document,initialize:function(doc){$uid(doc);doc.head=doc.getElementsByTagName('head')[0];doc.html=doc.getElementsByTagName('html')[0];if(Browser.Engine.trident&&Browser.Engine.version<=4)$try(function(){doc.execCommand("BackgroundImageCache",false,true);});if(Browser.Engine.trident)doc.window.attachEvent('onunload',function(){doc.window.detachEvent('onunload',arguments.callee);doc.head=doc.html=doc.window=null;});return $extend(doc,Document.Prototype);},afterImplement:function(property,value){document[property]=Document.Prototype[property]=value;}});Document.Prototype={$family:{name:'document'}};new Document(document);Array.implement({every:function(fn,bind){for(var i=0,l=this.length;i<l;i++){if(!fn.call(bind,this[i],i,this))return false;} +return true;},filter:function(fn,bind){var results=[];for(var i=0,l=this.length;i<l;i++){if(fn.call(bind,this[i],i,this))results.push(this[i]);} +return results;},clean:function(){return this.filter($defined);},indexOf:function(item,from){var len=this.length;for(var i=(from<0)?Math.max(0,len+from):from||0;i<len;i++){if(this[i]===item)return i;} +return-1;},map:function(fn,bind){var results=[];for(var i=0,l=this.length;i<l;i++)results[i]=fn.call(bind,this[i],i,this);return results;},some:function(fn,bind){for(var i=0,l=this.length;i<l;i++){if(fn.call(bind,this[i],i,this))return true;} +return false;},associate:function(keys){var obj={},length=Math.min(this.length,keys.length);for(var i=0;i<length;i++)obj[keys[i]]=this[i];return obj;},link:function(object){var result={};for(var i=0,l=this.length;i<l;i++){for(var key in object){if(object[key](this[i])){result[key]=this[i];delete object[key];break;}}} +return result;},contains:function(item,from){return this.indexOf(item,from)!=-1;},extend:function(array){for(var i=0,j=array.length;i<j;i++)this.push(array[i]);return this;},getLast:function(){return(this.length)?this[this.length-1]:null;},getRandom:function(){return(this.length)?this[$random(0,this.length-1)]:null;},include:function(item){if(!this.contains(item))this.push(item);return this;},combine:function(array){for(var i=0,l=array.length;i<l;i++)this.include(array[i]);return this;},erase:function(item){for(var i=this.length;i--;i){if(this[i]===item)this.splice(i,1);} +return this;},empty:function(){this.length=0;return this;},flatten:function(){var array=[];for(var i=0,l=this.length;i<l;i++){var type=$type(this[i]);if(!type)continue;array=array.concat((type=='array'||type=='collection'||type=='arguments')?Array.flatten(this[i]):this[i]);} +return array;},hexToRgb:function(array){if(this.length!=3)return null;var rgb=this.map(function(value){if(value.length==1)value+=value;return value.toInt(16);});return(array)?rgb:'rgb('+rgb+')';},rgbToHex:function(array){if(this.length<3)return null;if(this.length==4&&this[3]==0&&!array)return'transparent';var hex=[];for(var i=0;i<3;i++){var bit=(this[i]-0).toString(16);hex.push((bit.length==1)?'0'+bit:bit);} +return(array)?hex:'#'+hex.join('');}});Function.implement({extend:function(properties){for(var property in properties)this[property]=properties[property];return this;},create:function(options){var self=this;options=options||{};return function(event){var args=options.arguments;args=(args!=undefined)?$splat(args):Array.slice(arguments,(options.event)?1:0);if(options.event)args=[event||window.event].extend(args);var returns=function(){return self.apply(options.bind||null,args);};if(options.delay)return setTimeout(returns,options.delay);if(options.periodical)return setInterval(returns,options.periodical);if(options.attempt)return $try(returns);return returns();};},run:function(args,bind){return this.apply(bind,$splat(args));},pass:function(args,bind){return this.create({bind:bind,arguments:args});},bind:function(bind,args){return this.create({bind:bind,arguments:args});},bindWithEvent:function(bind,args){return this.create({bind:bind,arguments:args,event:true});},attempt:function(args,bind){return this.create({bind:bind,arguments:args,attempt:true})();},delay:function(delay,bind,args){return this.create({bind:bind,arguments:args,delay:delay})();},periodical:function(periodical,bind,args){return this.create({bind:bind,arguments:args,periodical:periodical})();}});Number.implement({limit:function(min,max){return Math.min(max,Math.max(min,this));},round:function(precision){precision=Math.pow(10,precision||0);return Math.round(this*precision)/precision;},times:function(fn,bind){for(var i=0;i<this;i++)fn.call(bind,i,this);},toFloat:function(){return parseFloat(this);},toInt:function(base){return parseInt(this,base||10);}});Number.alias('times','each');(function(math){var methods={};math.each(function(name){if(!Number[name])methods[name]=function(){return Math[name].apply(null,[this].concat($A(arguments)));};});Number.implement(methods);})(['abs','acos','asin','atan','atan2','ceil','cos','exp','floor','log','max','min','pow','sin','sqrt','tan']);String.implement({test:function(regex,params){return((typeof regex=='string')?new RegExp(regex,params):regex).test(this);},contains:function(string,separator){return(separator)?(separator+this+separator).indexOf(separator+string+separator)>-1:this.indexOf(string)>-1;},trim:function(){return this.replace(/^\s+|\s+$/g,'');},clean:function(){return this.replace(/\s+/g,' ').trim();},camelCase:function(){return this.replace(/-\D/g,function(match){return match.charAt(1).toUpperCase();});},hyphenate:function(){return this.replace(/[A-Z]/g,function(match){return('-'+match.charAt(0).toLowerCase());});},capitalize:function(){return this.replace(/\b[a-z]/g,function(match){return match.toUpperCase();});},escapeRegExp:function(){return this.replace(/([-.*+?^${}()|[\]\/\\])/g,'\\$1');},toInt:function(base){return parseInt(this,base||10);},toFloat:function(){return parseFloat(this);},hexToRgb:function(array){var hex=this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);return(hex)?hex.slice(1).hexToRgb(array):null;},rgbToHex:function(array){var rgb=this.match(/\d{1,3}/g);return(rgb)?rgb.rgbToHex(array):null;},stripScripts:function(option){var scripts='';var text=this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi,function(){scripts+=arguments[1]+'\n';return'';});if(option===true)$exec(scripts);else if($type(option)=='function')option(scripts,text);return text;},substitute:function(object,regexp){return this.replace(regexp||(/\\?\{([^{}]+)\}/g),function(match,name){if(match.charAt(0)=='\\')return match.slice(1);return(object[name]!=undefined)?object[name]:'';});}});Hash.implement({has:Object.prototype.hasOwnProperty,keyOf:function(value){for(var key in this){if(this.hasOwnProperty(key)&&this[key]===value)return key;} +return null;},hasValue:function(value){return(Hash.keyOf(this,value)!==null);},extend:function(properties){Hash.each(properties,function(value,key){Hash.set(this,key,value);},this);return this;},combine:function(properties){Hash.each(properties,function(value,key){Hash.include(this,key,value);},this);return this;},erase:function(key){if(this.hasOwnProperty(key))delete this[key];return this;},get:function(key){return(this.hasOwnProperty(key))?this[key]:null;},set:function(key,value){if(!this[key]||this.hasOwnProperty(key))this[key]=value;return this;},empty:function(){Hash.each(this,function(value,key){delete this[key];},this);return this;},include:function(key,value){var k=this[key];if(k==undefined)this[key]=value;return this;},map:function(fn,bind){var results=new Hash;Hash.each(this,function(value,key){results.set(key,fn.call(bind,value,key,this));},this);return results;},filter:function(fn,bind){var results=new Hash;Hash.each(this,function(value,key){if(fn.call(bind,value,key,this))results.set(key,value);},this);return results;},every:function(fn,bind){for(var key in this){if(this.hasOwnProperty(key)&&!fn.call(bind,this[key],key))return false;} +return true;},some:function(fn,bind){for(var key in this){if(this.hasOwnProperty(key)&&fn.call(bind,this[key],key))return true;} +return false;},getKeys:function(){var keys=[];Hash.each(this,function(value,key){keys.push(key);});return keys;},getValues:function(){var values=[];Hash.each(this,function(value){values.push(value);});return values;},toQueryString:function(base){var queryString=[];Hash.each(this,function(value,key){if(base)key=base+'['+key+']';var result;switch($type(value)){case'object':result=Hash.toQueryString(value,key);break;case'array':var qs={};value.each(function(val,i){qs[i]=val;});result=Hash.toQueryString(qs,key);break;default:result=key+'='+encodeURIComponent(value);} +if(value!=undefined)queryString.push(result);});return queryString.join('&');}});Hash.alias({keyOf:'indexOf',hasValue:'contains'});var Event=new Native({name:'Event',initialize:function(event,win){win=win||window;var doc=win.document;event=event||win.event;if(event.$extended)return event;this.$extended=true;var type=event.type;var target=event.target||event.srcElement;while(target&&target.nodeType==3)target=target.parentNode;if(type.test(/key/)){var code=event.which||event.keyCode;var key=Event.Keys.keyOf(code);if(type=='keydown'){var fKey=code-111;if(fKey>0&&fKey<13)key='f'+fKey;} +key=key||String.fromCharCode(code).toLowerCase();}else if(type.match(/(click|mouse|menu)/i)){doc=(!doc.compatMode||doc.compatMode=='CSS1Compat')?doc.html:doc.body;var page={x:event.pageX||event.clientX+doc.scrollLeft,y:event.pageY||event.clientY+doc.scrollTop};var client={x:(event.pageX)?event.pageX-win.pageXOffset:event.clientX,y:(event.pageY)?event.pageY-win.pageYOffset:event.clientY};if(type.match(/DOMMouseScroll|mousewheel/)){var wheel=(event.wheelDelta)?event.wheelDelta/120:-(event.detail||0)/3;} +var rightClick=(event.which==3)||(event.button==2);var related=null;if(type.match(/over|out/)){switch(type){case'mouseover':related=event.relatedTarget||event.fromElement;break;case'mouseout':related=event.relatedTarget||event.toElement;} +if(!(function(){while(related&&related.nodeType==3)related=related.parentNode;return true;}).create({attempt:Browser.Engine.gecko})())related=false;}} +return $extend(this,{event:event,type:type,page:page,client:client,rightClick:rightClick,wheel:wheel,relatedTarget:related,target:target,code:code,key:key,shift:event.shiftKey,control:event.ctrlKey,alt:event.altKey,meta:event.metaKey});}});Event.Keys=new Hash({'enter':13,'up':38,'down':40,'left':37,'right':39,'esc':27,'space':32,'backspace':8,'tab':9,'delete':46});Event.implement({stop:function(){return this.stopPropagation().preventDefault();},stopPropagation:function(){if(this.event.stopPropagation)this.event.stopPropagation();else this.event.cancelBubble=true;return this;},preventDefault:function(){if(this.event.preventDefault)this.event.preventDefault();else this.event.returnValue=false;return this;}});var Class=new Native({name:'Class',initialize:function(properties){properties=properties||{};var klass=function(){for(var key in this){if($type(this[key])!='function')this[key]=$unlink(this[key]);} +this.constructor=klass;if(Class.prototyping)return this;var instance=(this.initialize)?this.initialize.apply(this,arguments):this;if(this.options&&this.options.initialize)this.options.initialize.call(this);return instance;};for(var mutator in Class.Mutators){if(!properties[mutator])continue;properties=Class.Mutators[mutator](properties,properties[mutator]);delete properties[mutator];} +$extend(klass,this);klass.constructor=Class;klass.prototype=properties;return klass;}});Class.Mutators={Extends:function(self,klass){Class.prototyping=klass.prototype;var subclass=new klass;delete subclass.parent;subclass=Class.inherit(subclass,self);delete Class.prototyping;return subclass;},Implements:function(self,klasses){$splat(klasses).each(function(klass){Class.prototying=klass;$extend(self,($type(klass)=='class')?new klass:klass);delete Class.prototyping;});return self;}};Class.extend({inherit:function(object,properties){var caller=arguments.callee.caller;for(var key in properties){var override=properties[key];var previous=object[key];var type=$type(override);if(previous&&type=='function'){if(override!=previous){if(caller){override.__parent=previous;object[key]=override;}else{Class.override(object,key,override);}}}else if(type=='object'){object[key]=$merge(previous,override);}else{object[key]=override;}} +if(caller)object.parent=function(){return arguments.callee.caller.__parent.apply(this,arguments);};return object;},override:function(object,name,method){var parent=Class.prototyping;if(parent&&object[name]!=parent[name])parent=null;var override=function(){var previous=this.parent;this.parent=parent?parent[name]:object[name];var value=method.apply(this,arguments);this.parent=previous;return value;};object[name]=override;}});Class.implement({implement:function(){var proto=this.prototype;$each(arguments,function(properties){Class.inherit(proto,properties);});return this;}});var Chain=new Class({$chain:[],chain:function(){this.$chain.extend(Array.flatten(arguments));return this;},callChain:function(){return(this.$chain.length)?this.$chain.shift().apply(this,arguments):false;},clearChain:function(){this.$chain.empty();return this;}});var Events=new Class({$events:{},addEvent:function(type,fn,internal){type=Events.removeOn(type);if(fn!=$empty){this.$events[type]=this.$events[type]||[];this.$events[type].include(fn);if(internal)fn.internal=true;} +return this;},addEvents:function(events){for(var type in events)this.addEvent(type,events[type]);return this;},fireEvent:function(type,args,delay){type=Events.removeOn(type);if(!this.$events||!this.$events[type])return this;this.$events[type].each(function(fn){fn.create({'bind':this,'delay':delay,'arguments':args})();},this);return this;},removeEvent:function(type,fn){type=Events.removeOn(type);if(!this.$events[type])return this;if(!fn.internal)this.$events[type].erase(fn);return this;},removeEvents:function(events){if($type(events)=='object'){for(var type in events)this.removeEvent(type,events[type]);return this;} +if(events)events=Events.removeOn(events);for(var type in this.$events){if(events&&events!=type)continue;var fns=this.$events[type];for(var i=fns.length;i--;i)this.removeEvent(type,fns[i]);} +return this;}});Events.removeOn=function(string){return string.replace(/^on([A-Z])/,function(full,first){return first.toLowerCase();});};var Options=new Class({setOptions:function(){this.options=$merge.run([this.options].extend(arguments));if(!this.addEvent)return this;for(var option in this.options){if($type(this.options[option])!='function'||!(/^on[A-Z]/).test(option))continue;this.addEvent(option,this.options[option]);delete this.options[option];} +return this;}});var Element=new Native({name:'Element',legacy:window.Element,initialize:function(tag,props){var konstructor=Element.Constructors.get(tag);if(konstructor)return konstructor(props);if(typeof tag=='string')return document.newElement(tag,props);return $(tag).set(props);},afterImplement:function(key,value){Element.Prototype[key]=value;if(Array[key])return;Elements.implement(key,function(){var items=[],elements=true;for(var i=0,j=this.length;i<j;i++){var returns=this[i][key].apply(this[i],arguments);items.push(returns);if(elements)elements=($type(returns)=='element');} +return(elements)?new Elements(items):items;});}});Element.Prototype={$family:{name:'element'}};Element.Constructors=new Hash;var IFrame=new Native({name:'IFrame',generics:false,initialize:function(){var params=Array.link(arguments,{properties:Object.type,iframe:$defined});var props=params.properties||{};var iframe=$(params.iframe)||false;var onload=props.onload||$empty;delete props.onload;props.id=props.name=$pick(props.id,props.name,iframe.id,iframe.name,'IFrame_'+$time());iframe=new Element(iframe||'iframe',props);var onFrameLoad=function(){var host=$try(function(){return iframe.contentWindow.location.host;});if(host&&host==window.location.host){var win=new Window(iframe.contentWindow);new Document(iframe.contentWindow.document);$extend(win.Element.prototype,Element.Prototype);} +onload.call(iframe.contentWindow,iframe.contentWindow.document);};(window.frames[props.id])?onFrameLoad():iframe.addListener('load',onFrameLoad);return iframe;}});var Elements=new Native({initialize:function(elements,options){options=$extend({ddup:true,cash:true},options);elements=elements||[];if(options.ddup||options.cash){var uniques={},returned=[];for(var i=0,l=elements.length;i<l;i++){var el=$.element(elements[i],!options.cash);if(options.ddup){if(uniques[el.uid])continue;uniques[el.uid]=true;} +returned.push(el);} +elements=returned;} +return(options.cash)?$extend(elements,this):elements;}});Elements.implement({filter:function(filter,bind){if(!filter)return this;return new Elements(Array.filter(this,(typeof filter=='string')?function(item){return item.match(filter);}:filter,bind));}});Document.implement({newElement:function(tag,props){if(Browser.Engine.trident&&props){['name','type','checked'].each(function(attribute){if(!props[attribute])return;tag+=' '+attribute+'="'+props[attribute]+'"';if(attribute!='checked')delete props[attribute];});tag='<'+tag+'>';} +return $.element(this.createElement(tag)).set(props);},newTextNode:function(text){return this.createTextNode(text);},getDocument:function(){return this;},getWindow:function(){return this.window;}});Window.implement({$:function(el,nocash){if(el&&el.$family&&el.uid)return el;var type=$type(el);return($[type])?$[type](el,nocash,this.document):null;},$$:function(selector){if(arguments.length==1&&typeof selector=='string')return this.document.getElements(selector);var elements=[];var args=Array.flatten(arguments);for(var i=0,l=args.length;i<l;i++){var item=args[i];switch($type(item)){case'element':elements.push(item);break;case'string':elements.extend(this.document.getElements(item,true));}} +return new Elements(elements);},getDocument:function(){return this.document;},getWindow:function(){return this;}});$.string=function(id,nocash,doc){id=doc.getElementById(id);return(id)?$.element(id,nocash):null;};$.element=function(el,nocash){$uid(el);if(!nocash&&!el.$family&&!(/^object|embed$/i).test(el.tagName)){var proto=Element.Prototype;for(var p in proto)el[p]=proto[p];};return el;};$.object=function(obj,nocash,doc){if(obj.toElement)return $.element(obj.toElement(doc),nocash);return null;};$.textnode=$.whitespace=$.window=$.document=$arguments(0);Native.implement([Element,Document],{getElement:function(selector,nocash){return $(this.getElements(selector,true)[0]||null,nocash);},getElements:function(tags,nocash){tags=tags.split(',');var elements=[];var ddup=(tags.length>1);tags.each(function(tag){var partial=this.getElementsByTagName(tag.trim());(ddup)?elements.extend(partial):elements=partial;},this);return new Elements(elements,{ddup:ddup,cash:!nocash});}});(function(){var collected={},storage={};var props={input:'checked',option:'selected',textarea:(Browser.Engine.webkit&&Browser.Engine.version<420)?'innerHTML':'value'};var get=function(uid){return(storage[uid]||(storage[uid]={}));};var clean=function(item,retain){if(!item)return;var uid=item.uid;if(Browser.Engine.trident){if(item.clearAttributes){var clone=retain&&item.cloneNode(false);item.clearAttributes();if(clone)item.mergeAttributes(clone);}else if(item.removeEvents){item.removeEvents();} +if((/object/i).test(item.tagName)){for(var p in item){if(typeof item[p]=='function')item[p]=$empty;} +Element.dispose(item);}} +if(!uid)return;collected[uid]=storage[uid]=null;};var purge=function(){Hash.each(collected,clean);if(Browser.Engine.trident)$A(document.getElementsByTagName('object')).each(clean);if(window.CollectGarbage)CollectGarbage();collected=storage=null;};var walk=function(element,walk,start,match,all,nocash){var el=element[start||walk];var elements=[];while(el){if(el.nodeType==1&&(!match||Element.match(el,match))){if(!all)return $(el,nocash);elements.push(el);} +el=el[walk];} +return(all)?new Elements(elements,{ddup:false,cash:!nocash}):null;};var attributes={'html':'innerHTML','class':'className','for':'htmlFor','text':(Browser.Engine.trident||(Browser.Engine.webkit&&Browser.Engine.version<420))?'innerText':'textContent'};var bools=['compact','nowrap','ismap','declare','noshade','checked','disabled','readonly','multiple','selected','noresize','defer'];var camels=['value','accessKey','cellPadding','cellSpacing','colSpan','frameBorder','maxLength','readOnly','rowSpan','tabIndex','useMap'];Hash.extend(attributes,bools.associate(bools));Hash.extend(attributes,camels.associate(camels.map(String.toLowerCase)));var inserters={before:function(context,element){if(element.parentNode)element.parentNode.insertBefore(context,element);},after:function(context,element){if(!element.parentNode)return;var next=element.nextSibling;(next)?element.parentNode.insertBefore(context,next):element.parentNode.appendChild(context);},bottom:function(context,element){element.appendChild(context);},top:function(context,element){var first=element.firstChild;(first)?element.insertBefore(context,first):element.appendChild(context);}};inserters.inside=inserters.bottom;Hash.each(inserters,function(inserter,where){where=where.capitalize();Element.implement('inject'+where,function(el){inserter(this,$(el,true));return this;});Element.implement('grab'+where,function(el){inserter($(el,true),this);return this;});});Element.implement({set:function(prop,value){switch($type(prop)){case'object':for(var p in prop)this.set(p,prop[p]);break;case'string':var property=Element.Properties.get(prop);(property&&property.set)?property.set.apply(this,Array.slice(arguments,1)):this.setProperty(prop,value);} +return this;},get:function(prop){var property=Element.Properties.get(prop);return(property&&property.get)?property.get.apply(this,Array.slice(arguments,1)):this.getProperty(prop);},erase:function(prop){var property=Element.Properties.get(prop);(property&&property.erase)?property.erase.apply(this):this.removeProperty(prop);return this;},setProperty:function(attribute,value){var key=attributes[attribute];if(value==undefined)return this.removeProperty(attribute);if(key&&bools[attribute])value=!!value;(key)?this[key]=value:this.setAttribute(attribute,''+value);return this;},setProperties:function(attributes){for(var attribute in attributes)this.setProperty(attribute,attributes[attribute]);return this;},getProperty:function(attribute){var key=attributes[attribute];var value=(key)?this[key]:this.getAttribute(attribute,2);return(bools[attribute])?!!value:(key)?value:value||null;},getProperties:function(){var args=$A(arguments);return args.map(this.getProperty,this).associate(args);},removeProperty:function(attribute){var key=attributes[attribute];(key)?this[key]=(key&&bools[attribute])?false:'':this.removeAttribute(attribute);return this;},removeProperties:function(){Array.each(arguments,this.removeProperty,this);return this;},hasClass:function(className){return this.className.contains(className,' ');},addClass:function(className){if(!this.hasClass(className))this.className=(this.className+' '+className).clean();return this;},removeClass:function(className){this.className=this.className.replace(new RegExp('(^|\\s)'+className+'(?:\\s|$)'),'$1');return this;},toggleClass:function(className){return this.hasClass(className)?this.removeClass(className):this.addClass(className);},adopt:function(){Array.flatten(arguments).each(function(element){element=$(element,true);if(element)this.appendChild(element);},this);return this;},appendText:function(text,where){return this.grab(this.getDocument().newTextNode(text),where);},grab:function(el,where){inserters[where||'bottom']($(el,true),this);return this;},inject:function(el,where){inserters[where||'bottom'](this,$(el,true));return this;},replaces:function(el){el=$(el,true);el.parentNode.replaceChild(this,el);return this;},wraps:function(el,where){el=$(el,true);return this.replaces(el).grab(el,where);},getPrevious:function(match,nocash){return walk(this,'previousSibling',null,match,false,nocash);},getAllPrevious:function(match,nocash){return walk(this,'previousSibling',null,match,true,nocash);},getNext:function(match,nocash){return walk(this,'nextSibling',null,match,false,nocash);},getAllNext:function(match,nocash){return walk(this,'nextSibling',null,match,true,nocash);},getFirst:function(match,nocash){return walk(this,'nextSibling','firstChild',match,false,nocash);},getLast:function(match,nocash){return walk(this,'previousSibling','lastChild',match,false,nocash);},getParent:function(match,nocash){return walk(this,'parentNode',null,match,false,nocash);},getParents:function(match,nocash){return walk(this,'parentNode',null,match,true,nocash);},getChildren:function(match,nocash){return walk(this,'nextSibling','firstChild',match,true,nocash);},getWindow:function(){return this.ownerDocument.window;},getDocument:function(){return this.ownerDocument;},getElementById:function(id,nocash){var el=this.ownerDocument.getElementById(id);if(!el)return null;for(var parent=el.parentNode;parent!=this;parent=parent.parentNode){if(!parent)return null;} +return $.element(el,nocash);},getSelected:function(){return new Elements($A(... [truncated message content] |