
/**
* Máscara para números inteiros.
*/
function fncMasNumeroInteiro_KeyPress( obj, evento ) {
	return fncPadrao(obj, evento, '####################');
}
function fncMasNumeroInteiro_KeyUp( obj, evento ) {
	fncMascara(obj, evento, '####################', 'right');
}
function fncMasNumeroInteiro_Blur( obj, evento ) {
	if ( obj.value != '' )
		fncMascara(obj, evento, '####################', 'right');
}

/**
* Máscara para números decimais.
*/
function fncMasNumeroDecimal_KeyPress( obj, evento ) {
	return fncPadrao(obj, evento, '###.###.###.###.###,##');
}
function fncMasNumeroDecimal_KeyUp( obj, evento ) {
	fncMascara(obj, evento, '###.###.###.###.###,##', 'right');
}
function fncMasNumeroDecimal_Blur( obj, evento ) {
	if ( obj.value != '' )
		fncMascara(obj, evento, '###.###.###.###.###,##', 'right');
}

/**
* Máscara para CPF.
*/
function fncMasCPF_KeyPress( obj, evento ) {
	return fncPadrao(obj, evento, '###########');
}
function fncMasCPF_KeyUp( obj, evento ) {
	fncMascara(obj, evento, '###########');
}
function fncMasCPF_Blur( obj, evento ) {
	if ( obj.value != '' )
		obj.value = ('00000000000' + obj.value).substring(obj.value.length);
}

/**
* Máscara para datas.
*/
function fncMasData_KeyPress( obj, evento ) {
	return fncPadrao(obj, evento, '##/##/####');
}
function fncMasData_KeyUp( obj, evento ) {
	fncMascara(obj, evento, '##/##/####');
}
function fncMasData_Blur( obj, evento ) {
	var dt = new Date();
	var arr = obj.value.split('/');
	var dia = 0;
	var mes = 0;
	var ano = 0;
	
	if ( obj.value != '' )
	{
		if ( arr.length >= 1 ) dia = parseInt(arr[0],10);
		if ( arr.length >= 2 ) mes = parseInt(arr[1],10);
		if ( arr.length >= 3 ) ano = parseInt(arr[2],10);
		
		if ( dia > 31 ) dia = 31;
		if ( dia < 10 ) dia = '0' + dia.toString();
		
		if ( mes > 12 ) mes = 12;
		if ( mes < 10 ) mes = '0' + mes.toString();
		
		if ( ano == 0   ) ano = dt.getFullYear().toString();
		if ( ano < 10   ) ano = Math.floor(dt.getFullYear()/  10).toString() + ano.toString();
		if ( ano < 100  ) ano = Math.floor(dt.getFullYear()/ 100).toString() + ano.toString();
		if ( ano < 1000 ) ano = Math.floor(dt.getFullYear()/1000).toString() + ano.toString();
		
		obj.value = dia + '/' + mes + '/' + ano;
	}
}

/**
* Máscara para hora.
*/
function fncMasHora_KeyPress( obj, evento ) {
	return fncPadrao(obj, evento, '##:##');
}
function fncMasHora_KeyUp( obj, evento ) {
	fncMascara(obj, evento, '##:##');
}
function fncMasHora_Blur( obj, evento ) {
	var arr = obj.value.split(':');
	var hor = 0;
	var min = 0;
	
	if ( obj.value != '' )
	{
		if ( arr.length >= 1 ) hor = parseInt(arr[0],10);
		if ( arr.length >= 2 ) min = parseInt(arr[1],10);
		
		if ( hor > 23 ) hor = 23;
		if ( hor < 10 ) hor = '0' + hor.toString();
		
		if ( min > 59 ) min = 59;
		if ( min < 10 ) min = '0' + min.toString();
		
		obj.value = hor + ':' + min;
	}
}

