<html>
<head>
   <title>W peni tekstowa wyszukiwarka XForms Essentials (beta)</title>

   <script type="text/javascript" src="xfi.js"></script>
   <script type="text/javascript">
      var lastq = "";
      var delay = 250;

      function requery() {
         if (!jswords || !jsfiles) return;  // Wci trwa wczytywanie.
         var currentq = document.query.q.value;
            if (currentq == lastq)
               return;

            var results = localfind(currentq.split(" "))
            lastq = currentq;
            updateResults(results);
      }

      // Ta funkcja zostaa zaadaptowana z biblioteki Gnosis Utils for Python 
      // Davida Mertza, dostpnej jako public domain. Wprowadzono kilka zmian, poniewa 
      // pliki js uywaj bardziej porcznych tablic zamiast obiektw dict.
      function localfind(wordlist) {
         var entries = {};
         var hits = {}
         for (var idx=0; idx < jsfiles.length; idx++) {
            hits[idx] = jsfiles[idx];    // Skopiowanie pola fileid indeksu.
         }
         for (var idx in wordlist) {
            var word = wordlist[idx]
            word = word.toUpperCase()
            if (!jswords[word]) return {}   // Nic dla tego jednego sowa (fail)
            var entry = {}
            // Pobranie indeksu dopasowanych plikw
            // dla kadego sowa.
            for (var idx=0; idx < jswords[word].length; idx++) { 
               entry[jswords[word][idx]] = "hit";
            }

            // Pozbycie si trafie przy braku dopasowania.
            for (var fileid in hits) { 
               if (!entry[fileid]) {
                  delete hits[fileid];
               }
            }
         }
         return hits;
      }

      function updateResults(results) {
         var upd_loc = document.getElementById("results");
         var url_base = "http://xformsinstitute.com/essentials/browse/";
         // Jeeli istniej poprzednie wyniki, to zostan usunite.
         while (upd_loc.hasChildNodes()) {
            upd_loc.removeChild(upd_loc.childNodes[0]); 
         }
         var newh1 = document.createElement("h1");
         newh1.appendChild(document.createTextNode("wyniki:"));
         upd_loc.appendChild(newh1); 
         for (var fileid in results) { 
            var hit = jsfiles[fileid]; 
            var newp = document.createElement("p"); 
            newp.appendChild( makeHyperlink( url_base + hit, hit )); 
            upd_loc.appendChild(newp); 
         }
      }

      function makeHyperlink( url, text, title ) { 
         var aelem = document.createElement("a"); 
         if (title) aelem.setAttribute( "title", title );
         if (url) aelem.setAttribute( "href", url ); 
         aelem.appendChild(document.createTextNode(text)) 
         return aelem; 
      }

setInterval(requery, delay);</script> 
</head> 
<body>
<p>Wystarczy po prostu rozpocz wpisywanie i obserwowa pojawiajce si 
w magiczny sposb wyniki. (JavaScript jest wymagany, ale poza pocztkowym 
wczytaniem dokumentu nie jest niezbdny dostp do Sieci.)</p>
<p>Aktualnie zostao zaimplementowane jedynie dopasowywanie caych sw. 
Wiele sw naley poczy spjnikiem AND.</p> 
<form name="query" action="no_submit" method="POST"> <input type="text" 
name="q" autocomplete="off"/> </form> <div id="results"> </div> 
<p><a href="http://dubinko.info/blog/2004/12.html#perm2004-12-
26_localindex">Szczegowe informacje techniczne</a></p> </body>
</html>
