
/* -----------------------------------------------------------------------------
    @AUTHOR:  Zdenek Benak, zdenek.benak@centrum.cz
    @YEAR:    2006
    @PROJECT: MAppEngine
    @FILE:    inc/m_elements.js
    @DESCR:   funkce pro praci s formulari, zmeny obrazku na najeti a pod
 * -------------------------------------------------------------------------- */


// -------------- funkce pro test formuláře na pozadovane polozky  -------------

    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]);
          return false;
        }
        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;
    }

// ------------------------ CheckBox - zatrhnout vse --------------------------
 
    function CheckBoxSelectAll(form_name,cb_name)
    {
      var i;
      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;
          if (inputs[i][inputs[i].name+"h_"]) inputs[i][inputs[i].name+"h_"].value = "1";
        }
      }
    }

// ------------------------ CheckBox - odtrhnout vse ---------------------------

    function CheckBoxSelectNone(form_name,cb_name)
    {
      var i;
      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;
          if (inputs[i][inputs[i].name+"h_"]) inputs[i][inputs[i].name+"h_"].value = "0";
        }
      }
    }
    
// ---------------------- zobrazi skryje element -------------------------------

    function SHElement(element_name,sh)
    {
      elm = document.getElementById(element_name);
      if (elm) elm.style.display = sh?"":"none";
    }

// -------------------------- zobrazi element ----------------------------------

    function ShowElement(element_name)
    {
      elm = document.getElementById(element_name);
      if (elm) elm.style.display = "";
    }

// -------------------------- skryje element ----------------------------------

    function HideElement(element_name)
    {
      elm = document.getElementById(element_name);
      if (elm) elm.style.display = "none";
    }
    
// ----------- zobrazi/skryje element na zaklade zatrzerni checkboxu -----------

    function ShowHideElement(form_name,checkbox_name,element_name)
    {
      sh = 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";
      }
    }

// -------------- skryje element pokud je mys mimo tento element ---------------

    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";
    }
    
// ---------------------------- zvyrazneni elementu ----------------------------

    function HiliteElement(elm_id,color)
    {
      elm = document.getElementById(elm_id);
      elm.style.backgroundColor = color;
      ch = elm.childNodes;
      for (i=0;i<ch.length;i++)
      {
        if (ch[i].style) ch[i].style.backgroundColor = color;
      }
    }
    
// ------------------------ zruseni zvyrazneni elementu ------------------------

    function UnHiliteElement(elm_id)
    {
      elm = document.getElementById(elm_id);
      elm.style.backgroundColor = "";
      for (i=0;i<ch.length;i++)
      {
        if (ch[i].style) ch[i].style.backgroundColor = "";
      }
    }
    
    
// ------------------------ zakazani vstupnich poli  ---------------------------

    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);
      }
    }

// ------------------------ povoleni vstupnich poli  ---------------------------

  function EnableInputs(elm_id)
  {
    elm = document.getElementById(elm_id);
    for (i=0;i<ch.length;i++)
    {
      ch[i].disabled = false;
      //EnableInputs(ch[i].id);
    }
  }
    

// ------------------------ verze obrazku na najeti ----------------------------

  function ImgOn(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");
  }

// ------------------- verze obrazku na najeti - skupina -----------------------

  function GroupImgOn(img_name,i)
  {
    if (document.images) document[img_name+i].src = eval(img_name + "on.src");
  }

// --------------- verze obrazku  normalnim stavu - skupina --------------------

  function GroupImgOff(img_name,i)
  {
    if (document.images) document[img_name+i].src = eval(img_name + "off.src");
  }
  
  
  var _img_cache = new Array();
  
// ----------------- preload obrazku, zmeny stavu obrazku ----------------------

  function PreloadImage(img_id, img_version, img_file)
  {
    if (!document.images) return;
    
    if (!_img_cache[img_id])
    {
      _img_cache[img_id] = new Array();
    }
    
    _img_cache[img_id][img_version] = new Image();
    _img_cache[img_id][img_version].src = img_file;
  }
  
  function PreloadNormalImage(img_id, img_file)    { PreloadImage(img_id, "normal",   img_file); }
  function PreloadRolloverImage(img_id, img_file)  { PreloadImage(img_id, "rollover", img_file); }
  function PreloadDisabledImage(img_id, img_file)  { PreloadImage(img_id, "disabled", img_file); }

  
  function ImgVersion(img_id,img_version)
  {
    if (!document.images) return;
    
    var elm = document.getElementById(img_id);
    if (elm) elm.src = _img_cache[img_id][img_version].src;
  }

  function ImgNormal(img_id)    {ImgVersion(img_id,"normal");   }
  function ImgRollover(img_id)  {ImgVersion(img_id,"rollover"); }
  function ImgDisabled(img_id)  {ImgVersion(img_id,"disabled"); }
