// - CEP :  OnKeyPress="formatar(this, '#####-###')"
// - CPF:  OnKeyPress="formatar(this, '###.###.###-##')"
// - DATA:  OnKeyPress="formatar(this, '##/##/####')"
function mascara(src, mask){
	var i = src.value.length;
	var saida = mask.substring(0,1);
	var texto = mask.substring(i)
	if (texto.substring(0,1) != saida){
		src.value += texto.substring(0,1);
	}
}

function mascara_cep (obj) {
	if(obj.value.length==10) event.returnValue = false;	
	if(event.keyCode < 48 || event.keyCode > 57) event.returnValue = false;
		
	switch(obj.value.length){
		case  2: obj.value += ".";  break;
		case  6: obj.value += "-";  break;
	}
}

function mascara_cnpj(obj){
	if(obj.value.length==18) event.returnValue = false;
    if (event.keyCode < 48 || event.keyCode > 57) event.returnValue = false;
	
	switch(obj.value.length){
		case 2: obj.value += ".";  break;
		case 6: obj.value += ".";  break;
		case 10: obj.value += "/"; break;
		case 15: obj.value += "-"; break;
	}
}   

function mascara_cpf (obj) {
	if(obj.value.length==14) event.returnValue = false;	
    if(event.keyCode < 48 || event.keyCode > 57) event.returnValue = false;
		
	switch(obj.value.length){
		case  3: obj.value += ".";  break;
		case  7: obj.value += ".";  break;
		case 11: obj.value += "-"; break;
	}
}  

