// Hledaci off-line system 
// (C) Petr Coupek 2004

  var return_results = 10; //pocet vysledku na strance
  var include_num = 1;     //ocislovat je
  var bold_query = 1;      //zvyraznit ve vystupu
  var d;                   //text, ktery se hleda
  var n=0;                 //cislovat od

  var nr = return_results; 
  n = parseInt(n);
  var nc=0;
  var nd=0;
  var nb = n + nr;         //
  var r = new Array();    // sem se ukladaji nalezene vysledky hledani
  var co=0;             // pocet nalezenych zaznamu
  var m=0;               // mod hledani, m=0 je zakladni hledani
  
  var w;

  var htpr='<p>';

  // tento kod yaruci opetovne generovani vysledku pri funkci Zpet a 
  // pri odeslani formulare pomoci Enter
  var Arguments = DecodeString (document.location);
  if (Arguments.length>0){
    document.hledej.d.value=Arguments[0]; najdi();
  };


function nuluj(){
  nc=0; nd=0; m=0; co=0; htpr='<p>';
}

function najdi() {
	if (document.hledej.d.value.length > 2) {
    d=document.hledej.d.value;
    if (document.hledej.diakr.checked){
      d=adia(d); //document.hledej.d.value=d;
    };  
    nuluj();
    if (is_nav4up | is_ie5_5up | is_gecko){
      proces_najdi(d,n);
    }else{
      alert(rq[33]);
      proces_najdi(d,n);
    };
    vysledky();
	}else{
    if (document.hledej.d.value.length == 0) {
      alert(rq[31]); 
    }else{
      alert(rq[32]);
    };
  };
}

