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 = new 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)
  }
}

function DisplayForm() {
  document.writeln('<FORM Name=Snarkform OnSubmit="HandleForm(this); return false">');
  document.writeln('<font size="2" face="arial"><b>Search for : </b><INPUT size=30 name="query"></font><br>');
  document.writeln('<font size="2" face="arial"><b>Search in<font color="white">.</font> : </b><SELECT name="service"></font>');
  for (i=1; i <= engs.len; i++) {
    document.writeln("<OPTION " + engs[i].opts + "> " + engs[i].name);
  }
  document.writeln('</SELECT> <input type=submit value="Go"></FORM>');

  document.writeln('</font>');
query = self.location.search;
        if (query != null && query !='') {
                if (query.length > 1) {
                        query = query.substring(1, query.length);
                        document.Snarkform.query.value=query
                }
        }
  document.Snarkform.query.focus()
}

function HandleForm(form) {
//  form.submit();
  var i, newq="", oldq=form.query.value;
  for (i=0; i<oldq.length; i++) {  // compress [ ]+ into \+
    var thischar = oldq.charAt(i);
    if (thischar != ' ')
      newq += thischar;
    else if (lastchar != ' ')
      newq += '+';
    lastchar = thischar;
  }
  var eng = engs[1+form.service.selectedIndex];
//  parent.display.location.href = newq ? eng.pre_snark + newq + eng.post_snark : eng.home;
  parent.parent.location.href = newq ? eng.pre_snark + newq + eng.post_snark : eng.home;
  document.Snarkform.query.focus()
}


// ADD SEARCH ENGINES BELOW.

Add("WhatUSeek","",
   "http://sitelevel.whatuseek.com/",
   "http://sitelevel.whatuseek.com/query.go?query=hunting+the+snark&crid=237d9a867a6cc66f");

Add("Google","",
   "http://www.google.com/",   
   "http://www.google.com/search?hl=en&ie=UTF-8&oe=UTF-8&q=hunting+the+snark");

Add("Yahoo", "SELECTED",
   "http://www.yahoo.com/",
   "http://search.yahoo.com/bin/search?p=hunting+the+snark" );

// ADD SEARCH ENGINES ABOVE.

function OpenPicture(FileName, ICaption, w, h){
  w=w+40
  h=h+40
  FloatPicture = window.open("" , "", "width="+w+",height="+h)
  w=w-40
  h=h-40
  with (FloatPicture.document){
     writeln("<HTML>")
     writeln("<HEAD><TITLE>Lihat Gambar</TITLE></HEAD>")
     writeln("<BODY BGCOLOR='#000000' TEXT='#ffffff' LINK='#000000' OnBlur='window.close()'>")
     writeln("<CENTER><TABLE>")
     writeln("<TR><TD><A HREF='javascript:window.self.close()'><IMG SRC='"+FileName+"' ALT='Klik disini untuk menutup window!' WIDTH="+w+" HEIGHT="+h+" BORDER='0'></A></TD></TR>")
     writeln("<CAPTION ALIGN=bottom><CENTER><SMALL><EM>"+ICaption+"</EM></SMALL></CENTER></CAPTION>")
     writeln("</TABLE></CENTER>")
     writeln("</BODY>")
     writeln("</HTML>")
     close
   }
}

