/**
 * Funções para formulários.
 * @author Rodrigo Fagundes.
 * @version 2.01
 */

/**
 * Bloqueia a digitacao em um campo input ou textarea quando o limite de caracteres for atingido.
 * @param DomObject campo Input ou textarea a ser bloqueado;
 * @param int limite Limite de caracteres para o campo.
 * @param string nomeContador Identificador do contador que mostra o número de caracteres restantes.
 * @return void
 * 
 * Baseado na função criada por Nícolas Müller <http://www.oficinadanet.com.br/editor/45/nicolas_muller>
 * @author Rodrigo Fagundes.
 */
function blocTexto(campo, limite, nomeContador) {
    var valor = campo.value;
    var total, resto;
    
    total = valor.length;
    if (total <= limite) {
        resto = limite - total;
        document.getElementById(nomeContador).value = resto;
    } else {
        campo.value = valor.substr(0, limite);
    }
}

/**
 * Verifica os campos de preenchimento obrigatório em um formulário, caso encontre campos vazios emite alerta.
 * Se tudo estiver certo realiza o submit do formulário. Os campos obrigatórios possuem a classe "required".
 * @param string nomeFormulario Identificador do formulário.
 * @return void.
 */
function verificaCamposObrigatoriosFormulario(nomeFormulario) {
   var form = document.getElementById(nomeFormulario);
   var labels = document.getElementsByTagName('label');
   var erros = false;
   var i, label, input, classes;

   for (i=0; i<labels.length; i++) {
      label = labels[i];
      if (label.className == "required") {
         input = document.getElementById(label.htmlFor);
         classes = input.className;
         if (input.value == "") {
            input.className = "error " + classes;
            erros = true;
         } else {
            if (classes.indexOf("error")) {
               classes.replace("error", "");
            }
         }
      }
   }
   
   if (erros) {
      alert("Alguns campos não foram devidamente preenchidos!");
   } else {
      form.submit();
   }
}

/**
 * Baseado na função criada por Nícolas Müller <http://www.oficinadanet.com.br/editor/45/nicolas_muller>
 * @author Rodrigo Fagundes.
 */
function blocTexto(textarea, quant, nomeContador) {
    valor = textarea.value;
    
    total = valor.length;
    if (total <= quant) {
        resto = quant - total;
        document.getElementById(nomeContador).value = resto;
    } else {
        textarea.value = valor.substr(0,quant);
    }
}
