I had to go back 9 versions to find any reference to these two comics.. It appears they have not been part of the CVS version of comx for 15 months or so.. anyway I pasted the code in for them... give this one a try .. If it is ok I will check it in..
Monty

Brian wrote:
Hi all...

   I (finally) got around to refreshing things on the computer... Installed
the new(er) mwd.xml to get the popup feature (nice!) and the newest comx.xml
to get the editorial cartoons and to get Calvin and Hobbes working again --
unfortunately, it looks like somewhere along the chain, Joy of Tech and User
Friendly got dropped (again) from the xml file.  Is it possible to get those
back in the lineup?

 - Brian
<search function="comx">
    <name>Comic Strip</name>
    <description>Displays comic strip(s) in a single window.
    <table class="helpboxDescTable">
    <tr><td colspan="2"><div class="helpboxDescLabels">Note:</div> All the switches can be abbreviated and multiple switches can be specified at one time.</td></tr>
    <tr><td>--</td></tr><tr><td><div class="helpboxDescLabels">Switches:</div></td></tr>
    <tr><td>9 Chickweed Lane</td><td>/9chickweed</td></tr>
    <tr><td>A Case in Point</td><td>/caseinpoint</td></tr>
    <tr><td>Adam at Home</td><td>/adamathome</td></tr>
    <tr><td>Agnes</td><td>/agnes</td></tr>
    <tr><td>Alley Oop</td><td>/alleyoop</td></tr>
    <tr><td>Andy Capp</td><td>/andycapp</td></tr>
    <tr><td>Animal Crackers</td><td>/animalcrackers</td></tr>
    <tr><td>Annie</td><td>/annie</td></tr>
    <tr><td>Arlo and Janis</td><td>/arloandjanis</td></tr>
    <tr><td>B.C.</td><td>/bc</td></tr>
    <tr><td>Baldo</td><td>/baldo</td></tr>
    <tr><td>Ballard Street</td><td>/ballardstreet</td></tr>
    <tr><td>Ben</td><td>/ben</td></tr>
    <tr><td>Betty</td><td>/betty</td></tr>
    <tr><td>Big Nate</td><td>/bignate</td></tr>
    <tr><td>Big Picture</td><td>/bigpicture</td></tr>
    <tr><td>Big Top</td><td>/bigtop</td></tr>
    <tr><td>Bo Nanas</td><td>/bonanas</td></tr>
    <tr><td>Boondocks</td><td>/boondocks</td></tr>
    <tr><td>Bound and Gagged</td><td>/boundandgagged</td></tr>
    <tr><td>Brenda Starr</td><td>/brendastarr</td></tr>
    <tr><td>Broomhilda</td><td>/broomhilda</td></tr>
    <tr><td>Bulls N Bears</td><td>/bullsnbears</td></tr>
    <tr><td>CEO Dad</td><td>/ceodad</td></tr>
    <tr><td>Calvin and Hobbes</td><td>/calvinandhobbes</td></tr>
    <tr><td>Cats With Hands</td><td>/catswithhands</td></tr>
    <tr><td>Candorville</td><td>/candorville</td></tr>
    <tr><td>Cathy</td><td>/cathy</td></tr>
    <tr><td>Cheap Thrills</td><td>/cheapthrills</td></tr>
    <tr><td>Cleats</td><td>/cleats</td></tr>
    <tr><td>Close to Home</td><td>/closetohome</td></tr>
    <tr><td>Committed</td><td>/committed</td></tr>
    <tr><td>Cornered</td><td>/cornered</td></tr>
    <tr><td>Dick Tracy</td><td>/dicktracy</td></tr>
    <tr><td>Dilbert</td><td>/dilbert</td></tr>
    <tr><td>Doonesbury</td><td>/doonesbury</td></tr>
    <tr><td>Drabble</td><td>/drabble</td></tr>
    <tr><td>Dr. Fun</td><td>/drfun</td></tr>
    <tr><td>Duplex</td><td>/duplex</td></tr>
    <tr><td>Fat Cats</td><td>/fatcats</td></tr>
    <tr><td>Ferdnand</td><td>/ferdnand</td></tr>
    <tr><td>Flight Deck</td><td>/flightdeck</td></tr>
    <tr><td>Flo and Friends</td><td>/floandfriends</td></tr>
    <tr><td>For Better or For Worse</td><td>/forbetterorforworse</td></tr>
    <tr><td>FoxTrot</td><td>/foxtrot</td></tr>
    <tr><td>Frank and Ernest</td><td>/frankandernest</td></tr>
    <tr><td>Frazz</td><td>/frazz</td></tr>
    <tr><td>Fred Basset</td><td>/fredbasset</td></tr>
    <tr><td>Fusco Brothers</td><td>/fuscobrothers</td></tr>
    <tr><td>Garfield</td><td>/garfield</td></tr>
    <tr><td>Gasoline Alley</td><td>/gasolinealley</td></tr>
    <tr><td>Geech</td><td>/geech</td></tr>
    <tr><td>Get Fuzzy</td><td>/getfuzzy</td></tr>
    <tr><td>Go Fish</td><td>/gofish</td></tr>
    <tr><td>Graffiti</td><td>/graffiti</td></tr>
    <tr><td>Grand Avenue</td><td>/grandavenue</td></tr>
    <tr><td>Heart of the City</td><td>/heartofthecity</td></tr>
    <tr><td>Heathcliff</td><td>/heathcliff</td></tr>
    <tr><td>Helen of the Internet</td><td>/helenoftheinternet</td></tr>
    <tr><td>Herb and Jamaal</td><td>/herbandjamaal</td></tr>
    <tr><td>Herman</td><td>/herman</td></tr>
    <tr><td>Housebroken</td><td>/housebroken</td></tr>
    <tr><td>In the Bleachers</td><td>/inthebleachers</td></tr>
    <tr><td>Janes World</td><td>/janesworld</td></tr>
    <tr><td>Jump Start</td><td>/jumpstart</td></tr>
    <tr><td>Kit N Carlyle</td><td>/kitncarlyle</td></tr>
    <tr><td>Kudzu</td><td>/kudzu</td></tr>
    <tr><td>La Cucaracha</td><td>/lacucaracha</td></tr>
    <tr><td>Liberty Meadows</td><td>/libertymeadows</td></tr>
    <tr><td>Lil Abner</td><td>/lilabner</td></tr>
    <tr><td>Lola</td><td>/lola</td></tr>
    <tr><td>Loose Parts</td><td>/looseparts</td></tr>
    <tr><td>Lost Sheep</td><td>/lostsheep</td></tr>
    <tr><td>Luann</td><td>/luann</td></tr>
    <tr><td>Lucky Cow</td><td>/luckycow</td></tr>
    <tr><td>Lupo Alberto</td><td>/lupoalberto</td></tr>
    <tr><td>Marmaduke</td><td>/marmaduke</td></tr>
    <tr><td>Meatloaf Night</td><td>/meatloafnight</td></tr>
    <tr><td>Meehan Streak</td><td>/meehanstreak</td></tr>
    <tr><td>Meg!</td><td>/meg</td></tr>
    <tr><td>Mister Boffo</td><td>/misterboffo</td></tr>
    <tr><td>Mixed Media</td><td>/mixedmedia</td></tr>
    <tr><td>Moderately Confused</td><td>/moderatelyconfused</td></tr>
    <tr><td>Momma</td><td>/momma</td></tr>
    <tr><td>Monty</td><td>/monty</td></tr>
    <tr><td>Motley</td><td>/motley</td></tr>
    <tr><td>Mullets</td><td>/mullets</td></tr>
    <tr><td>Nancy</td><td>/nancy</td></tr>
    <tr><td>Natural Selection</td><td>/naturalselection</td></tr>
    <tr><td>Nonsequitur</td><td>/nonsequitur</td></tr>
    <tr><td>Off The Mark</td><td>/offthemark</td></tr>
    <tr><td>One Big Happy Classics</td><td>/onebighappyclassics</td></tr>
    <tr><td>Out of the Gene Pool</td><td>/outofthegenepool</td></tr>
    <tr><td>Over the Hedge</td><td>/overthehedge</td></tr>
    <tr><td>Overboard</td><td>/overboard</td></tr>
    <tr><td>PC and Pixel</td><td>/pcandpixel</td></tr>
    <tr><td>Peanuts</td><td>/peanuts</td></tr>
    <tr><td>Pearls Before Swine</td><td>/pearlsbeforeswine</td></tr>
    <tr><td>Pibgorn</td><td>/pibgorn</td></tr>
    <tr><td>Pickles</td><td>/pickles</td></tr>
    <tr><td>Pluggers</td><td>/pluggers</td></tr>
    <tr><td>Pooch Cafe</td><td>/poochcafe</td></tr>
    <tr><td>Pop Culture</td><td>/popculture</td></tr>
    <tr><td>Preteena</td><td>/preteena</td></tr>
    <tr><td>Raising Duncan</td><td>/raisingduncan</td></tr>
    <tr><td>Real Life Adventures</td><td>/reallife</td></tr>
    <tr><td>Reality Check</td><td>/realitycheck</td></tr>
    <tr><td>Red and Rover</td><td>/redandrover</td></tr>
    <tr><td>Reynolds Unwrapped</td><td>/reynoldsunwrapped</td></tr>
    <tr><td>Ripleys Believe It or Not</td><td>/ripleysbelieveitornot</td></tr>
    <tr><td>Rose Is Rose</td><td>/roseisrose</td></tr>
    <tr><td>Rubes</td><td>/rubes</td></tr>
    <tr><td>Rudy Park</td><td>/rudypark</td></tr>
    <tr><td>Sheldon</td><td>/sheldon</td></tr>
    <tr><td>Shirley And Son</td><td>/shirleyandson</td></tr>
    <tr><td>Shoe</td><td>/shoe</td></tr>
    <tr><td>Soup To Nutz</td><td>/souptonutz</td></tr>
    <tr><td>Speed Bump</td><td>/speedbump</td></tr>
    <tr><td>Spot The Frog</td><td>/spotthefrog</td></tr>
    <tr><td>Stone Soup</td><td>/stonesoup</td></tr>
    <tr><td>Strange Brew</td><td>/strangebrew</td></tr>
    <tr><td>Tank Mcnamara</td><td>/tankmcnamara</td></tr>
    <tr><td>Tarzan</td><td>/tarzan</td></tr>
    <tr><td>Thats Life</td><td>/thatslife</td></tr>
    <tr><td>The Born Loser</td><td>/bornloser</td></tr>
    <tr><td>The Buckets</td><td>/buckets</td></tr>
    <tr><td>The Grizzwells</td><td>/grizzwells</td></tr>
    <tr><td>The Joy of Tech</td><td>/joyoftech</td></tr>
    <tr><td>The Other Coast</td><td>/othercoast</td></tr>
    <tr><td>The Sunshine Club</td><td>/sunshineclub</td></tr>
    <tr><td>Top of the World!</td><td>/topoftheworld</td></tr>
    <tr><td>User Friendly</td><td>/userfriendly</td></tr>
    <tr><td>Willy n Ethel</td><td>/willynethel</td></tr>
    <tr><td>Wizard of Id</td><td>/wizardofid</td></tr>
    <tr><td>Working Daze</td><td>/workingdaze</td></tr>
    <tr><td>Working It Out</td><td>/workingitout</td></tr>
    <tr><td>Ziggy</td><td>/ziggy</td></tr>
    <tr><td>Zits</td><td>/zits</td></tr>
    <tr><td colspan="2"><div class="helpboxDescLabels">Editorials (not published every day):</div></td></tr>
    <tr><td>All editorials for today</td><td>/editorials</td></tr>
    <tr><td>Animated Oliphant</td><td>/animatedoliphant</td></tr>
    <tr><td>Ann Telneas</td><td>/anntelneas</td></tr>
    <tr><td>Barbara Brandon</td><td>/barbarabrandon</td></tr>
    <tr><td>Ben Sargent</td><td>/bensargent</td></tr>
    <tr><td>Bill Deore</td><td>/billdeore</td></tr>
    <tr><td>Chan Lowe</td><td>/chanlowe</td></tr>
    <tr><td>Chip Bok</td><td>/chipbok</td></tr>
    <tr><td>Chuck Asay</td><td>/chuckasay</td></tr>
    <tr><td>Dana Summers</td><td>/danasummers</td></tr>
    <tr><td>Dana Wasserman</td><td>/danawasserman</td></tr>
    <tr><td>David Horsey</td><td>/davidhorsey</td></tr>
    <tr><td>Dick Locher</td><td>/dicklocher</td></tr>
    <tr><td>Dick Wright</td><td>/dickwright</td></tr>
    <tr><td>Don Wright</td><td>/donwright</td></tr>
    <tr><td>Doug Marlette</td><td>/dougmarlette</td></tr>
    <tr><td>Drew Sheneman</td><td>/drewsheneman</td></tr>
    <tr><td>Faces In The News</td><td>/facesinthenews</td></tr>
    <tr><td>Gary Varvel</td><td>/garyvarvel</td></tr>
    <tr><td>Glenn McCoy</td><td>/glennmccoy</td></tr>
    <tr><td>Jack Higgins</td><td>/jackhiggins</td></tr>
    <tr><td>Jack Ohman</td><td>/jackohman</td></tr>
    <tr><td>Jeff Danziger</td><td>/jeffdanziger</td></tr>
    <tr><td>Lalo Alcaraz</td><td>/laloalcaraz</td></tr>
    <tr><td>Matt Davies</td><td>/mattdavies</td></tr>
    <tr><td>Mike Luckovich</td><td>/mikeluckovich</td></tr>
    <tr><td>Nick Anderson</td><td>/nickanderson</td></tr>
    <tr><td>Pat Oliphant</td><td>/patoliphant</td></tr>
    <tr><td>Paul Conrad</td><td>/paulconrad</td></tr>
    <tr><td>Paul Szep</td><td>/paulszep</td></tr>
    <tr><td>Signe Wilkinson</td><td>/signewilkinson</td></tr>
    <tr><td>Steve Sack</td><td>/stevesack</td></tr>
    <tr><td>Stuart Carlson</td><td>/stuartcarlson</td></tr>
    <tr><td>Ted Rall</td><td>/tedrall</td></tr>
    <tr><td>Tom Toles</td><td>/tomtoles</td></tr>
    <tr><td>Tony Auth</td><td>/tonyauth</td></tr>
    <tr><td>Walt Handelsman</td><td>/walthandelsman</td></tr>
    <tr><td>Wayne Stayskal</td><td>/waynestayskal</td></tr>
    <tr><td colspan="2"><div class="helpboxDescLabels">Examples:</div></td></tr>
    <tr><td>comx /wiz   </td><td>(Wizard of Id)</td></tr>
    <tr><td>comx /workingit  </td><td>(Working it Out)</td></tr>
    <tr><td>comx /rip   </td><td>(Ripleys Believe it or Not)</td></tr>
    <tr><td>comx /wiz /workingit /rip</td><td>(Opens all three)</td></tr>
    <tr><td>comx /dil /editorials</td><td>Opens Dilbert and all editorial cartoons for today</td></tr>
    </table>
    </description>
    <category>Fun</category>
    <script><![CDATA[

  function comx(q){
     if( q == "" || q == "?"){
        qsfind("comx /function");
        return false;
     }
     var comxoutfile = DQSDLauncher.AppDataDirectory + '\\comx.html';     
     var pagebody="<html>\n<head>\n<style>h4 {color:#900000;margin:0;}img {margin-bottom:16px;}</style>\n</head>\n<body>\n";
     
   var editorial_switches = new Array(
    "animatedoliphant","anntelneas","barbarabrandon","bensargent", "billdeore","chanlowe",
    "chipbok","chuckasay","danasummers","danawasserman","davidhorsey","dicklocher",
    "dickwright","donwright","dougmarlette","drewsheneman","facesinthenews","garyvarvel",
    "glennmccoy","jackhiggins","jackohman","jeffdanziger","laloalcaraz", "mattdavies",
    "mikeluckovich","nickanderson","patoliphant","paulconrad","paulszep","signewilkinson",
    "stevesack","stuartcarlson","tedrall","tomtoles","tonyauth","walthandelsman","waynestayskal"
    );

   if (q.search("/editorials") >= 0) {
    q = q.replace("/editorials", "/" + editorial_switches.join(" /"));
   }

     var args = parseArgs(q, "9chickweedlane,agnes,alleyoop,andycapp,arloandjanis,bc,\
     ballardstreet,ben,betty,bignate,bonanas,bornloser,buckets,bullsnbears,candorville,\
     caseinpoint,ceodad,cheapthrills,committed,drabble,drfun,fatcats,ferdnand,\
     flightdeck,floandfriends,forbetterorforworse,frankandernest,frazz,geech,getfuzzy,\
     gofish,graffiti,grandavenue,grizzwells,heathcliff,herbandjamaal,herman,\
     janesworld,jumpstart,kitncarlyle,libertymeadows,lilabner,luann,lupoalberto,marmaduke,\
     meatloafnight,meg,moderatelyconfused,momma,monty,motley,nancy,naturalselection,\
     offthemark,onebighappyclassics,othercoast,outofthegenepool,overthehedge,pcandpixel,\
     pearlsbeforeswine,pibgorn,pickles,raisingduncan,realitycheck,redandrover,\
     ripleysbelieveitornot,roseisrose,rubes,rudypark,sheldon,shirleyandson,souptonutz,\
     speedbump,spotthefrog,strangebrew,sunshineclub,tarzan,thatslife,topoftheworld,\
     wizardofid,workingdaze,workingitout,peanuts,dilbert,animalcrackers,adamathome,annie,\
     baldo,bigpicture,bigtop,boondocks,boundandgagged,brendastarr,broomhilda,calvinandhobbes,\
     catswithhands,cathy,cleats,closetohome,cornered,dicktracy,doonesbury,duplex,foxtrot,fredbasset,\
     fuscobrothers,garfield,gasolinealley,heartofthecity,helenoftheinternet,housebroken,\
     inthebleachers,joyoftech,kudzu,lacucaracha,lola,looseparts,lostsheep,luckycow,meehanstreak,\
     middletons,misterboffo,mixedmedia,mullets,nonsequitur,overboard,pluggers,poochcafe,popculture,\
     preteena,reallife,reynoldsunwrapped,shoe,stonesoup,tankmcnamara,userfriendly,willynethel,ziggy,zits," + editorial_switches.join(','));

     if ( args.switches.length > 0 ){
        //get the current date
        var dat = new Date();
        for (i=0; i < args.switches.length; i++){

           var site=null;
           var endurl=null;
           var imgtitle=null;
           var imgkey=null;
           var urlstart=null;
           var endurl=null;
           var urlcat=null;
           var urldir=null;
       var editorial=false;

           //default regex for finding the image in the page source..
           var rx = /.+(\/archive\/images\/\w+\.\w+)"\s+ALT="Today's\s+Comic"/i;
           switch( args.switches[i].name ){
              case "9chickweedlane": endurl="comics/chickweed/index.html";break;
              case "agnes": endurl="creators/agnes/index.html";break;
              case "alleyoop": endurl="comics/alleyoop/index.html";break;
              case "andycapp": endurl="creators/andycapp/index.html";break;
              case "arloandjanis": endurl="comics/arlonjanis/index.html";break;
              case "bc": endurl="creators/bc/index.html";break;
              case "ballardstreet": endurl="creators/ballardst/index.html";break;
              case "ben": endurl="comics/ben/index.html";break;
              case "betty": endurl="comics/betty/index.html";break;
              case "bignate": endurl="comics/bignate/index.html";break;
              case "bonanas": endurl="wash/bonanas/index.html";break;
              case "bornloser": endurl="comics/bornloser/index.html";break;
              case "buckets": endurl="comics/buckets/index.html";break;
              case "bullsnbears": endurl="comics/bullsnbears/index.html";break;
              case "candorville": endurl="wash/candorville/index.html";break;
              case "caseinpoint": endurl="comics/acaseinpoint/index.html";break;
              case "ceodad": endurl="creators/ceodad/index.html";break;
              case "cheapthrills": endurl="wash/cheapthrills/index.html";break;
              case "committed": endurl="comics/committed/index.html";break;
              case "dilbert": endurl="comics/dilbert/index.html"; imgtitle="Dilbert"; break;
              case "drabble": endurl="comics/drabble/index.html";break;
              case "fatcats": endurl="comics/fatcats/index.html";break;
              case "ferdnand": endurl="comics/ferdnand/index.html";break;
              case "flightdeck": endurl="creators/flightdeck/index.html";break;
              case "floandfriends": endurl="creators/floandfriends/index.html";break;
              case "forbetterorforworse": endurl="comics/forbetter/index.html";break;
              case "frankandernest": endurl="comics/franknernest/index.html";break;
              case "frazz": endurl="comics/frazz/index.html";break;
              case "geech": endurl="comics/geech/index.html";break;
              case "getfuzzy": endurl="comics/getfuzzy/index.html";break;
              case "gofish": endurl="comics/gofish/index.html";break;
              case "graffiti": endurl="comics/graffiti/index.html";break;
              case "grandavenue": endurl="comics/grandave/index.html";break;
              case "grizzwells": endurl="comics/grizzwells/index.html";break;
              case "heathcliff": endurl="creators/heathcliff/index.html";break;
              case "herbandjamaal": endurl="creators/herbnjamaal/index.html";break;
              case "herman": endurl="comics/herman/index.html";break;
              case "janesworld": endurl="comics/janesworld/index.html";break;
              case "joyoftech": imgtitle="The Joy of Tech";site="joyoftech";imgkey="jot";break;
              case "jumpstart": endurl="comics/jumpstart/index.html";break;
              case "kitncarlyle": endurl="comics/kitncarlyle/index.html";break;
              case "libertymeadows": endurl="creators/liberty/index.html";break;
              case "lilabner": endurl="comics/lilabner/index.html";break;
              case "luann": endurl="comics/luann/index.html";break;
              case "lupoalberto": endurl="comics/lupo/index.html";break;
              case "marmaduke": endurl="comics/marmaduke/index.html";break;
              case "meatloafnight": endurl="comics/meatloaf/index.html";break;
              case "meg": endurl="comics/meg/index.html";break;
              case "moderatelyconfused": endurl="comics/moderatelyconfused/index.html";break;
              case "momma": endurl="creators/momma/index.html";break;
              case "monty": endurl="comics/monty/index.html";break;
              case "motley": endurl="comics/motley/index.html";break;
              case "nancy": endurl="comics/nancy/index.html";break;
              case "naturalselection": endurl="creators/naturalselection/index.html";break;
              case "offthemark": endurl="comics/offthemark/index.html";break;
              case "onebighappyclassics": endurl="creators/onebighappy/index.html";break;
              case "othercoast": endurl="creators/othercoast/index.html";break;
              case "outofthegenepool": endurl="wash/genepool/index.html";break;
              case "overthehedge": endurl="comics/hedge/index.html";break;
              case "pcandpixel": endurl="wash/pcnpixel/index.html";break;
              case "pearlsbeforeswine": endurl="comics/pearls/index.html";break;
              case "pibgorn": endurl="comics/pibgorn/index.html";break;
              case "pickles": endurl="wash/pickles/index.html";break;
              case "raisingduncan": endurl="comics/raisingduncan/index.html";break;
              case "realitycheck": endurl="comics/reality/index.html";break;
              case "redandrover": endurl="wash/redandrover/index.html";break;
              case "ripleysbelieveitornot": endurl="comics/ripleys/index.html";break;
              case "roseisrose": endurl="comics/roseisrose/index.html";break;
              case "rubes": endurl="creators/rubes/index.html";break;
              case "rudypark": endurl="comics/rudypark/index.html";break;
              case "sheldon": endurl="comics/sheldon/index.html";break;
              case "shirleyandson": endurl="comics/shirleynson/index.html";break;
              case "souptonutz": endurl="comics/soup2nutz/index.html";break;
              case "speedbump": endurl="creators/speedbump/index.html";break;
              case "spotthefrog": endurl="comics/spotthefrog/index.html";break;
              case "strangebrew": endurl="creators/strangebrew/index.html";break;
              case "sunshineclub": endurl="comics/sunshineclub/index.html";break;
              case "tarzan": endurl="comics/tarzan/index.html";break;
              case "thatslife": endurl="wash/thatslife/index.html";break;
              case "topoftheworld": endurl="comics/topofworld/index.html";break;
              case "wizardofid": endurl="creators/wizardofid/index.html";break;
              case "workingdaze": endurl="comics/workingdaze/index.html";break;
              case "workingitout": endurl="creators/workingitout/index.html";break;
              // the oddball one.. has to have its own rx pattern
              case "peanuts": endurl="comics/peanuts/index.html";rx=/.+(\/archive\/images\/\w+\.\w+)"\s+ALT="Today's Strip"/;imgtitle="Peanuts";break;
              // comics from ucomics.com
              case "animalcrackers": imgtitle="Animal Crackers";site="ucomics";imgkey="tmani";break;
              case "adamathome": imgtitle="Adam at Home";site="ucomics";imgkey="ad";break;
              case "annie": imgtitle="Annie";site="ucomics";imgkey="tmann";break;
              case "baldo": imgtitle="Baldo";site="ucomics";imgkey="ba";break;
              case "bigpicture": imgtitle="Big Picture";site="ucomics";imgkey="bi";break;
              case "bigtop": imgtitle="Big Top";site="ucomics";imgkey="bt";break;
              case "boondocks": imgtitle="Boondocks";site="ucomics";imgkey="bo";break;
              case "boundandgagged": imgtitle="Bound and Gagged";site="ucomics";imgkey="tmbou";break;
              case "brendastarr": imgtitle="Brenda Starr";site="ucomics";imgkey="tmbre";break;
              case "broomhilda": imgtitle="Broom Hilda";site="ucomics";imgkey="tmbro";break;
              case "cathy": imgtitle="Cathy";site="ucomics";imgkey="ca";break;
              case "catswithhands": imgtitle="Cats With Hands";site="ucomics";imgkey="tmcat";break;
              case "cleats": imgtitle="Cleats";site="ucomics";imgkey="cle";break;
              case "closetohome": imgtitle="Close to Home";site="ucomics";imgkey="cl";break;
              case "cornered": imgtitle="Cornered";site="ucomics";imgkey="co";break;
              case "dicktracy": imgtitle="Dick Tracy";site="ucomics";imgkey="tmdic";break;
              case "doonesbury": imgtitle="Doonesbury";site="ucomics";imgkey="db";break;
              case "duplex": imgtitle="Duplex";site="ucomics";imgkey="dp";break;
              case "foxtrot": imgtitle="Foxtrot";site="ucomics";imgkey="ft";break;
              case "fredbasset": imgtitle="Fred Basset";site="ucomics";imgkey="tmfba";break;
              case "fuscobrothers": imgtitle="Fusco Brothers";site="ucomics";imgkey="fu";break;
              case "garfield": imgtitle="Garfield";site="ucomics";imgkey="ga";break;
              case "gasolinealley": imgtitle="Gasoline Alley";site="ucomics";imgkey="tmgas";break;
              case "heartofthecity": imgtitle="Heart of the City";site="ucomics";imgkey="hc";break;
              case "helenoftheinternet": imgtitle="Helen of the Internet";site="ucomics";imgkey="tmhel";break;
              case "housebroken": imgtitle="Housebroken";site="ucomics";imgkey="tmhou";break;
              case "inthebleachers": imgtitle="In the Bleachers";site="ucomics";imgkey="bl";break;
              case "kudzu": imgtitle="Kudzu";site="ucomics";imgkey="tmkud";break;
              case "lacucaracha": imgtitle="La Cucaracha";site="ucomics";imgkey="lc";break;
              case "lola": imgtitle="Lola";site="ucomics";imgkey="tmlol";break;
              case "looseparts": imgtitle="Loose Parts";site="ucomics";imgkey="tmloo";break;
              case "lostsheep": imgtitle="Lost Sheep";site="ucomics";imgkey="lost";break;
              case "luckycow": imgtitle="Lucky Cow";site="ucomics";imgkey="luc";break;
              case "meehanstreak": imgtitle="Meehan Streak";site="ucomics";imgkey="tmmee";break;
              case "middletons": imgtitle="Middletons";site="ucomics";imgkey="tmmid";break;
              case "misterboffo": imgtitle="Mister Boffo";site="ucomics";imgkey="mb";break;
              case "mixedmedia": imgtitle="Mixed Media";site="ucomics";imgkey="tmmix";break;
              case "mullets": imgtitle="Mullets";site="ucomics";imgkey="mul";break;
              case "nonsequitur": imgtitle="Nonsequitur";site="ucomics";imgkey="nq";break;
              case "overboard": imgtitle="Overboard";site="ucomics";imgkey="ob";break;
              case "pluggers": imgtitle="Pluggers";site="ucomics";imgkey="tmplu";break;
              case "poochcafe": imgtitle="Pooch Cafe";site="ucomics";imgkey="poc";break;
              case "popculture": imgtitle="Pop Culture";site="ucomics";imgkey="pop";break;
              case "preteena": imgtitle="Preteena";site="ucomics";imgkey="pr";break;
              case "reallife": imgtitle="Real Life";site="ucomics";imgkey="rl";break;
              case "reynoldsunwrapped": imgtitle="Reynolds Unwrapped";site="ucomics";imgkey="rw";break;
              case "shoe": imgtitle="Shoe";site="ucomics";imgkey="tmsho";break;
              case "stonesoup": imgtitle="Stone Soup";site="ucomics";imgkey="ss";break;
              case "tankmcnamara": imgtitle="Tank Mcnamara";site="ucomics";imgkey="tm";break;
              case "willynethel": imgtitle="Willy n Ethel";site="ucomics";imgkey="wes";break;
              case "ziggy": imgtitle="Ziggy";site="ucomics";imgkey="zi";break;
              case "calvinandhobbes": imgtitle="Calvin And Hobbes";site="ucomics";imgkey="ch";break;
        // misc
              case "userfriendly": imgtitle="User Friendly";site="userfriendly";imgkey="uf";break;
              case "zits": imgtitle="Zits";site="seattlepi";imgkey="Zits";break;
              case "drfun": imgtitle="Dr. Fun"; site="drfun";imgkey="df";break;
              // editorials from ucomics.com
              case "animatedoliphant": imgtitle="Animated Oliphant";site="ucomics";imgkey="oa";editorial=true;break;
              case "anntelneas": imgtitle="Ann Telneas";site="ucomics";imgkey="tmate";editorial=true;break;
              case "barbarabrandon": imgtitle="Barbara Brandon";site="ucomics";imgkey="bb";editorial=true;break;
              case "bensargent": imgtitle="Ben Sargent";site="ucomics";imgkey="bs";editorial=true;break;
              case "billdeore": imgtitle="Bill DeOre";site="ucomics";imgkey="bd";editorial=true;break;
              case "chanlowe": imgtitle="Chan Lowe";site="ucomics";imgkey="tmclo";editorial=true;break;
              case "chipbok": imgtitle="Chip Bok";site="ucomics";imgkey="crcbo";editorial=true;break;
              case "chuckasay": imgtitle="Chuck Asay";site="ucomics";imgkey="crcas";editorial=true;break;
              case "danasummers": imgtitle="Dana Summers";site="ucomics";imgkey="tmdsu";editorial=true;break;
              case "danawasserman": imgtitle="Dana Wasserman";site="ucomics";imgkey="tmdwa";editorial=true;break;
              case "davidhorsey": imgtitle="David Horsey";site="ucomics";imgkey="tmdho";editorial=true;break;
              case "dicklocher": imgtitle="Dick Locher";site="ucomics";imgkey="tmdlo";editorial=true;break;
              case "dickwright": imgtitle="Dick Wright";site="ucomics";imgkey="tmdiw";editorial=true;break;
              case "donwright": imgtitle="Don Wright";site="ucomics";imgkey="tmdow";editorial=true;break;
              case "dougmarlette": imgtitle="Doug Marlette";site="ucomics";imgkey="tmdma";editorial=true;break;
              case "drewsheneman": imgtitle="Drew Sheneman";site="ucomics";imgkey="tmdsh";editorial=true;break;
              case "facesinthenews": imgtitle="Faces in the News";site="ucomics";imgkey="kw";editorial=true;break;
              case "garyvarvel": imgtitle="Gary Varvel";site="ucomics";imgkey="crgva";editorial=true;break;
              case "glennmccoy": imgtitle="Glenn McCoy";site="ucomics";imgkey="gm";editorial=true;break;
              case "jackhiggins": imgtitle="Jack Higgins";site="ucomics";imgkey="jh";editorial=true;break;
              case "jackohman": imgtitle="Jack Ohman";site="ucomics";imgkey="tmjoh";editorial=true;break;
              case "jeffdanziger": imgtitle="Jeff Danziger";site="ucomics";imgkey="jd";editorial=true;break;
              case "laloalcaraz": imgtitle="Lalo Alcaraz";site="ucomics";imgkey="la";editorial=true;break;
              case "mattdavies": imgtitle="Matt Davies";site="ucomics";imgkey="tmmda";editorial=true;break;
              case "mikeluckovich": imgtitle="Mike Luckovich";site="ucomics";imgkey="crmlu";editorial=true;break;
              case "nickanderson": imgtitle="Nick Anderson";site="ucomics";imgkey="wpnan";editorial=true;break;
              case "patoliphant": imgtitle="Pat Oliphant";site="ucomics";imgkey="po";editorial=true;break;
              case "paulconrad": imgtitle="Paul Conrad";site="ucomics";imgkey="tmpco";editorial=true;break;
              case "paulszep": imgtitle="Paul Szep";site="ucomics";imgkey="crpsz";editorial=true;break;
              case "signewilkinson": imgtitle="Signe Wilkinson";site="ucomics";imgkey="wpswi";editorial=true;break;
              case "stevesack": imgtitle="Steve Sack";site="ucomics";imgkey="tmssa";editorial=true;break;
              case "stuartcarlson": imgtitle="Stuart Carlson";site="ucomics";imgkey="sc";editorial=true;break;
              case "tedrall": imgtitle="Ted Rall";site="ucomics";imgkey="tr";editorial=true;break;
              case "tomtoles": imgtitle="Tom Toles";site="ucomics";imgkey="tt";editorial=true;break;
              case "tonyauth": imgtitle="Tony Auth";site="ucomics";imgkey="ta";editorial=true;break;
              case "walthandelsman": imgtitle="Walt Handelsman";site="ucomics";imgkey="tmwha";editorial=true;break;
              case "waynestayskal": imgtitle="Wayne Stayskal";site="ucomics";imgkey="tmwst";editorial=true;break;

              default:endurl=null;imgkey=null;break;
           }//switch

           //default to www.comics.com
           switch(site){
              case "altcomics": //not yet implemented break;
              case "drfun": imgurl = "http://www.ibiblio.org/Dave/Dr-Fun/latest.jpg";break;
              case "seattlepi":
                 if (typeof wgetExe == "undefined") {
                    pagebody += '<br><h4>' +imgtitle+'</h4><br>This comic requires <a href="http://xoomer.virgilio.it/hherold/";>wget</a> and uses WScript.Shell to invoke it.  Please set wgetExe in your localprefs.js file to the location of your wget.exe. For example:<br><br>wgetExe="c:\\\\bin\\\\wget";';
                    imgurl = "";
                 } else {
                    var mday = dat.getDate();
                    var month = dat.getMonth()+1;
                    var year = dat.getYear();
                    if (mday<10) mday= '0'+mday;
                    if (month<10) month= '0'+month;
        
                    imgurl = "http://pst.rbma.com/content/"; + imgkey + "?date=" + year + month + mday;
                    var output_file = DQSDLauncher.AppDataDirectory + '\\' + imgkey + '.gif';
                    var cmd = '"' + wgetExe + '" --referer="http://seattlepi.nwsource.com/fun/"; --output-document="' + output_file + '" "' + imgurl + '"';
                    var shell = new ActiveXObject("WScript.Shell");
                    alert(cmd);
                    shell.Run(cmd, 0, true);
                    imgurl = "file:///"+output_file;
                }
                break; 
              case "joyoftech":
                 var sUrl="http://www.geekculture.com/joyoftech/index.html";;
                 var xmlHttp = new ActiveXObject("Microsoft.XmlHttp");
                 xmlHttp.open("GET", sUrl, false);
                 xmlHttp.send();

                 //get the response content from the remote site
                 var sBody = xmlHttp.responseText;

                 // what I'm looking for
                 //<img src="joyimages/555.png" height="431" width="485" border="0">
                 var pattern = /joyimages\/\S+.[jpg|png|gif]/ig;
                 var result = sBody.match(pattern)[0];
                 var imgurl = "http://www.geekculture.com/joyoftech/"+result;
                 break;

              case "userfriendly":
                 var urlstart="http://ars.userfriendly.org/cartoons";;
                 // format the date param for today's comic
                 var mday = "0" + dat.getDate().toString();
                 var month = "0" + (dat.getMonth()+1);
                 var year = dat.getYear();

                 var sUrl=urlstart;
                 var xmlHttp = new ActiveXObject("Microsoft.XmlHttp");
                 xmlHttp.open("GET", sUrl, false);
                 xmlHttp.send();

                 //get the response content from the remote site
                 var sBody = xmlHttp.responseText;

                 // what I'm looking for
                 //<IMG ALT="Latest Strip" height="219" WIDTH="576" BORDER=0 SRC="http://www.userfriendly.org/cartoons/archives/04may/xuf006703.gif";>
                 var pattern = /http\:\S+userfriendly\.org\/cartoons\/\S+\.gif/ig;
                 var result = sBody.match(pattern);
                 var imgurl = result[0];
                 break;

              case "ucomics":
                 var urlstart="http://images.ucomics.com/comics/";;
                 if (editorial) {
                    urlstart="http://picayune.uclick.com/comics/";;
                 }
                 //get the other date parameters for the ucomics image urls
                 var mday = dat.getDate();
                 var month = dat.getMonth()+1;
                 var year = dat.getYear();
                 var subyear = year.toString();
                 subyear = subyear.substr(2,2);
                 if (mday<10) mday= '0'+mday;
                 if (month<10) month= '0'+month;

                 //special handling for the calvinandhobbes comic.. It displays for year 1993 in 2004
                 if (args.switches[i].name == "calvinandhobbes") {
                    var year_offset = -11;
                    year += year_offset;
                    subyear = year % 100; 
                 }
                 
                 var imgurl = urlstart+imgkey+"/"+year+"/"+imgkey+subyear+month+mday+".gif";
                 if (editorial) {
                    var xmlHttp = new ActiveXObject("Microsoft.XmlHttp");
                    var tries = 1;  // 1 == just try today's comic, > 1 look for previous days comics
                    var status = -1;
                    var cur_mday = mday;
                    while (status != 200 && tries > 0) {
                       imgurl = urlstart+imgkey+"/"+year+"/"+imgkey+subyear+month+cur_mday+".gif";
                        xmlHttp.open("HEAD", imgurl, false);
                        xmlHttp.send();
                        status = xmlHttp.status;
                        if (status == 200) {
                           // found it
                           break;
                        }
                     // none for today try previous day
                     imgurl = "";
                     tries--;
                     cur_mday--;
                     // should be smarter here and go to end of previous month
                     if (cur_mday < 1)
                        break;
                        if (cur_mday<10) cur_mday= '0'+cur_mday;
                     }
                 }
                 break;
                 
              default:
                 var urlstart="http://www.comics.com/";;

                 var sUrl=urlstart+endurl;
                 urlmatch = endurl.match(/^(\w+)(\/\w+)/);
                 var urlcat=urlmatch[1];
                 var urldir=urlmatch[2];

                 var xmlHttp = new ActiveXObject("Microsoft.XmlHttp");
                 xmlHttp.open("GET", sUrl, false);
                 xmlHttp.send();

                 //get the response content from the remote site
                 var sBody = xmlHttp.responseText.replace(/[\r\n]/g, ' ');

                 //run the regex to parse out the image url
                 var relativeImgUrl = '';
                 var imgmatch = rx.exec(sBody);
                 if (imgmatch != null)
                 {
                    relativeImgUrl = imgmatch[1];
                 }
                 
                 var imgurl = urlstart+urlcat+urldir+relativeImgUrl;

                 if (imgtitle==null) {
                    //regex for finding the image title in the page source..
                    var tx = /<title>(.+)<\/title>/i;
                    var imgtitle = tx.exec(sBody)[1];
                 }
                 break;
           }// switch on "site"

           //put up the window
           if (imgurl != ""){
                pagebody += '<h4>'+imgtitle+'</h4>\n<img src="' +imgurl +'">\n';
           }//if imgurl
        }// for i <...
     }else{
           setSearchWindowText("Bad Comic Name..  try 'comx ?' to see a list");
           setTimeout("setSearchWindowText('comx ')", 2000);
           return;
     }//else
     pagebody += '\n</body>\n</html>';
    myWindow = window.open("", "comx", 'resizable,scrollbars,width=1000,height=700')
    myWindow.document.write(pagebody)
    //writeFile(comxoutfile, pagebody);
    //openSearchWindow("file://" + comxoutfile);
  } //function

  ]]></script>
</search>

Reply via email to