function mascara_rg (obj) {
	if(obj.value.length==12) event.returnValue = false;	
    if(obj.value.length<10 && (event.keyCode < 48 || event.keyCode > 57)) event.returnValue = false;
	if(obj.value.length>=10 && (event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 88 && event.keyCode != 120) event.returnValue = false;
	if(event.keyCode==120) event.keyCode = 88;
	switch(obj.value.length){
		case  2: obj.value += ".";  break;
		case  6: obj.value += ".";  break;
		case 10: obj.value += "-"; break;
	}
}  

function mascara_ie (obj) {
	if(obj.value.length==15) event.returnValue = false;	
	if(event.keyCode < 48 || event.keyCode > 57) event.returnValue = false;
		
	switch(obj.value.length){
		case  3: obj.value += ".";  break;
		case  7: obj.value += ".";  break;
		case 11: obj.value += ".";  break;
	}
}

function mascara_fone(obj){
	if(obj.value.length==14) event.returnValue = false;
    if (event.keyCode < 48 || event.keyCode > 57) event.returnValue = false;	

	switch(obj.value.length){
		case 0: obj.value = "("+obj.value;  break;
		case 3: obj.value += ") ";  break;
		case 4: obj.value += " ";  break;
		case 9: obj.value += "-";  break;
	}
}

function mascara_inteiro(obj) {
    if(event.keyCode < 48 || event.keyCode > 57) event.returnValue = false;
}

function mascara_real(obj) {
	var casas = 1;
	//alert(event.keyCode);
	//alert(event.value);
    if(event.keyCode < 48 || event.keyCode > 57) return false; //event.returnValue = false;
	//if(obj.value.length==limite)  return false; //event.returnValue = false;
	if(obj.value.length==0) obj.value = "0," + obj.value;
	else {
	    if(obj.value.indexOf(',')!=-1) p1=obj.value.indexOf(','); else p1=obj.value.length-1; 
		var parte1 = obj.value.substring(0,p1);
		var parte2 = obj.value.substring(obj.value.length-casas);
		obj.value  = parseInt(parte1+parte2)+',';
	}
}

function mascara_data(obj) {
	if(obj.value.length==10) event.returnValue = false;
    if(event.keyCode < 48 || event.keyCode > 57) event.returnValue = false;
		
	switch(obj.value.length){
		case 2: obj.value += "/";  break;
		case 5: obj.value += "/";  break;
	}
} 

function validar_data(obj) {
	var result = false;
	var data  = obj.value;
    var tam = data.length;
    var bissexto = 0;
    if (tam == 10) {
        var dia = data.substr(0,2);
        var mes = data.substr(3,2);
        var ano = data.substr(6,4);
		if(!isNaN(dia) && !isNaN(mes) && !isNaN(ano)) {
			if ((ano > 1900)&&(ano < 2100)){
				switch (mes) {
					case '01':
					case '03':
					case '05':
					case '07':
					case '08':
					case '10':
					case '12': if(dia <= 31) { result = true; } 
							   break;
			   
					case '04':        
					case '06':
					case '09':
					case '11': if(dia <= 30) { result = true; } 
							   break;
					
					case '02': if ((ano % 4 == 0) || (ano % 100 == 0) || (ano % 400 == 0)) { bissexto = 1; } 
							   if ((bissexto == 1) && (dia <= 29)) { result = true; } 
							   if ((bissexto == 0) && (dia <= 28)) { result = true; }            
							   break;                        
				}
			}
		}
    }    
	return result;
}

function mascara_hora_hms(obj){
     if(event.keyCode<48 || event.keyCode>57){
        event.returnValue=false;}
     if(obj.value.length==2 || obj.value.length==5){
        obj.value+=":";
	}
}

function validar_hora_hms(obj){
	tam = obj.value.length;
	resp = false;
	if(tam==8) {
		horario = obj.value.split(":");
		var horas = horario[0];
		var minutos = horario[1];
		var segundos = horario[2];
		if(!isNaN(horas) && !isNaN(minutos) && !isNaN(segundos)) {
			if((horas>=0)&&(horas<=23) && (minutos>=0)&&(minutos<=59) && (segundos>=0)&& (segundos<=59)){
				resp = true;
			}
		}
	}
	return resp;
}

function mascara_hora(obj) {
	mascara_hora_hm(obj);
}

function mascara_hora_hm(obj){
    if(obj.value.length==5){
        event.returnValue=false;
	}
    if(event.keyCode<48 || event.keyCode>57){
        event.returnValue=false;
	}
    if(obj.value.length==2){
        obj.value+=":";
	}
}

function validar_hora(obj) {
	return validar_hora_hm(obj);
}

function validar_hora_hm(obj){
	tam = obj.value.length;
	resp = false;
	if(tam==5) {
		horario = obj.value.split(":");
		var horas = horario[0];
		var minutos = horario[1];
		if(!isNaN(horas) && !isNaN(minutos)) {
			if((horas>=0)&&(horas<=23) && (minutos>=0)&&(minutos<=59)){
				resp = true;
			}
		}
	}
	return resp;
}

/*function validar_hora_hms(obj){
	tam = obj.value.length;
	resp = false;
	if(tam==5) {
		horario = obj.value.split(":");
		var horas = horario[0];
		var minutos = horario[1];
		var segundos = horario[2];
		if(!isNaN(horas) && !isNaN(minutos) && !isNaN(segundos)) {
			if((horas>=0)&&(horas<=23) && (minutos>=0)&&(minutos<=59) && (segundos>=0)&& (segundos<=59)){
				resp = true;
			}
		}
	}
	return resp;
}*/

function validar_moeda(obj){
	var resp = false;
	var valor = obj.value;
	valor = valor.replace('.','');
	valor = valor.replace(',','.');
	if(!isNaN(valor)) {
		resp = true;
	}
	return resp;
}

function validar_inteiro(obj){
	if(!isNaN(obj.value))
		return  true;
	else 
		return false;
}

function validar_real(obj){
	n = obj.value.replace(',','.');
	if(!isNaN(n))
		return  true;
	else 
		return false;
}

function validar_cnpj(obj){
    pri = obj.value.substring(0,2);
    seg = obj.value.substring(3,6);
    ter = obj.value.substring(7,10);
    qua = obj.value.substring(11,15);
    qui = obj.value.substring(16,18);

    var i;
    var numero;
    var situacao = '';

    numero = (pri+seg+ter+qua+qui);
    s = numero;

    c = s.substr(0,12);
    var dv = s.substr(12,2);
    var d1 = 0;

    for (i = 0; i < 12; i++){
        d1 += c.charAt(11-i)*(2+(i % 8));
    }
    if (d1 == 0){
        var result = "falso";
    }
    d1 = 11 - (d1 % 11);
    if (d1 > 9) d1 = 0;
    if (dv.charAt(0) != d1){
        var result = "falso";
    }
    d1 *= 2;
    for (i = 0; i < 12; i++){
        d1 += c.charAt(11-i)*(2+((i+1) % 8));
    }
    d1 = 11 - (d1 % 11);
    if (d1 > 9) d1 = 0;
    if (dv.charAt(1) != d1){
        var result = "falso";
    }
    if (result == "falso" && s.length>0) {
		return false;
    }
	else {
		return true;
	}
}

function validar_cpf(obj){
    if(obj.value.length!=14) return false;
	
	pri = obj.value.substring(0,3);
    seg = obj.value.substring(4,7);
    ter = obj.value.substring(8,11);
    qua = obj.value.substring(12,14);

    var i;
    var numero;
    numero = (pri+seg+ter+qua);
    s = numero;
    c = s.substr(0,9);
    var dv = s.substr(9,2);
    var d1 = 0;

    for (i = 0; i < 9; i++){
        d1 += c.charAt(i)*(10-i);
    }
    if (d1 == 0){
        var result = "falso";
    }
    d1 = 11 - (d1 % 11);
    if (d1 > 9) d1 = 0;
    if (dv.charAt(0) != d1){
        var result = "falso";
    }
    d1 *= 2;
    for (i = 0; i < 9; i++){
        d1 += c.charAt(i)*(11-i);
    }
    d1 = 11 - (d1 % 11);
    if (d1 > 9) d1 = 0;
    if (dv.charAt(1) != d1){
        var result = "falso";
    }

    for(n=1; n<=9; n++) {
		q = 0;
		for (i=0; i<11; i++){
			if(n==s.charAt(i)) q++;
		}
		if(q==11) result = "falso";
	}

    if (result == "falso" && s.length>0) {
        return false;
    }
	else {
		return true;
	}
}

function validar_fone(obj) {
	if(obj.value.length==14) 
		return true;
	else
		return false;
}

function validar_email(obj) {
	var er = new RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);
	return er.test(obj.value);
}
 

