/**
 * Faz a contagem dos caracteres restantes me campos de texto.<br>
 * Obs.: A propriedade maxlength do campo monitorado deve ser setada.
 * @param _obj : É o objeto campo de texto que estamos monitorando.
 * @param _ret : É o id do componente onde iremos exibir a contagem.
 * @version 1.0
 **/
function contaChars(_obj, _ret){
		var span = "<span style=\"font-size: 9px; font-family: Verdana, Arial, Helvetica, sans-serif; color: #6d6e71; \">"
		var fechaSpan = " caractere(s) restante(s).</span>";
				document.getElementById(_ret).innerHTML= span + ( parseInt(_obj.maxLength) - _obj.value.length) + fechaSpan;
}

/**
 * Remove todos espaços das extremidades de uma string <br>
 *  e elimina excesso de espaços entre os caracteres.
 * @version 1.0
 **/
function trim(str){
	var tmp ="";
	if (str!=null){
		tmp = str.replace(/^\s+|\s+$/,""); 
		tmp = tmp.replace(/\s+/," ");
	}
	return tmp;
}


//Funções de manipulação do Layout;
function mostrarObj(_id){
	if(document.getElementById(_id).style.display == 'none')
		document.getElementById(_id).style.display = 'block';
	else
		document.getElementById(_id).style.display = 'none';
	
	document.getElementById(_id).height = document.getElementById(_id).scrollHeight;
}

//Funções de Formatação;
function formataFone(_event){
	var caracter;
	var obj = null;

	if(window.event){ // IE
		caracter = _event.keyCode;
		obj = _event.srcElement;
	} else if(_event.which){ // Netscape/Firefox/Opera
		caracter = _event.which;
		obj = _event.target;
	}

	var numDigit = /\d/;

	if(obj.value.length < 13 && numDigit.test(String.fromCharCode(caracter))){
		switch(obj.value.length){
			case 0:
				obj.value = '(';
				break;
			case 3:
				obj.value +=  ')';
				break;
			case 8:
				obj.value += '-';
				break;
		}
		return true;
	}else{
		if(caracter == 8 || typeof caracter == 'undefined')
			return true;

		return false;
	}
}

function formataCNPJ(_event){
	var numero = /\d/;
	var obj = null;

	var caracter = null;
	if(navigator.appName.indexOf("Microsoft") < 0){
		obj = _event.target;
		caracter = _event.which;
	}else{
		obj = _event.srcElement;
		caracter = _event.keyCode;
	}

	if(obj.value.length < 18 && numero.test(String.fromCharCode(caracter))){
		switch(obj.value.length){
			case 2:
			case 6:
				obj.value += '.';
				break;
			case 10:
				obj.value += '/';
				break;
			case 15:
				obj.value += '-';
				break;
		}

		return true;
	}else{
		if(caracter == 8 || typeof caracter == 'undefined'){
			return true;
		}
		return false;
	}
}

function formataCPF(_event){
	var numero = /\d/;
	var obj = null;
	
	var caracter = null;
	if(navigator.appName.indexOf("Microsoft") < 0){
		obj = _event.target;
		caracter = _event.which;
	}else{
		obj = _event.srcElement;
		caracter = _event.keyCode;
	}
	
	
	
	if(obj.value.length < 14 && numero.test(String.fromCharCode(caracter))){
		switch(obj.value.length){
			case 2:	break;
			case 3:
				obj.value += '.';
				break;
			case 7:
				obj.value += '.';
				break;
			case 11:
				obj.value += '-';
				break;
		}

		return true;
	}else{
		if(caracter == 8 || typeof caracter == 'undefined'){
			return true;
		}
		return false;
	}
}


function formataData(_event){
	var numero = /\d/;
	var obj = null;
	var caracter = null;

	if(navigator.appName.indexOf("Microsoft") < 0){
		obj = _event.target;
		caracter = _event.which;
	}else{
		obj = _event.srcElement;
		caracter = _event.keyCode;
	}

	if(obj.value.length < 10 && numero.test(String.fromCharCode(caracter))){
		switch(obj.value.length){
			case 2:
			case 5:
				obj.value += '/';
				break;
		}
		return true;
	} else {
		if(caracter == 8 || typeof caracter == 'undefined'){
			return true;
		}

		return false;
	}
}

function formataHora(_event){
	var numero = /\d/;
	var obj = null;
	var caracter = null;

	if(navigator.appName.indexOf("Microsoft") < 0){
		obj = _event.target;
		caracter = _event.which;
	} else {
		obj = _event.srcElement;
		caracter = _event.charCode;
	}

	if(obj.value.length < 5 && numero.test(String.fromCharCode(caracter))){
		if(obj.value.length == 2){
			obj.value += ':';
		}

		return true;
	} else {
		if(caracter == 8 || typeof caracter == 'undefined'){
			return true;
		}

		return false;
	}
}

//funções de validação;
function validaHora(_obj){
	var hora = /([01]\d|2[0-3]):[0-5]\d/;

	if(_obj != null){
		if(!hora.test(_obj.value)){
			_obj.style.background = '#CCCCCC';
		} else {
			_obj.style.background = '#FFFFFF';
		}
	}
}

function validaData(_obj){
	var data = /([0-2]\d\/(0\d|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[135789]|1[0-2]))\/\d{4}/;

	if(_obj != null){
		if(!data.test(_obj.value)){
			_obj.style.background = '#CCCCCC';
		}else{
			_obj.style.background = '#FFFFFF';
		}
	}
}

function validaCNPJ(_obj){
	var valor = _obj.value.replace(/\D+/g, '');
	var peso = 5;
	var total = 0;

	for(var cont = 0; cont < valor.length - 2; ++cont){
		total += (parseInt(valor.charAt(cont)) * peso);

		if(peso > 2)
			--peso;
		else
			peso = 9;
	}

	total = total % 11;

	if(total < 2)
		total = 0;
	else
		total = 11 - total;

	if(total == parseInt(valor.charAt(valor.length -2))){
		peso = 6;
		total = 0;

		for(var cont = 0; cont < valor.length -1; ++ cont){
			total += (parseInt(valor.charAt(cont)) * peso);

			if(peso > 2)
				--peso;
			else
				peso = 9;
		}

		total = total % 11;

		if(total < 2)
			total = (0 == parseInt(valor.charAt(valor.length -1)));
		else
			total = ((11 - total) == parseInt(valor.charAt(valor.length -1)));

	}

	if(_obj != null && total != true){
		_obj.style.background = '#CCCCCC';
		total = false;
	}else{
		_obj.style.background = '#FFFFFF';
	}

	return total;
}

function mascaraCPF(_cpf){
	if ( _cpf.indexOf(".") < 0 && _cpf.indexOf("-") < 0 ){
		var parte1 = _cpf.substring(0,3); 
		var parte2 = _cpf.substring(3,6);
		var parte3 = _cpf.substring(6,9);
		var parte4 = _cpf.substring(9,11);
		return parte1 + "." + parte2 + "." + parte3 + "-" + parte4;
	}
	return _cpf;
}