function proces_najdi(d,n) {
  var sp;
  //nejprve nastav mod hledani
  if (d.charAt(0) == '"' && d.charAt(d.length - 1) == '"') {
	  m = 1;
  };
  var rn = d.search(/ or /i);
  if (rn >= 0) {
	  m = 2;
  };
  rn = d.search(/-/i);
  if (rn >= 0) {
	  rn = d.search(/ /i);
	  if (rn != 0) {
		  d = d.replace(/-/gi, ' -');
	  };
  };
  rn = d.search(/\+/i);
  if (rn >= 0) {
	  rn = d.search(/ /i);
	  if (rn != 0) {
  		d = d.replace(/\+/gi, ' +');
	  };
  };
  if (m == 0) {
    // zakladni hledani bez +,-, or
	  var woin = new Array();
	  d = d.replace(/ and /gi, ' ');
	  w = d.split(' '); //do pole w jednotlive terminy
	  for (var a = 0; a < w.length; a++) {
  		woin[a] = 0;
  		if (w[a].charAt(0) == '-') {
		  	woin[a] = 1;
	  	};
  	};
	  for (var a = 0; a < w.length; a++) {
		  w[a] = w[a].replace(/^\-|^\+/gi, '');
	  };
	  a = 0;
    // cyklus pres datové pole
	  for (var c = 0; c < s.length; c++) {
		  var pa = 0;
		  var nh = 0;
      // cyklus pres jednotlive hledane vyrazy
		  for (var i = 0; i < woin.length; i++) {
        //ma byt vyskyt
  			if (woin[i] == 0) {
	  			nh++;
          sp=s[c];
		  		var pat = new RegExp(w[i], 'i');
			  	rn = sp.search(pat);
  				if (rn >= 0) {
	  				pa++;
		  		} else {
			  		pa = 0;
				  };
			  };
        // nema byt vyskyt
			  if (woin[i] == 1) {
  				var pat = new RegExp(w[i], 'i');
	  			var rn = s[c].search(pat);
		  		if (rn >= 0) {
			  		pa = 0;
				  };
			  };
		  };
      // když sedi pocet vyskytu (nevyskytu) v reg. vyrazu, zarad do nalezenych
		  if (pa == nh) {
			  r[a] = s[c];
			  a++;
		  };
	  };
	  co = a;
  };

  //vyraz v uvozovkach se bere jako celek
  if (m == 1) {
	  d = d.replace(/"/gi, '');
	  var a = 0;
	  var pat = new RegExp(d, 'i');
	  for (var c = 0; c < s.length; c++) {
      sp=s[c];
		  var rn = sp.search(pat);
		  if (rn >= 0) {
  			r[a] = s[c];
	  		a++;
		  };
	  };
	  co = a;
  };

  // vyraz z "or" je treba vyhazet duplicitni vyskyty jednou nalezenych veci
  if (m == 2) {
	  d = d.replace(/ or /gi, ' ');
	  w = d.split(' ');
	  var a = 0;
	  for (var i = 0; i < w.length; i++) {
  		var pat = new RegExp(w[i], 'i');
	  	for (var c = 0; c < s.length; c++) {
        sp=s[c];
		    var rn = sp.search(pat);
			  if (rn >= 0) {
  				var pa = 0;
	   			for (var e = 0; e < r.length; e++) {
			  		if (s[c] == r[e]) {
				  		pa = 1;
					  };
				  };
				  if (pa == 0) {
  					r[a] = s[c];
	  				a++;
		  			co++;
			  	};
			  };
		  };
	  };
  };
  // v co je pocet vysledku, vysledky jsou v poli r
}

function vysledky() {
	if (co == 0) {
		dowrite(rq[34]);
    ChangeIt('Vystup', htpr);
    htpr='<p>';
		return;
	}
	if (n + nr > co) {
		nd = co;	
	} else {
		nd = n + nr;
	}
	for (var a = n; a < nd; a++) {
		var os = r[a].split('^');
		if (bold_query == 1 && m == 0) {
			for (var i = 0; i < w.length; i++) {
				var lw = w[i].length;
				var tw = new RegExp(w[i], 'i');
				rn = os[2].search(tw);
				if (rn >= 0) {
					var o1 = os[2].slice(0, rn);
					var o2 = os[2].slice(rn, rn + lw);
					var o3 = os[2].slice(rn + lw);
					os[2] = o1 + '<b><font color="red">' + o2 + '</font></b>' + o3; 
				}
			}
		}
		if (bold_query == 1 && m == 1) {
			var lw = d.length;
			var tw = new RegExp(d, 'i');
			rn = os[2].search(tw);
			if (rn >= 0) {
				var o1 = os[2].slice(0, rn);
				var o2 = os[2].slice(rn, rn + lw);
				var o3 = os[2].slice(rn + lw);
				os[2] = o1 + '<b><font color="red">' + o2 + '</font></b>' + o3; 
			}
		};
		if (include_num == 1) {
			dowrite(a + 1, '. <a href="', os[1], '">', os[0], '</a>&nbsp;&nbsp;',
       '<a href="', os[1], '" target="_blank">+</a>',
       ' <img src="img/dtyp'+os[4]+'.gif" border="0">');	
			if (os[2].length > 1) {
				dowrite('<br>', os[2]);
			}			
		} else {
			if (os[4] == '1') {
				dowrite('<a href="', os[1], '" target="_blank">', os[0], '</a>');
			} else {
				dowrite('<a href="', os[1], '">', os[0], '</a>');
			}
			if (os[2].length > 1) {
				dowrite('<br>', os[2]);
			}
		};
    dowrite('<p>');
	}
	if (co > nr) {
		nc = co - nb;
		if (nc > nr) {
			nc = nr;
		}
		dowrite('<p>');
	};
	if (n > 1) {
		dowrite('<input type="button" onClick="javascript:jdi(', n - nr, ');" value="'+rq[35]+' '+nr+'">&nbsp;');
	};
  //dowrite('nr=',nr,' nc=',nc,' nb=',nb,' n=',n,'co=',co,'xx=',co-n-nr);
	//if (nc > 0) {
  if (co-n-nr > 0) {
		dowrite('<input type="button" onClick="javascript:jdi(', n + nr, ');" value=" '+rq[36]+' '+nc+'">');
	};
  dowrite('<br>  ',rq[37]+' '+co);
  // tyto vysledky vytiskni do dokumentu a vynuluj kapsu
  ChangeIt('Vystup', htpr);
  htpr='<p>';

}

function ChangeIt(ElemID, NewStr) {
  if (document.all) {
    //vetev pro internet explorer
    document.all[ElemID].innerHTML = NewStr;

  } else if (document.layers){
      //vetev pro Netscape 4
      with (document[ElemID].document) {
        open();
        write(NewStr);
        close();
      };
  } else {
     // vetev pro Mozillu
     document.getElementById("Vystup").innerHTML=htpr;
  };
}

function jdi(kam){
  // resi posun ve vysledcich
  n=kam;
  m=0;
  vysledky();
}

function dowrite(){
  for (var i=0; i<dowrite.arguments.length; i++){
    htpr=htpr+dowrite.arguments[i];
  };
}

//---------------------
// Dekódovací funkce
//---------------------
// Převádí URL na pole parametrů, prevzato z knihy Petr Vaclavek: JavaScript Hotova reseni
function DecodeString (Url){
  Args=new Array();

  var DecodeUrl;

  var PomUrl, PomArgs, PomArg;

  // Ziskání části adresy s parametry
  Url = Url.toString();
  // Adresa se rozdělí do pole podle znaku '?'
  DecodeUrl = Url.split ('?');
  // Pokud za znakem '?' byl nějaký text
  if (DecodeUrl.length>1 && DecodeUrl[1].length>0){
    // Do proměnné PomUrl se uloží část adresy s parametry
    PomUrl = DecodeUrl[1];
    // Rozdělí se podle znaku '&' na dvojice Parametr=Hodnota
      PomArgs = PomUrl.split ('&');
    for (var i=0; i<PomArgs.length; i++){
      // Pro každý parametr se získá jeho hodnta
      // (řetězec se tentokráte rozdělí podle znaku '=')
        PomArg = PomArgs[i].split('=');
      Args[i] = unescape(PomArg[1]);
    }
  }
  // Vrátí se výsledné pole hodnot
  return (Args);
}

var chr= new Array();
chr['á']='a';
chr['Á']='A';
chr['č']='c';
chr['Č']='C';
chr['ď']='d';
chr['Ď']='D';
chr['é']='e';
chr['É']='E';
chr['ě']='e';
chr['í']='i';
chr['Í']='I';
chr['ľ']='l';
chr['Ľ']='L';
chr['ň']='n';
chr['Ň']='N';
chr['ó']='o';
chr['Ó']='O';
chr['ř']='r';
chr['Ř']='R';
chr['š']='s';
chr['Š']='S';
chr['ť']='t';
chr['Ť']='T';
chr['ú']='u';
chr['ů']='u';
chr['Ú']='U';
chr['ý']='y';
chr['Ý']='Y';
chr['ž']='z';
chr['Ž']='Z';

function dia(s){
//odstrani diakritiku Win1250
var p='';
var p2,z;
for (i=0;i<s.length;i++){
 p2=s.charAt(i);
 if (p2>'z'){
  for (z in chr){
   if (p2==z){
    p2=chr[z];break
   };
  };
 };
 p=p+p2;
}; 
return(p);
}

function adia(s){
//prida jako moznost do reg. vyrazu pismeno bez diakritiky Win1250
var p='';
var p2,z,p3;
for (i=0;i<s.length;i++){
 p2=s.charAt(i);
 p3='';
 for (z in chr){
   if (p2==chr[z]){
     if (p3==''){ p3=p2+'|'+z;}else{p3=p3+'|'+z;};
   };
 };
 if (p3==''){
   for (z in chr){
     if (p2==z){
       if (p3==''){ p3=p2+'|'+chr[z];}else{p3=p3+'|'+chr[z];};
     };
   };
 };
 if (p3!=''){p2='('+p3+')';};
 p=p+p2;
}; 
return(p);
}