// Declaring valid date character, minimum year and maximum year
var dtCh= "/";
var minYear=2000;
var maxYear=2200;

function isInteger(s){
     var i;
     for (i = 0; i < s.length; i++){
         // Check that current character is number.
         var c = s.charAt(i);
         if (((c < "0") || (c > "9"))) return false;
     }
     // All characters are numbers.
     return true;
}

function stripCharsInBag(s, bag){
     var i;
     var returnString = "";
     // Search through string's characters one by one.
     // If character is not in bag, append to returnString.
     for (i = 0; i < s.length; i++){
         var c = s.charAt(i);
         if (bag.indexOf(c) == -1) returnString += c;
     }
     return returnString;
}

function daysInFebruary (year){
     // February has 29 days in any year evenly divisible by four,
     // EXCEPT for centurial years which are not also divisible by 400.
     return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
     for (var i = 1; i <= n; i++) {
         this[i] = 31
         if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
         if (i==2) {this[i] = 29}
    }
    return this
}

function isDate(dtStr){
     var daysInMonth = DaysArray(12)
     var pos1=dtStr.indexOf(dtCh)
     var pos2=dtStr.indexOf(dtCh,pos1+1)
     var strDay=dtStr.substring(pos2+1)
     var strMonth=dtStr.substring(pos1+1,pos2)
     var strYear=dtStr.substring(0,pos1)

     if (pos1==-1 || pos2==-1){
         alert("A data deve ser no formato : DD/MM/AAAA")
         return (false)
     }

     strYr=strYear
     if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
     if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
     for (var i = 1; i <= 3; i++) {
         if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
     }
     day=parseInt(strDay)
     month=parseInt(strMonth)
     year=parseInt(strYr)


     if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
         alert("Introduza um dia valido")
         return (false)
     }
     if (strMonth.length<1 || month<1 || month>12){
         alert("Introduza um mes valido")
         return (false)
     }
     if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
         alert("Introduza 4 digitos validos entre o ano "+minYear+" e "+maxYear)
         return (false)
     }
     if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
         alert("Introduza uma data valida")
         return (false)
     }
return true
}


//mascara ------------------------------------------------------------------------
function mascara1 (formato, objeto)
{
campo = eval (objeto);
if (formato=='CPF')
{
caracteres = '01234567890';
separacoes = 3;
separacao1 = '.';
separacao2 = '-';
conjuntos = 4;

conjunto1 = 3;
conjunto2 = 7;
conjunto3 = 11;
conjunto4 = 14;
if ((caracteres.search(String.fromCharCode (window.event.keyCode))!=-1) && campo.value.length <
(conjunto4))
{
if (campo.value.length == conjunto1)
campo.value = campo.value + separacao1;
else if (campo.value.length == conjunto2)
campo.value = campo.value + separacao1;
else if (campo.value.length == conjunto3)
campo.value = campo.value + separacao2;
}
else
event.returnValue = false;
}

if (formato=='data')
{
caracteres = '01234567890';
separacoes = 3;
separacao1 = '/';
separacao2 = '/';
conjuntos = 3;

conjunto1 = 2;
conjunto2 = 5;
conjunto3 = 10;

if ((caracteres.search(String.fromCharCode (window.event.keyCode))!=-1) && campo.value.length < (conjunto3))
{
if (campo.value.length == conjunto1)
campo.value = campo.value + separacao1;
else if (campo.value.length == conjunto2)
campo.value = campo.value + separacao1;
else if (campo.value.length == conjunto3)
campo.value = campo.value + separacao2;
}
else
event.returnValue = false;
}

if (formato=='cep')
{
caracteres = '01234567890';
separacoes = 3;
separacao1 = '.';
separacao2 = '-';
conjuntos = 3;

conjunto1 = 2;
conjunto2 = 6;
conjunto3 = 10;

if ((caracteres.search(String.fromCharCode (window.event.keyCode))!=-1) && campo.value.length < (conjunto3))
{
if (campo.value.length == conjunto1)
campo.value = campo.value + separacao1;
else if (campo.value.length == conjunto2)
campo.value = campo.value + separacao2;
else if (campo.value.length == conjunto3)
campo.value = campo.value + separacao2;
}
else
event.returnValue = false;
}

if (formato=='CNPJ')
{
caracteres = '01234567890';
separacoes = 4;

separacao1 = '.';
separacao2 = '.';
separacao3 = '/';
separacao4 = '-';

conjuntos = 5;

conjunto1 = 2;
conjunto2 = 6;
conjunto3 = 10;
conjunto4 = 15;
conjunto5 = 18;

if ((caracteres.search(String.fromCharCode (window.event.keyCode))!=-1) && campo.value.length < (conjunto5))
{
if (campo.value.length == conjunto1)
campo.value = campo.value + separacao1;
else if (campo.value.length == conjunto2)
campo.value = campo.value + separacao2;
else if (campo.value.length == conjunto3)
campo.value = campo.value + separacao3;
else if (campo.value.length == conjunto4)
campo.value = campo.value + separacao4;

}
else
event.returnValue = false;
}

if (formato=='veiculoano')
{
caracteres = '01234567890';
separacoes = 1;
separacao1 = '/';
conjuntos = 2;

conjunto1 = 4;
conjunto2 = 9;
conjunto3 = 9;

if ((caracteres.search(String.fromCharCode (window.event.keyCode))!=-1) && campo.value.length < (conjunto3))
{
if (campo.value.length == conjunto1)
campo.value = campo.value + separacao1;
else if (campo.value.length == conjunto2)
campo.value = campo.value + separacao2;
else if (campo.value.length == conjunto3)
campo.value = campo.value + separacao2;
}
else
event.returnValue = false;
}
}

