If anyone is intersted.. I have been hacking around with the rssx.xml file to create comics.xml..  It uses the tapestry rss feed to display any of a bunch of different daily comic strips..   The strips stay up until the focus is changed...
 
Examples:
B.C. comics /bc
Big Nate comics /bignate
Dilbert comics /dilbert
Drabble comics /drabble
Get Fuzzy comics /fuzzy
Liberty Meadows comics /liberty
Over the Hedge comics /hedge
Peanuts comics /peanuts
Pearls Before Swine comics /pearls
Penny Arcade comics /penny
PvP comics /pvp
Ripley's Believe It or Not! comics /ripleys
Rudy Park comics /rudy
TrueNuff comics /truenuff
User Friendly comics /friendly
Wizard of Id comics /id
 
 
<search function="comics">
  <name>Comics</name>
  <description>Displays a daily comic strip.
    <div class="helpboxDescLabels">Switches:</div>
    <table class="helpboxDescTable">
      <tr><td> Comic Name   </td></tr>
    </table>
    <div class="helpboxDescLabels">Examples:</div>
    <table class="helpboxDescTable">
    <tr><td>B.C.</td><td>comics /bc</td></tr>
    <tr><td>Big Nate</td><td>comics /bignate</td></tr>
    <tr><td>Dilbert </td><td>comics /dilbert</td></tr>
    <tr><td>Drabble </td><td>comics /drabble</td></tr>
    <tr><td>Get Fuzzy </td><td>comics /fuzzy</td></tr>
    <tr><td>Liberty Meadows </td><td>comics /liberty</td></tr>
    <tr><td>Over the Hedge </td><td>comics /hedge</td></tr>
    <tr><td>Peanuts </td><td>comics /peanuts</td></tr>
    <tr><td>Pearls Before Swine</td><td>comics /pearls</td></tr> 
    <tr><td>Penny Arcade </td><td>comics /penny</td></tr>
    <tr><td>PvP </td><td>comics /pvp</td></tr>
    <tr><td>Ripley's Believe It or Not!</td><td>comics /ripleys</td></tr>
    <tr><td>Rudy Park </td><td>comics /rudy</td></tr>
    <tr><td>TrueNuff </td><td>comics /truenuff</td></tr>
    <tr><td>User Friendly </td><td>comics /friendly</td></tr>
    <tr><td>Wizard of Id </td><td>comics /id</td></tr>
    </table>
  </description>
  <category>Functions</category>
  <contributor>Shawn K. Hall</contributor>
  <script><![CDATA[
    function comics(q){
       if( nullArgs("comics",q) ) {
       qsfind("comics");
       return false;
       }

// 	if (q == "/stop"){
//	  comicsSearchTerminate = true;
//	  comicsDisplayAgain= false;
//	  comicsSearchArray = comicsSearchArray.slice(comicsSearchArray.length);
//	  setSearchWindowText("comics terminated");
//	  return false;
//	}

 	if (q == "/dilbert"){
 	   var sUrl = "http://dwlt.net/tapestry/dilbert.rdf";;
 	}
 	if (q == "/bc"){
 	   var sUrl = "http://dwlt.net/tapestry/bc.rdf";;
 	} 
 	if (q == "/bignate"){
 	   var sUrl = "http://dwlt.net/tapestry/bignate.rdf";;
 	} 
 	if (q == "/drabble"){
 	   var sUrl = "http://dwlt.net/tapestry/drabble.rdf";;
 	} 
 	if (q == "/fuzzy"){
 	   var sUrl = "http://dwlt.net/tapestry/getfuzzy.rdf";;
 	} 
 	if (q == "/liberty"){
 	   var sUrl = "http://dwlt.net/tapestry/liberty.rdf";;
 	} 
 	if (q == "/hedge"){
 	   var sUrl = "http://dwlt.net/tapestry/hedge.rdf ";
 	} 
 	if (q == "/peanuts"){
 	   var sUrl = "http://dwlt.net/tapestry/peanuts.rdf ";
 	} 
 	if (q == "/pearls"){
 	   var sUrl = "http://dwlt.net/tapestry/pearls.rdf ";
 	} 
 	if (q == "/penny"){
 	   var sUrl = "http://dwlt.net/tapestry/pa.rdf";;
 	} 
 	if (q == "/pvp"){
 	   var sUrl = "http://dwlt.net/tapestry/pvponline.rdf";;
 	} 
 	if (q == "/ripleys"){
 	   var sUrl = "http://dwlt.net/tapestry/ripleys.rdf";;
 	} 
 	if (q == "/rudy"){
 	   var sUrl = "http://dwlt.net/tapestry/rudypark.rdf";;
 	} 
 	if (q == "/truenuff"){
 	   var sUrl = "http://dwlt.net/tapestry/truenuff.rdf";;
 	} 
 	if (q == "/friendly"){
 	   var sUrl = "http://dwlt.net/tapestry/uf.rdf";;
 	} 
 	if (q == "/id"){
 	   var sUrl = "http://dwlt.net/tapestry/wid.rdf ";
 	} 

	try{
	//attempt to obtain the remote RSS feed
	  var xmlHttp = new ActiveXObject("Microsoft.XmlHttp");
	  xmlHttp.onreadystatechange = function() { 
		 if (xmlHttp.readyState==4) {
		  comicsXmlParser( xmlHttp, sUrl );
		 }
		};
	  xmlHttp.open("GET", sUrl, true);
	  xmlHttp.setRequestHeader ( "Accept", "application/xml, text/xml, text/rss, application/xml+rdf, */*" );
	  xmlHttp.setRequestHeader ( "User-Agent", "Mozilla/4.0 (compatible; DQSD ( http://www.dqsd.net/ ); comics Search ( http://ReliableAnswers.com/x/dqsd/ ))" );
	  xmlHttp.send(null);
	}catch(e){
	  alert("comics: Failure!\n" + e.number + "::" + e.description);
	}
    }//function

function comicsXmlParser( xmlHttp, sUrl ){
 if (comicsSearchTerminate == true) {return false;}
 var sBuild = "";
 try{
//get the response content from the remote site
  var sBody = xmlHttp.responseText;
  sBody = sBody.replace(/(\<\?xml-stylesheet[^>]*>)/gim,"<!-- $1 -->");
  var xBody = new ActiveXObject("MSXML2.DOMDocument");
  xBody.loadXML( sBody );
  if(xBody.parseError.errorCode != 0)
    throw new Error(0, "RSS is not well-formed.\nParse error: " + xBody.parseError.reason + " line: " + xBody.parseError.line.toString() + ", col: " + xBody.parseError.linepos.toString() + "\n" + xBody.parseError.srcText);

//parse it
  var xElement = xBody.documentElement;

//rss version, capabilities and format
//default paths and properties
  var rDate    = "pubdate";
  var rLanguage= "";
  var rItems   = "item";
  var rImage   = "image";
  var rInput   = "textinput";
  var rVersion = "";
  var rSyPeriod= "";
  var rSyFreq  = "";
  var rContent = "";
  var rsTitle  = "";
  var rsImage  = "";
  var rsLink   = "";

//document element name
  var rDocElem = xElement.nodeName;

//version="1.0"
  xNode = xElement.attributes.getNamedItem("version");
  if (xNode != null) rVersion = xNode.nodeTypedValue;
  switch (rVersion){
	case "":	rItems = "item"; rImage = "image"; rInput = "textinput"; break;
	case "0.9":
	case "0.91":
	case "0.92":
	case "1.0":
	case "2.0":
	default:
		rItems = "channel/item"; rImage = "channel/image"; rInput = "channel/textinput"; break;
  }

//xmlns="http://purl.org/rss/1.0/";
  xNode = xElement.attributes.getNamedItem("xmlns");
  var rXmlns = ((xNode != null) ? xNode.nodeTypedValue : "");

//xmlns:dc="http://purl.org/dc/elements/1.1/";
  xNode = xElement.attributes.getNamedItem("xmlns:dc");
  var rXmlnsDc = ((xNode != null) ? xNode.nodeTypedValue : "");
  if (rXmlnsDc != "") {
    rDate = "dc:date";
    xNode = xElement.selectSingleNode("channel");
    if (xNode != null) {
      xNodeSub = xNode.selectSingleNode("dc:language");
      if (xNodeSub != null) rLanguage = xNodeSub.nodeTypedValue;
    }
  }

//xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
  xNode = xElement.attributes.getNamedItem("xmlns:rdf");
  var rXmlnsRdf= ((xNode != null) ? xNode.nodeTypedValue : "");

//xmlns:sy="http://purl.org/rss/1.0/modules/syndication/";
  xNode = xElement.attributes.getNamedItem("xmlns:sy");
  var rXmlnsSy = ((xNode != null) ? xNode.nodeTypedValue : "");
  if (rXmlnsSy != "") {
    xNode = xElement.selectSingleNode("channel");
    if (xNode != null) {
      xNodeSub = xNode.selectSingleNode("sy:UpdatePeriod");
      if (xNodeSub != null) rSyPeriod = xNodeSub.nodeTypedValue;
      xNodeSub = xNode.selectSingleNode("sy:UpdateFrequency");
      if (xNodeSub != null) rSyFreq   = xNodeSub.nodeTypedValue;
    }
  }

//xmlns:content="http://purl.org/rss/1.0/modules/content/";
  xNode = xElement.attributes.getNamedItem("xmlns:content");
  var rXmlnsContent = ((xNode != null) ? xNode.nodeTypedValue : "");
  if (rXmlnsContent != "") rContent = "content:encoded";

//obtain image/title/link properties
  xNode = xElement.selectSingleNode( rImage );
  if (xNode != null) {
    xNodeSub = xNode.selectSingleNode("title");
    if (xNodeSub != null) rsTitle= xNodeSub.nodeTypedValue;
    xNodeSub = xNode.selectSingleNode("url");
    if (xNodeSub != null) rsImage= xNodeSub.nodeTypedValue;
    xNodeSub = xNode.selectSingleNode("link");
    if (xNodeSub != null) rsLink = xNodeSub.nodeTypedValue;
  }

//enumerate RSS items
  var xNodes = xElement.selectNodes( rItems );
  for (i=0; i < xNodes.length; i++){
  //get variables for this resource
    var xNode = xNodes.item(i);
    xNodeSub  = xNode.selectSingleNode("title");
    var sTitle= ((xNodeSub != null) ? xNodeSub.nodeTypedValue : "");
    xNodeSub  = xNode.selectSingleNode("description");
    var sDesc = ((xNodeSub != null) ? xNodeSub.nodeTypedValue : "");
    sDesc = sDesc.replace(/<a[\s]*[^>]href="([^"]+)"[^>]*>/gim,"<a onClick=\"window.parent.openSearchWindow('$1')\">");
    xNodeSub  = xNode.selectSingleNode("link");
    var sLink = ((xNodeSub != null) ? xNodeSub.nodeTypedValue : "");
    if (sLink == ""){
      xNodeSub  = xNode.selectSingleNode("guid");
      var sLink = ((xNodeSub != null) ? xNodeSub.nodeTypedValue : "");
    }
    if (rContent != ""){
      xNodeSub  = xNode.selectSingleNode( rContent );
      var sContent = ((xNodeSub != null) ? xNodeSub.nodeTypedValue : "");
      sContent = sContent.replace(/<a[\s]*[^>]href="([^"]+)"[^>]*>/gim,"<a onClick=\"window.parent.openSearchWindow('$1')\">");
    }else{
      var sContent = "";
    }

  //append this record
    sBuild = "";
    sBuild+= "<table width=\"100%\" border=\"0\"><tr>";
    if (rsLink != ""){
      sBuild+= "<td width=\"5%\">";
      sBuild+= "<a href=\"" + rsLink + "\" title=\"" + rsTitle + "\">";
      if (rsImage != ""){
        sBuild+= "<img src=\"" + rsImage + "\" border=\"0\" />";
      }else{
	sBuild+= rsTitle;
      }
      sBuild+= "</a></td>";
    }
    sBuild+= "<td>";
    sBuild+= "<p align=\"left\"><b>" + sTitle + "</b></p>";
    sBuild+= "</td></tr>\n";
    sBuild+= "<tr><td colspan=\"2\">";
    sBuild+= "<p>" + sDesc + "</p>";
    if (sContent != ""){
      sBuild+= "<hr />" + sContent;
    }
    sBuild+= "</td></tr>\n";
    sBuild+= "</table>\n\n";
    comicsSearchArray[comicsSearchArray.length] = sBuild;
  }
  if (comicsSearchArray.length > 0){
    if (comicsDisplayAgain == false) displaycomicsSearchPopup();
  }
 }catch(e){
  alert("comics: Failure!\n" + e.number + "::" + e.description);
 }
}

