// ----------------------------------------------------
// Livesearch script - http://dreadnaut.altervista.org
// ---------------------------------------------------

 isIE = false;
 nList      = document.getElementById('list');
 nSuggest   = document.getElementById('suggestlist');
 nTotal     = document.getElementById('total');
 nSearchdiv = document.getElementById('searchbox');

 function selectfile(li) {
   nSearchbox.value = li.innerHTML;
   search();
   nSearchbox.focus();
 }

 function hidesuggestdelayed() {
   window.setTimeout("hidesuggest()", 400);
 }

 function hidesuggest() {   
   nSuggest.style.display = 'none';
 }

 function clearsearch() {
   nSearchbox.value = '';
   search();
   nSearchbox.focus();
 }

 ss = -1;

 function search(event) {
   hiddensuggest = false;
  
   if ( (event != null) && (nSearchbox.value != '') )
   if (event.keyCode == 27) {
     if (nSuggest.style.display == 'none') {
       nSearchbox.value = '';
     } else {
       hiddensuggest = true;
     }
   } else if (event.keyCode == 40) {
     sugg = document.getElementById("suggestlist");
     if (sugg != null) {
       sugg = sugg.firstChild.childNodes;
       if (ss < sugg.length - 1) {
	 if (nSuggest.style.display == 'none') {
	   for (i = 0; i < sugg.length; i++) {
	     sugg.item(i).style.color = "black";
	     sugg.item(i).style.backgroundColor = '#f5f5f5';
	   }
	   nSuggest.style.display = 'block';
	 }	   
         if (ss >= 0) {
	   sugg.item(ss).style.color = "black";
	   sugg.item(ss).style.backgroundColor = '#f5f5f5';
	 }
	 ss = ss + 1;
	 sugg.item(ss).style.color = 'white';
	 sugg.item(ss).style.backgroundColor = '#b3BBC5';
       } 
     } else {
       ss = -1;
     }  
     return;
   } else if (event.keyCode == 38) {
     sugg = document.getElementById("suggestlist");
     if (sugg != null) {
       sugg = sugg.firstChild.childNodes;
       if (ss > -1) {
	 sugg.item(ss).style.color = "black";
	 sugg.item(ss).style.backgroundColor = '#f5f5f5';
	 ss = ss - 1;
	 if (ss > -1) {
	   sugg.item(ss).style.color = 'white';
	   sugg.item(ss).style.backgroundColor = '#b3BBC5';
	 }
       }
     } else {
       ss = -1;
     }
     return;
   } else if (event.keyCode == 13) {
     if ( (nSuggest.style.display != 'none') && (ss > -1) ) {
       nSearchbox.value = document.getElementById("suggestlist").firstChild.childNodes.item(ss).innerHTML;
     }
   }

   text = nSearchbox.value.toUpperCase();

   row = nList.firstChild;
   while ( (row != null) && (row.nodeName != 'TR') )
     row = row.nextSibling;

   resultcount = 0;

   if (text.length > 0) {
     ss = -1; 
     sl = '<ul>';
     while (row != null) {

       file = row.firstChild.nextSibling.firstChild.innerHTML;
       if (file.toUpperCase().indexOf(text) >= 0 ) {
	 row.style.display = '';
	 if (file.toUpperCase() != text) {
	   sl = sl + '<li onclick="selectfile(this);">' + file + '</li>';
	 }
	 resultcount++;
       } else {
	 row.style.display = 'none';
       }

       row = row.nextSibling;
       while ( (row != null) && (row.nodeName != 'TR') )
         row = row.nextSibling;
     }

     sl = sl + '</ul>';
     
     if ( (!hiddensuggest) && (sl.length > 9) ) {
       nSuggest.innerHTML = sl;
       nSuggest.style.display = 'block';
     } else {
       nSuggest.style.display = 'none';
     }

     nTotal.style.display = 'none';
     nClear.style.display = 'inline';
     nFeedback.innerHTML = resultcount + ' file' + (resultcount == 1? '':'s') + ' matching';

   } else {

     while (row != null) {
       row.style.display = '';
       row = row.nextSibling;
       while ( (row != null) && (row.nodeName != 'TR') )
         row = row.nextSibling;
     }

     nSuggest.style.display = 'none';
     nTotal.style.display = 'block';
     nClear.style.display = 'none';
     nFeedback.innerHTML = '';
   }

 }

 nSearchdiv.innerHTML = '<img src="/misc/index.find.png" alt="Search:"/> <input id="box" type="text" size="64" maxlength="64"/> <img id="clear" src="/misc/index.x.png" alt="clear" onclick="clearsearch()" /> <div id="feedback"></div>'

 nSearchbox = document.getElementById('box');
 nFeedback  = document.getElementById('feedback');
 nClear     = document.getElementById('clear');

 if (navigator.userAgent.indexOf('Safari') > 0) {
   nSearchbox.addEventListener('keyup',search,false);
   nSearchbox.addEventListener('blur',hidesuggestdelayed,false);
 } else if (navigator.product == 'Gecko') {
   nSearchbox.addEventListener('keyup',search,false);
   nSearchbox.addEventListener('blur',hidesuggestdelayed,false);
 } else {
   nSearchbox.attachEvent('onkeyup',search);
   nSearchbox.attachEvent('onblur',hidesuggestdelayed,false);
   isIE = true;
 }

 nSearchbox.focus();