function validar_campo(obj,tipo,descricao,obrigatorio) {
	var resp = true;
	var msg = "";
	if(obj.value.length==0 && obrigatorio=='S') {
		resp = false;
		alert('O campo ' + descricao + ' é obrigatório.'); 
		obj.focus();
	}
	else if(obj.value.length>0) {
		switch(tipo) {
			case 'data'     : resp = validar_data(obj);     break;
			case 'hora'     : 
			case 'hora_hm'  : resp = validar_hora_hm(obj);  break;
			case 'hora_hms' : resp = validar_hora_hms(obj); break;
			case 'moeda'    : resp = validar_moeda(obj);    break;
			case 'inteiro'  : resp = validar_inteiro(obj);  break;
			case 'real'     : resp = validar_real(obj);     break;
			case 'cpf'      : resp = validar_cpf(obj);      break;
			case 'fone'     : resp = validar_fone(obj);     break;
			case 'cnpj'     : resp = validar_cnpj(obj);     break;
			case 'geral'    : resp = true;                  break; 
			case 'email'    : resp = validar_email(obj);	break;
		    default         : resp = false;
		}
		if(resp==false) {
			switch(tipo) {
				case 'data'     : formato = '\nFormato correto: (dd/mm/aaaa)'; break;
				case 'hora'     : 
				case 'hora_hm'  : formato = '\nFormato correto: (hh:mm)';      break;
				case 'hora_hms' : formato = '\nFormato correto: (hh:mm:ss)';   break;
				case 'moeda'    : formato = '\nFormato correto: (99.999,99)';  break;
				case 'inteiro'  : formato = '\nFormato correto: (9999999)';    break;
				case 'real'     : formato = '\nFormato correto: (999999,9)';   break;
				case 'cpf'      : formato = '\nFormato correto: (999.999.999-99)'; break;
				case 'fone'     : formato = '\nFormato correto: (99) 9999-9999'; break;
				case 'cnpj'     : formato = '\nFormato correto: (99.999.999/9999-99)'; break;
				case 'email'    : formato = '\nFormato correto: xxxxxxx@xxxxxxxx.xxx.xx'; break;
				default         : formato = "";
			}
			msg = 'O valor do campo ' + descricao + ' é inválido. ' + formato;
			alert(msg);
			obj.value="";
			obj.focus();			
		}
	}
	return resp;
}

