function ag25_kontrolaFormulare() { //definice objektu
  
  var own = this; //hodnota this se muze menit behem skriptu, takze bezpecnost
  
  own.formular = null;
  own.kontrolovaneTypyPoli = new Array(/text/i, /checkbox/i, /password/i, /file/i, /textarea/i); //typy poli, ktere mohou byt kontrolovany
  own.barvaPozadiDefaultni = '#FFFFFF';
  own.barvaPozadiKriticka = '#FDB5B4';
/* -------------------------------------------------------------------------------------------------------- */
  own.jePovolenyTypPole = function (pole) {
    var i = 0;
    for (i = 0; i < own.kontrolovaneTypyPoli.length; i++) {
      if (pole.type.search(own.kontrolovaneTypyPoli[i]) != -1)
        return true;
    }
    return false;
  }
  
  own.jeTrebaKontrolovat = function (pole) { //pokud je definovan atribut, podleha pole kontrole
    if (pole.title == undefined || pole.title == '')
      return false;
    else
      return true;
  }
  
  own.jePoleSpravne = function (pole) {
    if (pole.type == 'checkbox') {
      if (pole.checked == false)
        return false;
      else
        return true;
    }
    else {
      if (pole.value == '') //validaci emailu nechame na php
        return false;
      else
        return true;
    }
  }
  
  own.kontrola = function (formular) {
    own.formular = formular;
    var i = 0;
    for (i = 0; i < own.formular.elements.length; i++) {
      var pole = own.formular.elements[i];
      if (own.jeTrebaKontrolovat(pole)) {
        if (own.jePovolenyTypPole(pole)) { //jen nektere typy poli mohou byt kontrolovany
          if (own.jePoleSpravne(pole))
            pole.style.backgroundColor = own.barvaPozadiDefaultni;
          else {
            pole.style.backgroundColor = own.barvaPozadiKriticka;
            pole.focus();
            alert(pole.title); //uz vime, ze title je definovan
            return false;
          }
        }
      }
    }
    return true;
  }
}

