The Shifted Librarian - Shifting Libraries at the speed of byte

Art's DQSD SWAN Code

Here is Art's code for a sample SWAN keyword search that can be added to Dave's Quick Search Deskbar. Thanks, Art!

- <search function="swan">
  <name>SWAN Libraries</name>
- <description>
  Search SWAN.
  <br />
  <div class="helpboxDescLabels">Switches:</div>
- <table class="helpboxDescTable">
- <tr>
  <td>/branch:code</td>
  <td>-</td>
  <td>Search in specific branch by code. Possible values: acorn acornjv ( all branches by default)</td>
  </tr>
- <tr>
  <td>/books</td>
  <td>-</td>
  <td>Search Books</td>
  </tr>
- <tr>
  <td>/cassette</td>
  <td>-</td>
  <td>Search Audiocassettes</td>
  </tr>
  </table>
  <div class="helpboxDescLabels">Examples:</div>
- <table class="helpboxDescTable">
- <tr>
  <td>swan brendan voyage /books</td>
  </tr>
- <tr>
  <td>swan brendan voyage /branch:acorn</td>
  </tr>
  </table>
  </description>
  <category>Reference</category>
  <link>http://swan.sls.lib.il.us</link>
  <contributor>art</contributor>
- <form name="swanf" action="http://swan.sls.lib.il.us/search~S1/Y" method="get">
  <input type="hidden" name="SEARCH" />
  <input type="hidden" name="searchscope" />
  <input type="hidden" name="m" />
  <input type="hidden" name="l" value="" />
  <input type="hidden" name="Da" value="" />
  <input type="hidden" name="Db" value="" />
  <input type="hidden" name="SORT" value="D" />
  </form>
 <script>
<![CDATA[
    // List all branches here, Innovative actually uses numbers so we match by position
    var branches= " acron acornj ";

// why isn't trim built into JS? String.prototype.trim = function() {

var x=this; x=x.replace(/^s*(.*)/, "$1"); x=x.replace(/(.*?)s*$/, "$1"); return x; }

function swan(q) {

// Set defaults - if more switches are added then needed defaults should be here document.swanf.m.value = ""; document.swanf.searchscope.value = "1";

if( nullArgs("swan", q) ) return false;

var args = parseArgs(q, "branch, books, cassette"); if( q == "" ) openSearchWindow("http://swan.sls.lib.il.us"); else if( args.switches.length >= 1 && args.switches.length <= 2) { for (var i = 0; i < args.switches.length; i++) { sw = args.switches[i]; switch(sw.name) { case "branch": if (sw.value=="") { nullArgs("swan","?"); return false; } var br_array = branches.split(" "); for(var i=0;i<br_array.length && !br_array[i].match(sw.value.trim());++i); if (i != br_array.length) { document.swanf.searchscope.value = i; } break; case "books": document.swanf.m.value = "b"; break; case "cassette": document.swanf.m.value = "c"; break; } } } else if (args.switches.length > 2) { nullArgs("swan","?"); return false; }

document.swanf.SEARCH.value = args.q; submitForm(swanf);

}

  ]]>
  </script>
  <copyright>Copyright (c) 2002 David Bau Minor update for SWAN by Art Rhyno Distributed under the terms of the GNU Public License, Version 2 (http://www.gnu.org/copyleft/gpl.txt)</copyright>
  </search>