function CheckRequired( form ){
  var result = true;  
  
  // Zmień kolor ramek dla wszystkich elementów formularza
  for(var i = 0; i < form.elements.length; i++){
    var elm = form.elements[i];
    switch( elm.type ){
      case "text":
      case "textarea":
      case "file":
        elm.style.borderColor = "";
        break;
      case "radio":
      case "checkbox":
        elm.style.backgroundColor = "";
        break;
      case "select-one":
        elm.style.color = "";
        break;
    }
  }

  // Sprawdź czy pola wymagane są wypełnione
  for(var i = 0; i < form.elements.length; i++){
    var elm = form.elements[i];
    if( form.elements[i].getAttribute( 'required' ) == 'true' ){
      switch( elm.type ){
        case "text": 
        case "textarea":
          if( elm.value == '' ){
            elm.style.borderColor = "#ff0000";
            result = false;
          }           
          break;
        case "file":
          if( elm.value == '' ){
            elm.style.borderColor = "#ff0000";
            result = false;
          }
          break;        
        case "radio":
          var anySelected = false;
          var groupName = elm.getAttribute("name");
          if( (groupName != "") && (groupName != null) ){
            for(var j = 0; j < form.elements.length; j++){
              var _elm = form.elements[j];
              var _groupName = _elm.getAttribute("name");
              if( (groupName == _groupName) && (_elm.checked) ){
                anySelected = true;
              }
            }
          }
          
          if( !anySelected ){
            elm.style.backgroundColor = "#ff0000";
            result = false;
          }
          break;
        case "checkbox":
          if( !elm.checked ){
            elm.style.backgroundColor = "#ff0000";
            result = false;
          }
          break;
        case "select-one":
          if( elm.selectedIndex<=0 ){
            elm.style.color = "#ff0000";
            result = false;
          }
          break;
      }      
    }
  }
  return result;
}

function CheckValidate( form ){
  var result = true;
  
  for(var i = 0; i < form.elements.length; i++){
    var elm = form.elements[i];
    switch(elm.type){
      case "text":
      case "textarea":
        var val = elm.getAttribute("validate");
        var msg = "";
        var test = false;
        var re;
        switch(val){
          case "EMAIL":
            re = /^\w[\.|\w]*\w@\w[\.\w]*\w\.\w{2,3}$/; // <- EMAIL
            msg = "Proszę podać poprawny adres email (np.: jan.kowalski@hoga.pl)";
            test = true;
            break;
          case "TEL":
            re = /^[\+|\d]?\d{7,}$/; // <- TEL
            msg = "Proszę podać poprawny numer telefonu (np.: +48123456789)";
            test = true;
            break;
          case "NIP":
            re = /^\d{2,3}-\d{2,3}-\d{2,3}-\d{2,3}$/; // <- NIP
            msg = "Proszę podać poprawny NIP (np.: 123-45-67-890)";
            test = true;
            break;
          case "POST":
            re = /^\d{2}-\d{3}$/; // <- POST
            msg = "Proszę podać poprawny kod pocztowy (np.: 41-200)";
            test = true;
            break;
          case "DATE_DMY":
            re = /^\d{2}-\d{2}-\d{4}$/; // <- DATE_DMY
            msg = "Proszę podać poprawn± datę (np.: 23-02-1977)";
            test = true;
            break;
        }
        if( test && (elm.value != "") ){
          if( re.test( elm.value ) ){
            elm.style.borderColor = "";
          }else{
            elm.style.borderColor = "#ff0000";
            alert( msg );
            result = false;
          }
        }
        break;
    }
  }
  
  return result;
}

function CheckForm( formName ){  

  var result = true;
  var form = document.getElementById(formName);
  result = CheckRequired( form );
  if( !result ){
    alert( 'Proszę wypełnić pola zaznaczone czerwonym kolorem' );
  }
  result = result && CheckValidate( form );
  
  return result;
}


