lPº²Xlñ€ˆ%œÔ~¶Ò²¬¹Ë9 "* 5S ^ †Ÿ§P¬ ¶º Á× Û autobackupdbname myRadio.rootdialogs infomethodtoolsupdate.askUpdateParts lastupdateWed, 24 Sep 2002 20:00:00 GMTmethodtoolsupdate.getUpdateopenLogport serialNumserverupdates.xml-rpc.itURL1http://register.xml-rpc.it/itstories/story$num=12V MS Sans Serif õ¸H6\6€ìº¹ckúy¢© Q f¬ Áä ùD YŠ Ÿð 1 EŠ žÒ æ /w  &C Yv Šº Îô 2002/08/23; 8:23 pm9Delete nows works for myRadioSuite.newsViews.userlandView2002/10/08; 12:00 pmBAdded callbacks for (un)subscribeServive - rebuilds UNSORTED feeds2002/10/15; 10:32 amRegistration and Update working2002/10/15; 12:15 pmGBeta release of activeRendererView for news aggregator; Drop down menu;2002/10/20; 12:00 pm-handle RSS redirects in myRadio news settings2002/10/21; 11:30 amMAdded newsViews.cleanup; Radio modifies aggregatorData.services for redirects2002/10/24; 4:22 pm)save MyRadioData.root after modifications2002/10/28; 4:49 pmAInitial checkin for javascript component updates; not enabled yet2002/10/30; 12:00pm0New preferences page; Auto-€wbFFFF000000060001001777AA00000000005D000000001001710190490421800000‚‚60006003263200-1‚0Â3‚263273FFFF0‚‚10ÂD500001000000380000000103CE840‚‚3‚2632733CE038E0002533263300002000003D4000000003CE, function makeCall(page) { //var status = XMLRPC.getService("http://127.0.0.1:5335/RPC2"); //status.add("myRadio.module","getStatus"); //res = status.getStatus(page); setTimeout("makeCall('" + page + "')",5000); //handleResponse(res); XMLRPC.call(handleResponse, "http://127.0.0.1:5335/RPC2","myRadio.module",page); } function getNews(page) { //var news = XMLRPC.getService("http://127.0.0.1:5335/RPC2"); //news.add("myRadio.news","getN"); //res = news.getN(page); //handleResponse(res); XMLRPC.call(handleResponse,"http://127.0.0.1:5335/RPC2","myRadio.news",page); } function handleResponse(res) { if (res) { for (var i in res) { if (res[i].content && res[i].id) { var n = document.getElementById(res[i].id); if (n) { //content response is split in 4k chunks for MOZ var buf = ""; for (var j=0; j // Version: 0.91 // Date: 29-08-2001 // Site: www.vcdn.org/Public/XMLRPC/ // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Object.prototype.toXMLRPC = function(){ var wo = this.valueOf(); if(wo.toXMLRPC == this.toXMLRPC){ retstr = ""; for(prop in this){ if(typeof wo[prop] != "function"){ retstr += "" + prop + "" + XMLRPC.getXML(wo[prop]) + ""; } } retstr += ""; return retstr; } else{ return wo.toXMLRPC(); } } String.prototype.toXMLRPC = function(){ // return "";//.replace(/" + this + ""; } else if(this == parseFloat(this)){ return "" + this + ""; } else{ return false.toXMLRPC(); } } Boolean.prototype.toXMLRPC = function(){ if(this) return "1"; else return "0"; } Date.prototype.toXMLRPC = function(){ //Could build in possibilities to express dates //in weeks or other iso8601 possibillities //hmmmm ???? //19980717T14:08:55 return "" + doYear(this.getUTCYear()) + doZero(this.getMonth()) + doZero(this.getUTCDate()) + "T" + doZero(this.getHours()) + ":" + doZero(this.getMinutes()) + ":" + doZero(this.getSeconds()) + ""; function doZero(nr) { nr = String("0" + nr); return nr.substr(nr.length-2, 2); } function doYear(year) { if(year > 9999 || year < 0) XMLRPC.handleError(new Error("Unsupported year: " + year)); year = String("0000" + year) return year.substr(year.length-4, 4); } } Array.prototype.toXMLRPC = function(){ var retstr = ""; for(var i=0;i"; } return retstr + ""; } function VirtualService(servername, oRPC){ this.version = '0.91'; this.URL = servername; this.multicall = false; this.autoroute = true; this.onerror = null; this.rpc = oRPC; 000200000D8200000C12D7C, this.receive = {}; this.purge = function(receive){ return this.rpc.purge(this, receive); } this.revert = function(){ this.rpc.revert(this); } this.add = function(name, alias, receive){ this.rpc.validateMethodName();if(this.rpc.stop){this.rpc.stop = false;return false} if(receive) this.receive[name] = receive; this[(alias || name)] = new Function('var args = new Array(), i;for(i=0;i mask/s * -------------------- * undefined -> 0/1 [default] * number -> 2 000200000E800000198EE7A, * boolean -> 4 * string -> 8 * function -> 16 * object -> 32 * -------------------- * Examples: * Want [String] only: (eqv. (typeof(vDunno) == 'string') ) * Soya.Common.typematch(unknown, 8) * Anything else than 'undefined' acceptable: * Soya.Common.typematch(unknown) * Want [Number], [Boolean] or [Function]: * Soya.Common.typematch(unknown, 2 + 4 + 16) * Want [Number] only: * Soya.Common.typematch(unknown, 2) **/ typematch : function (vDunno, nCase){ var nMask; switch(typeof(vDunno)){ case 'number' : nMask = 2; break; case 'boolean' : nMask = 4; break; case 'string' : nMask = 8; break; case 'function': nMask = 16; break; case 'object' : nMask = 32; break; default : nMask = 1; break; } return Boolean(nMask & (nCase || 62)); }, getNode : function(data, tree){ var nc = 0;//nodeCount //node = 1 if(data != null){ for(i=0;i 1){ tree.shift(); data = this.getNode(data, tree); } return data; } nc++ } } } return false; }, toObject : function(data){ var ret, i; switch(data.tagName){ case "string": return (data.firstChild) ? new String(data.firstChild.nodeValue) : ""; break; case "int": case "i4": case "double": return (data.firstChild) ? new Number(data.firstChild.nodeValue) : 0; break; case "dateTime.iso8601": /* Have to read the spec to be able to completely parse all the possibilities in iso8601 07-17-1998 14:08:55 19980717T14:08:55 */ var sn = (isIE) ? "-" : "/"; if(/^(\d{4})(\d{2})(\d{2})T(\d{2}):(\d{2}):(\d{2})/.test(data.firstChild.nodeValue)){;//data.text)){ return new Date(RegExp.$2 + sn + RegExp.$3 + sn + RegExp.$1 + " " + RegExp.$4 + ":" + RegExp.$5 + ":" + RegExp.$6); } else{ return new Date(); } break; case "array": data = this.getNode(data, [0]); if(data && data.tagName == "data"){ ret = new Array(); var i = 0; while(child = this.getNode(data, [i++])){ ret.push(this.toObject(child)); } return ret; } else{ this.handleError(new Error("Malformed XMLRPC Message1")); return false; } break; case "struct": ret = {}; var i = 0; while(child = this.getNode(data, [i++])){ if(child.tagName == "member"){ ret[this.getNode(child, [0]).firstChild.nodeValue] = this.toObject(this.getNode(child, [1])); } else{ this.handleError(new Error("Malformed XMLRPC Message2")); return false; } } return ret; break; case "boolean": return Boolean(isNaN(parseInt(data.firstChild.nodeValue)) ? (data.firstChild.nodeValue == "true") : parseInt(data.firstChild.nodeValue)) break; case "base64": return this.decodeBase64(data.firstChild.nodeValue); break; case "value": child = this.getNode(data, [0]); return (!child) ? ((data.firstChild) ? new String(data.firstChild.nodeValue) : "") : this.toObject(child); break; default: this.handleError(new Error("Malformed XMLRPC Message: " + data.tagName)); return false; break; } }, /*** Decode Base64 ****** * Original Idea & Code by thomas@saltstorm.net * from Soya.Encode.Base64 [http://soya.saltstorm.net] **/ decodeBase64 : function(sEncoded){ 000200000BE100002808BDB, // Input must be dividable with 4. if(!sEncoded || (sEncoded.length % 4) > 0) return sEncoded; /* Use NN's built-in base64 decoder if available. This procedure is horribly slow running under NN4, so the NN built-in equivalent comes in very handy. :) */ else if(typeof(atob) != 'undefined') return atob(sEncoded); var nBits, i, sDecoded = ''; var base64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; sEncoded = sEncoded.replace(/\W|=/g, ''); for(i=0; i < sEncoded.length; i += 4){ nBits = (base64.indexOf(sEncoded.charAt(i)) & 0xff) << 18 | (base64.indexOf(sEncoded.charAt(i+1)) & 0xff) << 12 | (base64.indexOf(sEncoded.charAt(i+2)) & 0xff) << 6 | base64.indexOf(sEncoded.charAt(i+3)) & 0xff; sDecoded += String.fromCharCode( (nBits & 0xff0000) >> 16, (nBits & 0xff00) >> 8, nBits & 0xff); } // not sure if the following statement behaves as supposed under // all circumstances, but tests up til now says it does. return sDecoded.substring(0, sDecoded.length - ((sEncoded.charCodeAt(i - 2) == 61) ? 2 : (sEncoded.charCodeAt(i - 1) == 61 ? 1 : 0))); }, getObject : function(type, message){ if(type == "HTTP"){ if(isIE) obj = new ActiveXObject("microsoft.XMLHTTP"); else if(isNS) obj = new XMLHttpRequest(); } else if(type == "XMLDOM"){ if(isIE){ obj = new ActiveXObject("microsoft.XMLDOM"); obj.loadXML(message) }else if(isNS){ obj = new DOMParser(); obj = obj.parseFromString(message, "text/xml"); } } else{ this.handleError(new Error("Unknown Object")); } return obj; }, validateMethodName : function(name){ /*do Checking: The string may only contain identifier characters, upper and lower-case A-Z, the numeric characters, 0-9, underscore, dot, colon and slash. */ if(/^[A-Za-z0-9\._\/:]+$/.test(name)) return true else this.handleError(new Error("Incorrect method name")); }, getXML : function(obj){ if(typeof obj == "function"){ this.handleError(new Error("Cannot Parse functions")); }else if(obj == null || obj == undefined || (typeof obj == "number" && !isFinite(obj))) return false.toXMLRPC(); else return obj.toXMLRPC(); }, handleError : function(e){ if(!this.onerror || !this.onerror(e)){ //alert("An error has occured: " + e.message); throw e; } this.stop = true; this.lastError = e; }, cancel : function(id){ //You can only cancel a request when it was executed async (I think) if(!this.queue[id]) return false; this.queue[id][0].abort(); return true; }, send : function(serverAddress, functionName, args, receive, multicall, autoroute){ var id, http; //default is sync this.validateMethodName(); if(this.stop){this.stop = false; return false;} //setting up multicall multicall = (multicall != null) ? multicall : this.multicall; 000200001384000033E3137D, if(multicall){ if(!this.stack[serverAddress]) this.stack[serverAddress] = new Array(); this.stack[serverAddress].push({methodName : functionName, params : args}); return true; } //creating http object var http = this.getObject("HTTP"); //setting some things for async/sync transfers if(!receive || isNS){; async = false; } else{ async = true; /* The timer functionality is implemented instead of the onreadystatechange event because somehow the calling of this event crashed IE5.x */ id = this.queue.push([http, receive, null, new Date()])-1; this.queue[id][2] = new Function("var id='" + id + "';var dt = new Date(new Date().getTime() - XMLRPC.queue[id][3].getTime());diff = parseInt(dt.getSeconds()*1000 + dt.getMilliseconds());if(diff > XMLRPC.timeout){if(XMLRPC.ontimeout) XMLRPC.ontimeout(); clearInterval(XMLRPC.timers[id]);XMLRPC.cancel(id);return};if(XMLRPC.queue[id][0].readyState == 4){XMLRPC.queue[id][0].onreadystatechange = function(){};XMLRPC.receive(id);clearInterval(XMLRPC.timers[id])}"); this.timers[id] = setInterval("XMLRPC.queue[" + id + "][2]()", 20); } //setting up the routing autoroute = (autoroute || this.autoroute); //'active' is only set when direct sending the message has failed var srv = (autoroute == "active") ? this.routeServer : serverAddress; try{ http.open('POST', srv, async); http.setRequestHeader("User-Agent", "vcXMLRPC v0.91 (" + navigator.userAgent + ")"); http.setRequestHeader("Host", srv.replace(/^https?:\/{2}([:\[\]\-\w\.]+)\/?.*/, '$1')); http.setRequestHeader("Content-type", "text/xml"); if(autoroute == "active"){ http.setRequestHeader("X-Proxy-Request", serverAddress); http.setRequestHeader("X-Compress-Response", "gzip"); } } catch(e){ if(autoroute == true){ //Access has been denied, Routing call. autoroute = "active"; if(id){ delete this.queue[id]; clearInterval(this.timers[id]); } return this.send(serverAddress, functionName, args, receive, multicall, autoroute); } //Routing didn't work either..Throwing error this.handleError(new Error("Could not sent XMLRPC Message (Reason: Access Denied on client)")); if(this.stop){this.stop = false;return false} } //Construct the message var message = '' + functionName + ''; for(i=0;i'; } message += ''; var xmldom = this.getObject('XMLDOM', message); if(self.DEBUG) alert(message); try{ //send message http.send(xmldom); } catch(e){ //Most likely the message timed out(what happend to your internet connection?) this.handleError(new Error("XMLRPC Message not Sent(Reason: " + e.message + ")")); if(this.stop){this.stop = false;return false} } if(!async && receive) return [autoroute, receive(this.processResult(http))]; else if(receive) return [autoroute, id]; else return [autoroute, this.processResult(http)]; }, receive : function(id){ //Function for handling async transfers.. if(this.queue[id]){ var data = this.processResult(this.queue[id][0]); this.queue[id][1](data); delete this.queue[id]; } else{ this.handleError(new Error("Error while processing queue")); } }, processResult : function(http){ if(self.DEBUG) alert(http.responseText); if(http.status == 200){ //getIncoming message dom = http.responseXML; if(dom){ var rpcErr, main; //Check for XMLRPC Errors rpcErr = dom.getElementsByTagName("fault"); if(rpcErr.length > 0){ rpcErr = this.toObject(rpcErr[0].firstChild); this.handleError(new Error(rpcErr.faultCode, rpcErr.faultString)); return false } //handle method result main = dom.getElementsByTagName("param"); if(main.length == 0) this.handleError(new Error("Malformed XMLRPC Message")); data = this.toObject(this.getNode(main[0], [0])); //handle receiving if(this.onreceive) this.onreceive(data); return data; } else{ this.handleError(new Error("Malformed XMLRPC Message")); } } else{ this.handleError(new Error("HTTP Exception: (" + http.status + ") " + http.statusText + "\n\n" + http.responseText)); } } } //Smell something ver = navigator.appVersion; app = navigator.appName; isNS = Boolean(navigator.productSub) //moz_can_do_http = (parseInt(navigator.productSub) >= 20010308) isIE = (ver.indexOf("MSIE 5") != -1 || ver.indexOf("MSIE 6") != -1) ? 1 : 0; isIE55 = (ver.indexOf("MSIE 5.5") != -1) ? 1 : 0; isOTHER = (!isNS && !isIE) ? 1 : 0; if(isOTHER) alert("Sorry your browser doesn't support the features of vcXMLRPC"); 00040000000B0000000204762000050000000B00000002047620000600000031000000010ÁD30‚‚ÁFFFF0‚A00000 20ÂÁ ‚‚Á‚000700000019000000010‚20Â180‚Á‚0008000000B10000000140,Arial40,404E44000321‚0400080‚1010000900000013000000020‚49820‚4982000A00000019000000023‚28732733‚2873273000B00000005000000020Â000C000000370000000235E6191A‚EFF704316‚135EA191A‚EFF70432A‚1000F0000005200000000400 10 ‚ÂÁÂÁ‚‚ÁÂ4,77A4,x#4,4,4,L,4,4,000130000007E00000000DA91F8CE1C1D1E1F7F1B044,-.¶µ•µ¥¥.'"‘’“”…ƒFFFF0FFFF0FFFE000000060001001777AA¹â¿¡¹â¿°©G`Ê#’MM–€ ˜n000000060001001777AA000000000061000000001001710180490421800000‚‚600060031063200-1‚0Â3‚1063273FFFF0‚‚10Â1BA5000010000007C000000020A72840‚‚3‚623273A4403C80006136062315A0A721BA5840‚‚623310632731132038E00010533106370000200000A7800000000A72,/* Outline rendering functions version: 1.2 last modified 10-Oct-2002 created by Marc Barrot, with help from Aaron Straup Cope, DJ Adams and Sjoerd Visscher copyright 2002 by Precision IT Management,Inc. You may use and distribute this code freely, just keep this header information intact. */ var img_expanded = 'http://radio.weblogs.com/0100875/gems/activeRenderer/ol3.gif'; var img_collapsed = 'http://radio.weblogs.com/0100875/gems/activeRenderer/ol2.gif'; var img_rotating = 'http://radio.weblogs.com/0100875/gems/activeRenderer/globe.gif'; new Image(15,15),src = img_expanded; // caching new Image(15,15),src = img_collapsed; // caching new Image(15,15),src = img_rotating; // caching function expand(ioNode) { ioWedge = "i" + ioNode.substr(1); if (document.getElementById && document.getElementById(ioNode) != null) { document.getElementById(ioWedge).src=img_collapsed; document.getElementById(ioWedge).title='collapse'; document.getElementById(ioNode).className='expanded'; } } function collapse(ioNode) { ioWedge = "i" + ioNode.substr(1); if (document.getElementById && document.getElementById(ioNode) != null) { document.getElementById(ioWedge).src=img_expanded; document.getElementById(ioWedge).title='expand'; document.getElementById(ioNode).className='collapsed'; } } function ioSwitch(ioNode) { if (document.getElementById && document.getElementById(ioNode) != null) { nodeState = document.getElementById(ioNode).className; } if (nodeState == 'collapsed') { expand(ioNode); } else { collapse(ioNode); } } function expandAll(divName) { if (document.getElementsByTagName) { nodeList = document.getElementsByTagName('div'); for (var i = 0; i < nodeList.length; i++) { if (nodeList.item(i).getAttribute('name') == divName) { expand(nodeList.item(i).id); } } } else { alert ("Sorry, don't know how to make this run in your browser."); } } function collapseAll(divName) { if (document.getElementsByTagName) { nodeList = document.getElementsByTagName('div'); for (var i = 0; i < nodeList.length; i++) { if (nodeList.item(i).getAttribute('name') == divName) { collapse(nodeList.item(i).id); } } } else { alert ("Sorry, don't know how to make this run in your browser."); } } function normalizeAll(spanName) { if (document.getElementsByTagName) { nodeList = document.getElementsByTagName('span'); for (var i = 0; i < nodeList.length; i++) { if (nodeList.item(i).getAttribute('name') == spanName) { nodeList.item(i).style.fontWeight = 'normal'; 00020000113A00000A721133, } } } else { alert ("Sorry, don't know how to make this run in your browser."); } } function expandBold(ioNode) { ioWedge = "i" + ioNode.substr(1); ioTitle = "t" + ioNode.substr(1); if (document.getElementById && document.getElementById(ioNode) != null) { document.getElementById(ioWedge).src=img_collapsed; document.getElementById(ioWedge).title='collapse'; document.getElementById(ioNode).className='expanded'; document.getElementById(ioTitle).style.fontWeight = 'bold'; } } function expandByDate(n) { if (n.nodeType == 1) { if (n.tagName.toLowerCase() == 'div') { if (n.getAttribute('name') == 'item') { expandBold(n.id); } } } var children = n.childNodes; for (var i=0; i < children.length; i++ ) { expandByDate(children[i]); } } function daySwitch(postDate) { var hasItems = 0; if (document.getElementsByTagName) { nodeList = document.getElementsByTagName('span'); for (var i = 0; i < nodeList.length; i++) { if (nodeList.item(i).getAttribute('name') == 'itemTitle') { hasItems = 1; break; } } } if (hasItems) { collapseAll('item'); normalizeAll('itemTitle'); if (document.getElementById) { expandByDate(document.getElementById(postDate)); } } else { collapseAll('day'); ioSwitch(postDate); } } var targetNode; var targetRoot; function transclude(ioNode, url) { var serverUrl = 'http://www.w3.org/2000/06/webdata/xslt'; var xsltUrl = 'http://radio.weblogs.com/0100875/gems/activeRenderer/outliner_js_xsl.txt'; var xsltUrl2 = 'http://radio.weblogs.com/0100875/gems/activeRenderer/outliner_xsl.txt'; var renderRequest = serverUrl + '?xslfile=' + xsltUrl + '&xmlfile=' + url + '&transform=Submit'; var renderRequest2 = serverUrl + '?xslfile=' + xsltUrl2 + '&xmlfile=' + url + '&transform=Submit'; var ioWedge = "i" + ioNode.substr(1); var ioRoot = "r" + ioNode.substr(1); var ioTitle = "t" + ioNode.substr(1); if (document.getElementById ) { // create buffer if needed if (! document.getElementById ('buffer')) { // if buffer does not already exist var buffer = document.createElement('div'); buffer.setAttribute ('id', 'buffer'); document.body.appendChild (buffer); // add buffer as last element of body } // test for Mac MSIE var macMSIE = navigator.userAgent.search (/MSIE.*Mac/i) + 1; if (macMSIE) { // open new window for transcluded content var xAnchor = screen.width - (640 + 20); var yAnchor = 5; var xWidth = 640; var yHeight = 400; window.open (renderRequest2, 'Related', 'width=' + xWidth + ', left=' + xAnchor + ', height=' + yHeight + ', top=' + yAnchor); } else { // expand node var imgNode = document.getElementById (ioWedge); // wedge image node var rootNode = document.getElementById (ioRoot); // embedding div node var spanNode = document.getElementById (ioTitle); // title span node var title = spanNode.firstChild.firstChild.data; var newTitle = document.createTextNode (title); var expandedNode = document.createElement ('div'); expandedNode.setAttribute ('name', 'active'); expandedNode.setAttribute ('class', 'expanded'); expandedNode.setAttribute ('id', ioNode); expandedNode.style.marginLeft = '15px'; imgNode.src = img_rotating; imgNode.title = 'loading'; imgNode.parentNode.setAttribute ('href', 'javascript:ioSwitch(\'' + ioNode + '\')'); spanNode.removeChild (spanNode.firstChild); spanNode.appendChild (newTitle); rootNode.appendChild (expandedNode); targetNode = expandedNode; targetRoot = imgNode; // load buffer with rendered outline script var theEl=document.createElement('script'); theEl.src = renderRequest; document.getElementById('buffer').appendChild(theEl); } } } function retrieveHtml(s) { // clean-up entity encoded HTML s = s.replace (/</g, '<'); s = s.replace (/>/g, '>'); s = s.replace (/&/g, '&'); // generate random key var rnd = Math.random(); var rnd_key = String (rnd).substr(1,6); s = s.replace (/(id="[rpti][^"][^"]*)/g, '$1' + rnd_key); s = s.replace (/(\('p[^'][^']*)/g, '$1' + rnd_key); // insert transcluded HTML targetNode.innerHTML = s; targetRoot.src = img_collapsed; targetRoot.title = 'collapse'; }00040000000B0000000201BA7000050000000B0000000201BA70000600000031000000010ÁD30‚‚ÁFFFF0‚A00000 20ÂÁ ‚‚Á‚000700000019000000010‚20Â180‚Á‚0008000000B10000000140,Arial40,404E44000321‚0400080‚1010000900000013000000020‚49820‚4982000A00000019000000023‚10632733‚1063273000B00000005000000020Â000C00000013000000011BA50Â1874‚0000F0000005200000000400 10 ‚ÂÁÂÁ‚‚ÁÂ4,77A4,4,4,ª4,77A4,4,00130000007E00000000DA91F8CE1C1D1E1F7F1B044,-.¶µ•µ¥¥.'"‘’“”…ƒFFFF0FFFF0FFFE000000060001001777AA¹îˆ[¹îˆ—b¥Ã’ €ˆ%62¹OD7»¸ÄX modules:p6 ¹5¬¾qe˜ €“±ÒŠÕ Arial ºy¢©ºy¢©G'Q³LANDÿÿÿÿÿÿwinon GET€~€ ž>  »˜Œæ»˜Œæ'·vLANDÿÿÿÿÿÿwinThis script returns a string which appears in the Status Center on the Radio UserLand home page. return ("advanced aggregation :: v." + myR€bFFFF000000060001001777AA00000000005D000000001001710190490421800000‚‚60006003263200-1‚0Â3‚263273FFFF0‚‚10ÂD500001000000380000000103CE840‚‚3‚2632733CE038E0002533263300002000003D4000000003CE, function makeCall(page) { //var status = XMLRPC.getService("http://127.0.0.1:5335/RPC2"); //status.add("myRadio.module","getStatus"); //res = status.getStatus(page); setTimeout("makeCall('" + page + "')",5000); //handleResponse(res); XMLRPC.call(handleResponse, "http://127.0.0.1:5335/RPC2","myRadio.module",page); } function getNews(page) { //var news = XMLRPC.getService("http://127.0.0.1:5335/RPC2"); //news.add("myRadio.news","getN"); //res = news.getN(page); //handleResponse(res); XMLRPC.call(handleResponse,"http://127.0.0.1:5335/RPC2","myRadio.news",page); } function handleResponse(res) { if (res) { for (var i in res) { if (res[i].content && res[i].id) { var n = document.getElementById(res[i].id); if (n) { //content response is split in 4k chunks for MOZ var buf = ""; for (var j=0; j 0) { e = document.getElementById(currentImg); e.setAttribute('style','visibility:hidden'); e.style.visibility = 'hidden'; } currentImg = id; e=document.getElementById(id); e.setAttribute('style','visibility:visible');e.style.visibility='visible'; } else { e=document.getElementById(id); e.setAttribute('style','visibility:hidden'); e.style.visibility='hidden'; } } currentImg = ""00040000000A0000000201FA000050000000A0000000201FA0000600000031000000010ÁD30‚‚ÁFFFF0‚A00000 40ÂÁ ‚‚Á‚000700000019000000010‚20Â180‚Á‚0008000000B10000000140,Arial40,404E44000321‚0400080‚1010000900000017000000020‚1672A00‚1672A0000A00000017000000023‚1232733‚123273000B00000005000000020Â000C0000001600000001636F‚37E8772‚0000F0000005200000000400 10 ‚ÂÁÂÁ‚‚ÁÂ4,77A4,00004,$4,(4,'4,&4,á00130000007E00000000DA91F8CE1C1D1E1F7F1B044,-.¶µ•µ¥¥.'"‘’“”…ƒFFFF0FFFF0FFFE000000060001001777AA¹î’·¹î•@XøÃ:°€“PL$¹5¬»¸ÄX  moduleH<newsBØP ¹5¬¾qcð ›Arial ¹5­¹5­ö·’LANDÿÿÿÿÿÿwinThis script runs every hour. „›€Ô†® PArial€&¢$ »˜Œæ»˜Œæ?Þ³/LANDÿÿÿÿÿÿwinreturn (myRadioSuite.edit.prefs ()) €€ÔœArial ¹5­¹5­ö·’LANDÿÿÿÿÿÿwinThis script runs every night. „œ{w.¹5­»¸ÄX  ". 9 everyHourš everyMinute5 everyNight›¥{€¸· UArial ºy¢©ºy¢©s$‘LANDÿÿÿÿÿÿwinon storyArrived (adrservice,adritem) adrservice^.timeLastStoryArrived = clock.now() €€€Ù¤Arial ºy¢©ºy¢©z,Y7LANDÿÿÿÿÿÿwinon subscribeService (url,adrservice) local(adrdata = parentOf(parentOf(adrservice^)^)) myRadioSuite.newsViews.setUnsorted(adrdata) myRadioSuite.newsViews.exportToOpml(adrdata) subscribeService("",@aggregatorData.services.["http://radio.weblogs.com/0100875/rss.xml"]) €€€€€€‰ŒöArial ºy¢©ºy¢©;:É?LANDÿÿÿÿÿÿwinon unsubscribeService (url,adrservice) should also remove this feed from selections on other pages local(adrdata = parentOf(parentOf(adrservice^)^)) myRadioSuite.newsViews.setUnsorted(adrdata,url) myRadioSuite.newsViews.exportToOpml(adrdata) €„€€€€!‹‡.¹È¦ ºy¢©  *6 I storyArrivedœÔsubscribeService¹unsubscribeServiceŸi€¸ ¹5­¹Ñ ? ¹5­»ñÍ €5Ó)E©• MS Sans Serif JêKyp€Ù  ( -9 >J R^ ck qedit§ß getoptions-·htmlÎÓinit¥óoptionsÐsidewidetitleJToday's Front Pages€&ÀL08Arial ºq Hºq• 4:zLANDÿÿÿÿÿÿwinon init () first rev; 2/13/2003 if ! defined (myRadioData.modules) new(tabletype, @myRadioData.modules) if ! defined (myRadioData.modules.todaysnews) new(tabletype, @myRadioData.modules.todaysnews) if ! defined (myRadioData.modules.todaysnews.keys) new(tabletype, @myRadioData.modules.todaysnews.keys) €„€€€€€€€à:ªArial º 7úqÖ­LANDÿÿÿÿÿÿwinon edit (pta,args,page) first rev :: 2/13/2003 myRadioSuite.edit.list(pta,args,page,@myRadioMyRadio.modules.todaysnews.options,@myRadioData.modules.todaysnews.keys) €„€€€O€Ðçõjº Y8ºß-  - 8D S¤ ®¸ Ç;#‚C M] h actionURI/soapeditname Stock Tickers methodNamegetQuotenuggettemplateM##KEY## ##VALUE## paramnameSymbolresulttemplatep##KEY####VALUE##rpcPort rpcServer 66.28.98.121 soapActionurn:xmethods-delayed-quotesù€Ëçõ´Ÿ »œù껜ùêQ-±ÆLANDÿÿÿÿÿÿwinon menu(page,modulenum) local (formref,formname,buf="") on option (text, value) return "