<!-- hide this script from non-JavaScript browsers
var MAX_ENGINES = 30;
var SNARK_STRING = "hunting+the+snark";
function MakeArray(n) {
for (var i = 1; i <= n; i++) {
this[i] = 0;
}
this.maxlen = n;
this.len = 0;
return this;
}
var engs = MakeArray(MAX_ENGINES);
function find_substring(needle, haystack) {
var i, needlen = needle.length, haylen = haystack.length;
for (i=0; i<=haylen-needlen; i++) {
if (needle == haystack.substring(i,i+needlen))
return i;
}
return false;
}
function Engine(name, opts, home, search) {
var snark = find_substring(SNARK_STRING, search);
this.name = name;
this.opts = opts;
this.home = home;
this.pre_snark = search.substring(0,snark);
this.post_snark= search.substring(snark+SNARK_STRING.length, search.length);
}
function Add(name, opts, home, search) {
engs.len++;
if (engs.len <= engs.maxlen) {
engs[engs.len] = new Engine(name, opts, home, search)
}
else {
alert("Better increase MAX_ENGINES: " + engs.len + ">" + engs.maxlen)
}
}
Add("Free Dictionary", "",
   "http://www.thefreedictionary.com",
   "http://www.thefreedictionary.com/hunting+the+snark" );

Add("Msn Encarta / Dictionary", "",
   "http://encarta.msn.com/encnet/features/dictionary/dictionaryhome.aspx",
   "http://encarta.msn.com/dictionary_/hunting+the+snark.html" );

Add("Word Reference", "",
   "http://www.wordreference.com",
   "http://www.wordreference.com/definition/hunting+the+snark" );

Add("--------------------", "",
   "http://www.red-dictionary.com",
   "http://www.red-dictionary.com" );

Add("Synonym", "",
   "http://www.synonym.com",
   "http://www.synonym.com/definition/hunting+the+snark");

Add("Synonyms Dictionary (CNRS)", "",
   "http://dico.isc.cnrs.fr/dico/tr/search_en?r=after+the",
   "http://dico.isc.cnrs.fr/dico/tr/search_en?r=hunting+the+snark" );



function HandleForm(form) 

{

            var i, oldq=form.query.value, newq="";

            for (i=0; i<oldq.length; i++) 

            {  

                        var thischar = oldq.charAt(i);

                        

                        if (thischar != ' ')

                                   newq += thischar;

                        else if (lastchar != ' ')                 

                                   newq += '+';

                        

                        lastchar = thischar;

            }

            var eng = engs[1 + form.service.selectedIndex];



            window.location.href = newq ? eng.pre_snark + newq + eng.post_snark : eng.home;

}

function DisplayForm() {
document.writeln('<table BORDER=0 CELLSPACING=0 CELLPADDING=0><tr><td valign=top><FORM OnSubmit="HandleForm(this); return false">');

document.writeln('<INPUT size=27 name="query">');

document.writeln('<SELECT name="service">');
  for (i=1; i <= engs.len; i++) {
    document.writeln("<OPTION " + engs[i].opts + "> " + engs[i].name);
}
document.writeln('</SELECT></td>');

document.writeln('<td>&nbsp;<input type="image" SRC="images/ok.gif" WIDTH=36 HEIGHT=25 BORDER=0 USEMAP="#index_10_Map"></td></tr></table>');


}
DisplayForm();