Search=new Array();Files=new Array();Hits=new Array();

function Criterion(s,m,n,b,e){this.string=s.toLowerCase();this.start=b;this.end=e;this.must=m;this.not=n;Search[Search.length]=this;}

function Space(i){return " /-+&:;".indexOf(this.charAt(i))>=0;}
String.prototype.Space=Space;

function FD(f,k,t,c){this.filename=f;this.keywords=k;this.title=t;this.content=c;Files[Files.length]=this;}
function FDScan(){var cnt,tot=0;
 function ScanA(k,c){var cnt=0;for(var i=-1;((i=k.indexOf(c.string,i+1))>=0);)if((c.start||i==0||k.Space(i-1))&&(c.end||i+c.string.length==k.length||k.Space(i+c.string.length)))cnt++;return cnt;}
 function ScanB(f,c){return 10*ScanA(f.title.toLowerCase().replace("<br>"," "),c)+2*ScanA(f.keywords,c)+ScanA(f.content,c);}
 for(var i=0;i<Search.length;tot+=cnt,i++)if((cnt=ScanB(this,Search[i]))==0&&Search[i].must)return 0;else if (cnt&&Search[i].not)return 0;
 return tot;}
FD.prototype.Scan=FDScan;

function Hit(f,c){var i;
 this.file=f;this.count=c;
 for(i=Hits.length-1;i>=0&&Hits[i].count<c;i--)Hits[i+1]=Hits[i];
 Hits[i+1]=this;}
function HitURI(){return(Files[this.file].filename);}
function HitTitle(){return(Files[this.file].title);}
Hit.prototype.URI=HitURI;
Hit.prototype.Title=HitTitle;

function Show(request){
 var Out="<center><table width=90% cellpadding=0 cellspacing=0 border=0><tr><td colspan=2 bgcolor=#B00037 height=2>";
 Out+="<tr><td colspan=2><h3><br>Zoekresultaten voor: <b><font color=#B00037>"+request+"</font></b><br></h3>";
 for(var i=0;i<this.length;i++)Out+="<tr><td><b>"+(i+1)+".</b><td><a href=\".."+this[i].URI()+"\"><b>"+this[i].Title()+"</b></a><br>&nbsp;&nbsp;URL: <i>www.adquipment.nl"+this[i].URI()+"</i><br><br>";
 if(this.length==0)
  Out+="<tr><td colspan=2><br><br><h5>Sorry, geen paginas die voldoen aan het opgegeven criterium</h5>";
 else
  Out+="<tr><td><td><br><h5>"+this.length+" pagina"+(this.length>1?"s":"")+" gevonden</h5>";
 Out+="</table></center>";
 document.write(Out);}
Array.prototype.Show=Show;

function WriteUsage(){
 var Out="<center><table width=90% cellpadding=0 cellspacing=0 border=0>";
 Out+="<tr><td colspan=2 bgcolor=#B00037 height=2><tr><td colspan=2 align=justify><br><br>";
 Out+="Deze zoekmachine geeft u de mogelijkheid direct producten van uw interesse te vinden. Type hiertoe zo specifiek mogelijke kenmerken. De zoekmachine zal alle pagina\'s aangeven die ";
 Out+="&eacute;&eacute;n of meer van de gevraagde woorden bevat. U kunt uw zoek opdracht verder verfijnen met de volgende opties:<br>";
 Out+="Het + teken: Het volgende woord <strong>moet</strong> op de pagina voorkomen<br>";
 Out+="Het - teken: Het volgende woord <strong>mag niet</strong> op de pagina voorkomen<br>";
 Out+="<strong>Let op:</strong> Het + of - teken moet voorafgegaan worden door een spatie anders wordt het als deel van het woord gezien<br>";
 Out+="Het * teken: Kan aan het begin of het eind van een woord worden gebruikt voor willekeurige tekens<br>";
 Out+="Aanhalingtekens kunt u gebruiken om te zoeken naar vaste volgorde van woorden, dus inclusief de spaties</table></center>";
 document.write(Out);}

function Setupsearch(Str){var b,e,m,n,wb,we,Q;
 for(var i=0;i<Str.length;){
  Q=false;
  if(m=(Str.charAt(i)=="+"))i++;else if(n=(Str.charAt(i)=='-'))i++;
  if(Q=(Str.charAt(i)=="\""))i++;
  for(b=i;i<Str.length&&(Str.charAt(i)!=" "||Q)&&Str.charAt(i)!="\"";i++)if(Str.charAt(i)=="\'")return -1;
  e=i;
  if(Q){
   if(Str.charAt(i)=="\"")i++;else return -2;}
  else{
   if(wb=(Str.charAt(b)=='*'))b++;
   if(we=(Str.charAt(e-1)=='*'))e--;
   if(Str.indexOf("*",b)>=0&&Str.indexOf("*",b)<e)return -3;}
  if(e!=b)new Criterion(Str.substring(b,e),m,n,wb,we);
  for(;i<Str.length&&Str.charAt(i)==" ";i++);}
 return 0;}

function dosearch(){var b,e,c,request,help=true;
 if((b=location.search.indexOf("request="))>0){
  if((e=location.search.indexOf("&",b))<0)e=location.search.length;
  document.forms[0].request.value=request=unescape(location.search.substring(b+8,e).replace(/\+/g, " "));
  if(request.length>0&&location.search.indexOf("help=")<0)
   switch(Setupsearch(request)){
    case 0:
     for(var i=0;i<Files.length;i++)if(c=Files[i].Scan())new Hit(i,c);
     Hits.Show(request);help=false;break;
    case -1:alert("Gebruik het dubbele aanhalingsteken (\") i.p.v. het enkele (')");break;
    case -2:alert("Bij aanhalingstekens (\") zowel openen als sluiten");break;
    case -3:alert("De asterisk (*) kan alleen aan het begin of einde van een woord");break;}}
 if(help)WriteUsage();}

