  var IE = document.all?true:false;
  var NS = document.layers?true:false;
  var NS6 = document.getElementById&&!document.all?true:false;
  var Opera = navigator.userAgent.indexOf("Opera")>-1;
  // ----- prevede nepovolene znaky v URL -----
    function UrlEncode(str)
    {
      var hex_tab = "0123456789ABCDEF", result = "", ascii_tab = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ź˘Ł¤§¨Ş­Ż°˛ł´ˇ¸ş˝żŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙";
      for (var i=0; i<str.length; i++)
      {
        var chr = str.charAt(i), ord = ascii_tab.indexOf(chr)+32;
        if (ord==32) result += "+";
        else if  (((ord>47)&&(ord<58))||((ord>64)&&(ord<91))||((ord>95)&&(ord<122))||(chr==".")||(chr=="/")) result += chr; else result += "%"+hex_tab.charAt(Math.floor(ord/16))+hex_tab.charAt(ord%16);
      }
      return result;
    }
  // --- nacte parametr predany v url ---
    function GetParam(param_name,default_value,search_str)
    {
      if(!search_str) search_str = self.top.document.location.search.substr(1).replace("%20", " ");
      params = search_str.split("&");
      for (i=0;i<params.length;i++)
      {
        p = params[i].split("=");
        if (p.length>=2)
        {
          if (p[0]==param_name)
          {
            pstr = p[1];
            for (i=2;i<p.length;i++) pstr += ("="+p[i]);
            return pstr;
          }
        }
      }
      return default_value;
    }
  // --- funkce pro test formuláře  ---
    function CheckForm(form, params, texts)
    {
      // syntaxe parametrů: "polozka1:název poloky1(:dolní_limit(:horní_limit))(;poloka2:...)"
      // příklad: checkFrom(this, "vek:věk:0;rok_narozeni:rok narození:1900:2000");
      if (!texts)
      {
        texts  = new Array();
        texts["chyba_ve_formulari"] = "Chyba ve formuláři:";
        texts["polozka"]        = "poloka";
        texts["chyba_vyplnena"] = "musí být vyplněna.";
        texts["chyba_cislo"]    = "musí mít minimální číselnou hodnotu.";
        texts["chyba_interval"] = "musí mít číselnou hodnotu v intervalu";
      }
      if (!form) alert("chyba - nexesitujici formular.");
      var result = true;
      var errstr = texts["chyba_ve_formulari"]+"\n";
      var pars   = params.split(";");
      var alert_str = "";
      for (i=0; i<pars.length; i++)
      {
        var par = pars[i].split(":");
        if (!form[par[0]]) alert("chyba - neexistujici pole: " + par[0]);
        var val = parseInt(form[par[0]].value);
        if (!par[2]&&!form[par[0]].value)
        {
          if (result) form[par[0]].focus();
          alert_str += (texts["polozka"]+" \""+par[1]+"\" "+texts["chyba_vyplnena"]+"\n");
          result = false;
        }
        else if (par[2]&&!par[3]&&(isNaN(val)||(val<par[2])))
        {
          if (result) form[par[0]].focus();
          alert_str += (texts["polozka"]+" \""+par[1]+"\" "+texts["chyba_cislo"]+" "+par[2]+".\n");
          form[par[0]].value = "";
          result = false;
        }
        else if (par[3]&&(isNaN(val)||(val<par[2])||(val>par[3])))
        {
          if (result) form[par[0]].focus();
          alert_str += (texts["polozka"]+" \""+par[1]+"\" "+texts["chyba_interval"]+" "+par[2]+" a "+par[3]+".\n");
          form[par[0]].value = "";
          result = false;
        }
      }
      if (!result) alert (errstr+alert_str);
      return result;
    }
  // --- zpracovaní cen ---
    function RoundPrice(price)
    {
      return Math.round(100*price)/100;
    }
    function FormatPrice(price)
    {
       var i;
       price = RoundPrice(price);
       //eval("price_str = '"+eval(price)+"';");
       price_str = price.toString();
       p_arr = price_str.split(".");
       price_str_start = "";
       for (i=p_arr[0].length-1;i>=0;i--)
       {
         price_str_start = p_arr[0].charAt(i)+price_str_start;
         if ((p_arr[0].length-i)%3==0 && i>0) price_str_start = " " + price_str_start;
       }
       if (p_arr.length==1) price_formated = price_str_start + ",0";
       else                 price_formated = price_str_start + "," + (p_arr[1].length==1? p_arr[1]: p_arr[1].substr(0,1));
       return price_formated;
      /*
       if (p_arr.length==1) price_formated = price_str_start + ",00";
       else                 price_formated = price_str_start + "," + (p_arr[1].length==1? p_arr[1] + "0": p_arr[1].substr(0,2));
       return price_formated;
       */
    }
  // --- zpracovani stisku klaves ---
    function GetKey(e)
    {
      var code;
      if (!e) var e = window.event;
      // nastaveni pro IE
      if (e.keyCode) code = e.keyCode;
      // IE a Mozilla
      else if (e.which) code = e.which;
      // NN4
      return code;
    }
    function EnterPressed(e)
    {
      return (GetKey(e)==13);
    }
    function Numeric(e)
    {
      k = GetKey(e);
      return (k>=48 && k<=57||k==32||k==43||k==45);
    }
    function NumericInput(e)
    {
      k = GetKey(e);
      return ((k>=48 && k<=57)||k<=32||k==43||k==45||(k>=37 && k<=46));
    }
     function FloatNumeric(e)
    {
      k = GetKey(e);
      if ((k>=48 && k<=57)||k==32||k==43||k==44||k==45||k==46) return true;
      return false;
    }
    function FloatNumericInput(e)
    {
      k = GetKey(e);
      if ((k>=48 && k<=57)||k<=32||k==43||k==44||k==45||k==46||(k>=37 && k<=46)) return true;
      return false;
    }
  // --- zjisteni sirky okna ---
    function GetWindowWidth()
    {
      var myWidth = 640;
      if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight))
      {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
      } else {
        if (document.body && (document.body.clientWidth || document.body.clientheight))
        {
          //IE 4 compatible
          myWidth = document.body.clientWidth;
        }
      }
      if (document.layers) { myWidth = window.innerWidth; } // ns4 only
      return myWidth;
    }
  // --- zjisteni vysky okna ---
    function GetWindowHeight()
    {
      var myHeight = 480;
      if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight))
      {
        //IE 6+ in 'standards compliant mode'
        myHeight = document.documentElement.clientHeight;
      } else {
        if (document.body && ( document.body.clientWidth || document.body.clientheight))
        {
          //IE 4 compatible
          myHeight = document.body.clientheight;
        }
      }
      if (document.layers) { myHeight = window.innerHeight; } // ns4 only
      return myHeight;
    }
  // ---- verze obrazku na najeti ----
    function imgOn(imgName)
    {
      if (document.images) document[imgName].src = eval(imgName + "on.src");
    }
    function nastavTlacitkoR(imgName)
    {
      if (document.images) document[imgName].src = eval(imgName + "_on.src");
    }
  // ---- verze obrazku v normalnim stavu ----
    function imgOff(imgName)
    {
      if (document.images) document[imgName].src = eval(imgName + "off.src");
    }
    function nastavTlacitkoN(imgName)
    {
      if (document.images) document[imgName].src = eval(imgName + "_off.src");
    }
  // ---  verze obrazku na najeti ----
    function GroupImgOn(img_name,i)
    {
      if (document.images) document[img_name+i].src = eval(img_name + "on.src");
    }
  // ---- verze obrazku v normalnim stavu ----
    function GroupImgOff(img_name,i)
    {
      if (document.images) document[img_name+i].src = eval(img_name + "off.src");
    }
  // --- prace s polem ---
    function GetArrayLength(arr)
    {
      arr = arr.join("#VSEP#");
      arr = arr.split("#VSEP");
      return arr.length;
    }
    // InArray
    function InArray(member,arr)
    {
      var l = arr.length;
      var i;
      for (i=0;i<l;i++) if (arr[i]==member) return true;
      return false;
    }
  // --- prace se stringem ---
    // str_replace
    function str_replace(needle, needle2, haystack)
    {
    	var arr = haystack.split(needle);
    	var str = arr[0];
    	for (var i=1; i<arr.length; i++) str += needle2+arr[i];
    	return str;
    }
    // dekodovani retezce upraveneho pomoci funkce MFixTextForJSVar
    function MFixJSStringForText(str)
    {
      str = str_replace("&quot;","\"",str);
      return str;
    }
 // ----- ckeckboxy -----
    function CheckBoxSelectAll(form_name,cb_name)
    {
      inputs = document.forms[form_name].elements;
      for (i=0;i<inputs.length;i++)
      {
        if (inputs[i].type=='checkbox' && inputs[i].name.indexOf(cb_name)>-1)
        {
          inputs[i].checked = true;
        }
      }
    }
    function CheckBoxSelectNone(form_name,cb_name)
    {
      inputs = document.forms[form_name].elements;
      for (i=0;i<inputs.length;i++)
      {
        if (inputs[i].type=='checkbox' && inputs[i].name.indexOf(cb_name)>-1)
        {
          inputs[i].checked = false;
        }
      }
    }
  // ----- zobrazi/zkryje element na zaklade zatrzerni checboxu -----
    function ShowHideElement(form_name,checkbox_name,element_name)
    {
      sh = eval("document."+form_name+"."+checkbox_name+".checked;");
      elm = document.getElementById(element_name);
      elm.style.display = sh?"":"none";
    }
    function ShowHideElements(form_name,checkbox_name,elements_array)
    {
      sh = eval("document."+form_name+"."+checkbox_name+".checked;");
      earray = elements_array.split(";");
      for(var i=0;i<earray.length;i++)
      {
        elm = document.getElementById(earray[i]);
        if (elm) elm.style.display = sh?"":"none";
      }
    }
    function HideElementOutside(event,element_name)
    {
      elm = document.getElementById(element_name);
      if (document.documentElement && document.documentElement.scrollTop)
      {
        mouseX=window.event.clientX+document.documentElement.scrollLeft;
        mouseY=window.event.clientY+document.documentElement.scrollTop;
      }
      else
      {
        mouseX=window.event.clientX+document.body.scrollLeft;
        mouseY=window.event.clientY+document.body.scrollTop;
      }
      if(!(mouseX>getLeft(elm)+1 && mouseX<getRight(elm)-1 && mouseY>getTop(elm)+1 && mouseY<getBottom(elm)-1)) elm.style.display = "none";
    }
    function HiliteElement(elm_id,color)
    {
      elm = document.getElementById(elm_id);
      elm.style.backgroundColor = color;
      ch = elm.childNodes;
      for (i=0;i<ch.length;i++)
      {
        ch[i].style.backgroundColor = color;
      }
    }
    function UnHiliteElement(elm_id)
    {
      elm = document.getElementById(elm_id);
      elm.style.backgroundColor = "";
      for (i=0;i<ch.length;i++)
      {
        ch[i].style.backgroundColor = "";
      }
    }
    function DisableInputs(elm_id)
    {
      elm = document.getElementById(elm_id);
      ch = elm.childNodes;
      for (i=0;i<ch.length;i++)
      {
        ch[i].disabled = true;
        //DisableInputs(ch[i].id);
      }
    }
    function EnableInputs(elm_id)
    {
      elm = document.getElementById(elm_id);
      ch = elm.childNodes;
      for (i=0;i<ch.length;i++)
      {
        ch[i].disabled = false;
        //EnableInputs(ch[i].id);
      }
    }