//mostra div
function mostrar(nombreCapa){
document.getElementById(nombreCapa).style.visibility="visible";
}
function ocultar(nombreCapa){
document.getElementById(nombreCapa).style.visibility="hidden";
}

//FORMATA MOEDA

function formatar_moeda(campo, separador_milhar, separador_decimal, tecla) {
	var sep = 0;
	var key = '';
	var i = j = 0;
	var len = len2 = 0;
	var strCheck = '0123456789';
	var aux = aux2 = '';
	var whichCode = (window.Event) ? tecla.which : tecla.keyCode;

	if (whichCode == 13) return true; // Tecla Enter
	if (whichCode == 8) return true; // Tecla Delete
	key = String.fromCharCode(whichCode); // Pegando o valor digitado
	if (strCheck.indexOf(key) == -1) return false; // Valor inválido (não inteiro)
	len = campo.value.length;
	for(i = 0; i < len; i++)
	if ((campo.value.charAt(i) != '0') && (campo.value.charAt(i) != separador_decimal)) break;
	aux = '';
	for(; i < len; i++)
	if (strCheck.indexOf(campo.value.charAt(i))!=-1) aux += campo.value.charAt(i);
	aux += key;
	len = aux.length;
	if (len == 0) campo.value = '';
	if (len == 1) campo.value = '0'+ separador_decimal + '0' + aux;
	if (len == 2) campo.value = '0'+ separador_decimal + aux;

	if (len > 2) {
		aux2 = '';

		for (j = 0, i = len - 3; i >= 0; i--) {
			if (j == 3) {
				aux2 += separador_milhar;
				j = 0;
			}
			aux2 += aux.charAt(i);
			j++;
		}

		campo.value = '';
		len2 = aux2.length;
		for (i = len2 - 1; i >= 0; i--)
		campo.value += aux2.charAt(i);
		campo.value += separador_decimal + aux.substr(len - 2, len);
	}

	return false;
}


// ----- mascara ----

function tam_texto(obj,tam){document.getElementById(obj).maxLength=tam;}

function mascara(o,f){
    v_obj=o
    v_fun=f
    setTimeout("execmascara()",1)
}

function execmascara(){
    v_obj.value=v_fun(v_obj.value)
}

function leech(v){
    v=v.replace(/o/gi,"0")
    v=v.replace(/i/gi,"1")
    v=v.replace(/z/gi,"2")
    v=v.replace(/e/gi,"3")
    v=v.replace(/a/gi,"4")
    v=v.replace(/s/gi,"5")
    v=v.replace(/t/gi,"7")
    return v
}

function soNumeros(v){
    return v.replace(/\D/g,"")
}

function telefone(v){
    v=v.replace(/\D/g,"")                 //Remove tudo o que não é dígito
    v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")    //Coloca hífen entre o quarto e o quinto dígitos
    return v
}

function cpf(v){
    v=v.replace(/\D/g,"")                    //Remove tudo o que não é dígito
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
                                             //de novo (para o segundo bloco de números)
    v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
    return v
}

function cep(v){
    v=v.replace(/D/g,"")                //Remove tudo o que não é dígito
    v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
    return v
}

function cnpj(v){
    v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito
    v=v.replace(/^(\d{2})(\d)/,"$1.$2")             //Coloca ponto entre o segundo e o terceiro dígitos
    v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
    v=v.replace(/\.(\d{3})(\d)/,".$1/$2")           //Coloca uma barra entre o oitavo e o nono dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")              //Coloca um hífen depois do bloco de quatro dígitos
    return v
}

function romanos(v){
    v=v.toUpperCase()             //Maiúsculas
    v=v.replace(/[^IVXLCDM]/g,"") //Remove tudo o que não for I, V, X, L, C, D ou M
    //Essa é complicada! Copiei daqui: http://www.diveintopython.org/refactoring/refactoring.html
    while(v.replace(/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,"")!="")
        v=v.replace(/.$/,"")
    return v
}

function site(v){
    //Esse sem comentarios para que você entenda sozinho ;-)
    v=v.replace(/^http:\/\/?/,"")
    dominio=v
    caminho=""
    if(v.indexOf("/")>-1)
        dominio=v.split("/")[0]
        caminho=v.replace(/[^\/]*/,"")
    dominio=dominio.replace(/[^\w\.\+-:@]/g,"")
    caminho=caminho.replace(/[^\w\d\+-@:\?&=%\(\)\.]/g,"")
    caminho=caminho.replace(/([\?&])=/,"$1")
    if(caminho!="")dominio=dominio.replace(/\.+$/,"")
    v="http://"+dominio+caminho
    return v
}

// --- fim mascara

