
testuj:function(f){
    // f zawiera obiekt formularza, 
    // który będzie sprawdzany

    // deklaracja zmiennych lokalnych,
    // które będą wykorzystane później
    // i - wykorzystamy jako licznik pętli
    var i,rodz,E;

    // sprawdzenie w pętli wszystkich kolejnych
    // pól formularza, z wykorzystaniem kolekcji
    // f.elements, zawierającej wszystkie pola formularza
    for(i=0;i<f.elements.length;i++){
      
      // przypisanie do zmiennej E, aktualnie 
      // sprawdzanego pola formularza 
      E=f.elements[i];

      // 1. pobierana jest wartość atrybutu "rodzajpola"
      // 2. sprawdzane jest czy w pod obiekcie this.rodzajePol
      //    (this oznacza nasz obiekt testFormularza)
      //    istnieje definicja takiego rodzaju pola
      // 3. definicja ta przypisywana jest do zmiennej rodz
      // 4. jeśli definicja ta istnieje to warunek jest 
      //    spełniony i wykonywane są dalsze instrukcje,
      //    a zmienna rodz zawiera tablicę z tą definicją
      // 5. jeśli nie istnieje, to nic nie jest wykonywane i
      //    pętla przechodzi do następnego pola  
      if(rodz=this.rodzajePol[E.getAttribute('rodzajpola')])

        // przy pomocy metody test, obiektu RegExp 
        // (wyrażenie regularne), sprawdzane jest czy 
        // wartość pola (E.value) spełnia warunek
        // (rodz[0])
        // 1. jeśli nie spełnia to uruchamiane są instrukcje
        //    przerwania wysyłki formularza
        // 2. jeśli spełnia, to nic nie jest wykonywane i pętla 
        //    przechodzi do następnego pola 
        if(!rodz[0].test(E.value)){
          
          // ustawienie kursora w niepoprawnie 
          // wypełnionym polu
          E.focus();
          
          // zaznaczenie tekstu w niepoprawnie
          // wypełnionym polu 
          E.select();
          
          // wyświetlenie komunikatu o błędnie wypełnionym polu
          // komunikat składa się z dwóch części 
          // 1. nieprawidłowa wartość pola i informacja o tym
          // 2. właściwy komunikat 
          //    zastosowana jest tu konstrukcja z "||"
          //    E.getAttribute('komunikat')||rodz[1])
          //    oznacza to, że teksto komunikatu najpierw jest 
          //    szukany w atrybucie 'komunikat', a jeśli go nie ma
          //    to pobierany jest domyślny tekst z definicji rodzaju
          //    pola 'rodz[1]'
          alert('"'+E.value+'" nie jest prawidłow± warto¶ci±'
            +' tego pola formularza!\n'
            +(E.getAttribute('komunikat')||rodz[1]));
          
          // ostateczne przerwanie wysyłki formularza
          // oraz przerwanie wykonywanie metody 
          // testFormularza.testuj 
          return false;          
        }
    }
    // jeśli wykonywanie funkcji dojdzie do tego miejsca to 
    // znaczy, że nie znaleziono źle wypełnionych pól
    // i formularz może być wysłany 
    // (tę linię równie dobrze można pominąć) 
    return true;
  }