/**
* Máscara para mes/ano.
*/
function fncMasMesAno_KeyPress( obj, evento ) {
	return fncPadrao(obj, evento, '##/####');
}
function fncMasMesAno_KeyUp( obj, evento ) {
	fncMascara(obj, evento, '##/####');
}
function fncMasMesAno_Blur( obj, evento ) {
	var dt = new Date();
	var arr = obj.value.split('/');
	var mes = 0;
	var ano = 0;
	
	if ( obj.value != '' )
	{
		if ( arr.length >= 1 ) mes = parseInt(arr[0],10);
		if ( arr.length >= 2 ) ano = parseInt(arr[1],10);
		
		if ( mes > 12 ) mes = 12;
		if ( mes < 10 ) mes = '0' + mes.toString();
		
		if ( ano == 0   ) ano = dt.getFullYear().toString();
		if ( ano < 10   ) ano = Math.floor(dt.getFullYear()/  10).toString() + ano.toString();
		if ( ano < 100  ) ano = Math.floor(dt.getFullYear()/ 100).toString() + ano.toString();
		if ( ano < 1000 ) ano = Math.floor(dt.getFullYear()/1000).toString() + ano.toString();
		
		obj.value = mes + '/' + ano;
	}
}

/**
* Máscara para CEP.
*/
function fncMasCEP_KeyPress( obj, evento ) {
	return fncPadrao(obj, evento, '#####-###');
}
function fncMasCEP_KeyUp( obj, evento ) {
	fncMascara(obj, evento, '#####-###');
}
function fncMasCEP_Blur( obj, evento ) {
	var arr = obj.value.split('-');
	var bl1 = 0;
	var bl2 = 0;

	if ( obj.value != '' )
	{
		if ( arr.length >= 1 ) bl1 = parseInt(arr[0],10);
		if ( arr.length >= 2 ) bl2 = parseInt(arr[1],10);
		
		bl1 = '00000' + bl1.toString();
		bl2 = '000'   + bl2.toString();
		
		bl1 = bl1.substring(bl1.length-5);
		bl2 = bl2.substring(bl2.length-3);
	
		obj.value = bl1 + '-' + bl2;
	}
}

/**
* Máscara para Telefone.
*/
function fncMasFone_KeyPress( obj, evento ) {
	return fncPadrao(obj, evento, '## ####-####');
}
function fncMasFone_KeyUp( obj, evento ) {
	fncMascara(obj, evento, '## ####-####');
}
function fncMasFone_Blur( obj, evento ) {
	var ddd, pre, pos;
	var fone = obj.value.replace(/[^0-9]/g, '');
	
	if ( obj.value != '' )
	{
		ddd = fone.substring(0,2);
		
		fone = fone.substring(2);
		fone = ('00000000' + fone).substring(fone.length);
		
		pre = fone.substring(0,4);
		pos = fone.substring(4);
		
		obj.value = ddd + ' ' + pre + '-' + pos;
	}
}


//*************************************************************************************************
// Funções Auxiliares.
//*************************************************************************************************

function fncPadrao( obj, evento, mascara )
{
	var tecla = (evento.which) ? evento.which : evento.keyCode;
	var chr   = String.fromCharCode(tecla);
	
	if ( !/[0-9]/.test(chr) )
		return false;	

	if ( obj.value.length >= mascara.length )
		return false;
	else
		return true;
}

function fncMascara( obj, evento, mascara, alinhamento ) 
{
	var tecla = (evento.which) ? evento.which : evento.keyCode;
	
	if ( tecla < 48 && tecla != 8 )
		return;
	
	var pos, chr;
	var strValor  = obj.value.toString().replace(/[^0-9]/g, '');
	var novoValor = '';
	var contador  = 0;
	
	if ( alinhamento == null )
		alinhamento = 'left';
	
	//obj.style.textAlign = alinhamento;
	
	if ( alinhamento.toLowerCase() == 'right' ) {
		for ( var i = mascara.length -1; i >= 0; i-- ) {
			chr = mascara.charAt(i); 
			novoValor = chr + novoValor;
			if (chr == '#')
				contador++;
			if (contador >= strValor.length)
				break;
		}
	}
	else {
		for ( var i = 0; i < mascara.length; i++ ) {
			chr = mascara.charAt(i); 
			novoValor += chr;
			if (chr == '#')
				contador++;
			if (contador >= strValor.length)
				break;
		}
	}
	
	while ( strValor.length > 0 ) {
		
		pos = novoValor.indexOf('#');
		chr = strValor.charAt(0);
		
		if ( pos >= 0 )
			novoValor = novoValor.replace('#', chr); 
		else
			break;
		
		strValor = strValor.substring(1);
	}
	
	novoValor = novoValor.replace(/#/g, '');
	
	obj.value = novoValor;
	
	return true;
}
