/*

    Arquivo de validações em javascript.

*/
/*
    função doDate
       1. Simples — valida apenas o uso de dígitos, nas posições e quantidade certas: 1 a 2 dígitos para dia e para mês, 1 a 4 
       dígitos para ano.
       2. Média — testa os dígitos possíveis em cada posição: o primeiro dígito do dia, se houver, deve ser de 0 a 3 ([0-3]?\d); 
       o primeiro dígito do mês, se houver, deve ser 0 ou 1 ([01]?\d); passamos a aceitar apenas 2 ou 4 dígitos para o ano.
       3. Avançada — garante as faixas de valores corretas para dias 1 a 31 ((0?[1-9]|[12]\d|3[01])) e meses 1 a 12 ((0?[1-9]|1[0-2])). 
       E aqui optamos por forçar os 2 primeiros dígitos do ano (correspondentes ao século), quando fornecidos, 
       a serem 19 ou 20 ((19|20)?\d{2}).
       4. Completa — valida os dias permitidos de acordo com o mês. Para este último, foram criados três grupos alternativos de pares 
       dia/mês:
          * Os dias 1 a 29 ((0?[1-9]|[12]\d)) são aceitos em todos os meses (1 a 12): (0?[1-9]|1[0-2])
          * Dia 30 é válido em todos os meses, exceto fevereiro (02): (0?[13-9]|1[0-2])
          * Dia 31 é permitido em janeiro (01), março (03), maio (05), julho (07), agosto (08), outubro (10) e 
          dezembro (12): (0?[13578]|1[02]).
       5. Tradicional — data no formato DD/MM/AAAA, basicamente é a data Completa, porém sem a opcionalidade do zero à esquerda no dia 
       ou mês menor que 10 e sem a opcionalidade e verificação de século no ano, aceitando qualquer seqüência de 4 dígitos (\d{4}) como ano.

*/
var reDate1 = /^\d{1,2}\/\d{1,2}\/\d{1,4}$/; //
var reDate2 = /^[0-3]?\d\/[01]?\d\/(\d{2}|\d{4})$/; //
var reDate3 = /^(0?[1-9]|[12]\d|3[01])\/(0?[1-9]|1[0-2])\/(19|20)?\d{2}$/; //
var reDate4 = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/; //
var reDate5 = /^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$/; //
var reDate = reDate4;

function doDate(pStr, pFmt)
{
	eval("reDate = reDate" + pFmt);
	if (reDate.test(pStr)) {
                return true;
	} else if (pStr != null && pStr != "") {
                return false;
	}
} // doDate


/**
    MÁSCARAS DE FORMATAÇÃO.


    ex: <input type="text" size=18 onkeypress="return numbersonly(event)">
    ex: <textarea onkeyup="return limitlength(this, 20)" style="width: 300px; height: 90px"></textarea>
*/
function numbersonly(e){
    var unicode=e.charCode? e.charCode : e.keyCode
    if (unicode!=8){ //if the key isn't the backspace key (which we should allow)
        if (unicode<48||unicode>57) //if not a number
        return false //disable key press
    }
}

function limitlength(obj, length){
    var maxlength=length
    if (obj.value.length>maxlength)
    obj.value=obj.value.substring(0, maxlength)
}

function validaQuantidadeMaxCaracteres(qtdeMaxima , elemento) {
	if (elemento.value.length >= qtdeMaxima) {		
		alert("Quantidade máxima de caracteres do campo é "+qtdeMaxima);
		return;
	}	
}