var comicsSearchPopup;
var comicsSearchTerminate = false;
var comicsSearchIndex = 0;
var comicsSearchArray = Array();
var comicsDisplayAgain= false;
var comicsSearchURL   = '';

function displaycomicsSearchPopup(){
//mls
 
 var comicsContent = "undefined";
 try{
  if (comicsSearchArray.length>=1){
    var comicsContent = comicsSearchArray[0];
    comicsSearchArray = comicsSearchArray.slice(1);
  }
 }catch(e){}

 if (comicsContent != "undefined") {
  try{
   comicsSearchPopup = window.createPopup();
   var comicsSearchPopupBody = comicsSearchPopup.document.body;
   var comicsSearchPopupBodyCode = "<html><head></head><body>";
   comicsSearchPopupBodyCode += "<table id=rstable border=0 cellspacing=1 cellpadding=2 width=100% height=100%>";
   comicsSearchPopupBodyCode += "<tr><td valign=top><style>" + convertStylesToInline() + "</style>";
   comicsSearchPopupBodyCode += "<tr><td valign=top style='text-align: center' class=helpboxDescriptions>" + comicsContent;
   comicsSearchPopupBodyCode += "</tr></td></table></body></html>";
   comicsSearchPopupBody.innerHTML = comicsSearchPopupBodyCode;
   comicsSearchPopup.document.body.style.border="outset 2px";
   comicsSearchPopup.document.body.style.background='menu';
   //comicsSearchPopup.document.body.style.overflowY='auto';
   //comicsSearchPopup.document.body.style.overflowX='auto';
   
 // Temporarily show the popup to determine the proper final height for the popup.
   comicsSearchPopup.show(0, 0, windowW, 0);
   
   //set a min size for the window.. sometimes the initial window display doesnt get right values
   var windowW = comicsSearchPopupBody.scrollWidth -54;
   windowW = windowW > 400 ? windowW : 700;
   var windowH = comicsSearchPopupBody.scrollHeight +20;
   windowH = windowH > 200 ? windowH : 330;
   
//   alert('w- '+windowW+' h- '+windowH);
//mls   comicsSearchPopup.hide();
 // Display it
   comicsSearchPopup.show((buttonalign == "left" ? 0 : document.body.clientWidth - windowW), -windowH, windowW, windowH, document.body);
  }catch(e){
   comicsDisplayAgain = false;
  }
 }
 
comicsDisplayAgain= false;
comicsSearchArray = comicsSearchArray.slice(comicsSearchArray.length);
}

  ]]></script>
  <copyright>
  Copyright (c) 2004 Shawn K. Hall
  Distributed under the terms of the GNU Public License, Version 2 (http://www.gnu.org/copyleft/gpl.txt)
  </copyright>
</search>

Reply via email to