function comparar_horas(hr_ini, hr_fim) {
	var resp = 0;
	if(!validar_hora(hr_ini) || !validar_hora(hr_fim)) {
		resp = 0;
	}
	else {	
		horario_ini = hr_ini.value.split(":");
		horario_fim = hr_fim.value.split(":");
		var horas_ini    = horario_ini[0];
		var minutos_ini  = horario_ini[1];
		var segundos_ini = horario_ini[2];
		var horas_fim    = horario_fim[0];
		var minutos_fim  = horario_fim[1];
		var segundos_fim = horario_fim[2];
		if((horas_ini<horas_fim) || (horas_ini==horas_fim && minutos_ini<minutos_fim) || (horas_ini==horas_fim && minutos_ini==minutos_fim && segundos_ini<segundos_fim))
			resp = 1;
		else if(horas_ini==horas_fim && minutos_ini==minutos_fim && segundos_ini==segundos_fim)
			resp = 2;
		else 
			resp = 3;
	}
	return resp;
}

//problema na conversao
function converte_horas_minutos(hr) {
	horario = hr.value.split(":");
	var horas   = horario[0];
	var minutos = horario[1];
	var total = int(parseInt(horas)*60 + parseInt(minutos));
	alert(total);
	return (total);
}

function Limpar(valor, validos) {
	var result = "";
	var aux;
	for (var i=0; i < valor.length; i++) {
		aux = validos.indexOf(valor.substring(i, i+1));
		if (aux>=0) {
			result += aux;
		}
	}
	return result;
}

//Formata número tipo moeda usando o evento onKeyDown
function mascara_moeda(obj,teclapres,decimal) {
	if((event.keyCode < 48 || event.keyCode > 57) && event.keyCode!=8) event.returnValue = false;
	var tecla = teclapres.keyCode;
	
	vr = Limpar(obj.value,"0123456789");
	while(vr.substring(0,1)=="0") {
		vr = vr.substring(1,vr.length);
	}
	tam = vr.length;
	dec=decimal;

	if (tecla != 8){ tam = vr.length + 1 ; }

	if (tecla == 8 ) { tam = tam - 1 ; }

	if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ) {

		if(tam==0) obj.value = "0,00"; 
		if(tam==1) obj.value = "0,0"+vr ; 
		if(tam==2) obj.value = "0,"+vr;

		if ((tam > dec) && (tam <= 5) ){
			obj.value = vr.substr( 0, tam - 2 ) + "," + vr.substr( tam - dec, tam ) ; 
		}
		if ( (tam >= 6) && (tam <= 8) ){
			obj.value = vr.substr( 0, tam - 5 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; 
		}
		if ( (tam >= 9) && (tam <= 11) ){
			obj.value = vr.substr( 0, tam - 8 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; 
		}
		if ( (tam >= 12) && (tam <= 14) ){
			obj.value = vr.substr( 0, tam - 11 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; 
		}
		if ( (tam >= 15) && (tam <= 17) ){
			obj.value = vr.substr( 0, tam - 14 ) + "." + vr.substr( tam - 14, 3 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - 2, tam ) ;
		}
	} 
}	

// numero
function mascara_numero(obj,dec) {
	vr = Limpar(obj.value,"0123456789");
	vr = vr.replace('0',' ');
	vr = vr.replace(/^\s+/,'');
	vr = vr.replace(' ','0');
	tam = vr.length;
	if(tam<dec+1) {
		for(var i=0; i<dec+1-tam; i++) {
			vr = '0'+vr;
		}
		tam = dec+1;
	}
	x = vr.substr(0, tam-dec);
	a = '';
	z = x.length;
	for(i=0;i<z;i++) {
		a = a+x.substr(i,1); 
		if((z-i-1)%3==0 && i!=z-1) a = a + ".";
	}
	b = vr.substr(tam-dec, dec);
	if(dec==0) obj.value = a;
	else obj.value = a + ',' + b;
}
function entrada_numero(obj,dec) {
	var tecla = event.keyCode;
	var key = String.fromCharCode(tecla);
	obj.value = obj.value+key;
	if ((tecla >= 48 || tecla <= 57) && tecla != 8 && tecla != 9) event.returnValue = false;
		if (event.preventDefault){ //standart browsers
			event.preventDefault();
		}else{ // internet explorer
			event.returnValue = false;
	}
	mascara_numero(obj,dec);
}
function backspace_numero(obj,dec){
	var tecla = event.keyCode;
	if (tecla == 8) {	
		mascara_numero(obj,dec);	
	}
}

