/**
 ****************************************************************************************
 * Autor: Rodrigo da Silva Luz.															*
 * Data: 07/05/2010.																	*
 * E-mail: rodrigosl336@gmail.com.														*
 * 																						*
 * Descrição:																			*
 * Formata a data, cpf ou cnpj com barras pontos e traços.								*
 * 																						*
 * @parâmetro Campo - no caso this (este)												*
 * @parâmetro teclapres - tecla digitada no text										*
 * @parâmetro marcara - tipo de campo desejado ##### ou ##/##/## ou ###.###.###-## ou	*
 * ##.###.#####/##																		*
 * @retorno number format																*
 ****************************************************************************************
 */
function formata_data_cpf_cnpj(Campo, teclapres, mascara){
	//pegando o tamanho do texto da caixa de texto com delay de -1 no event
	//ou seja o caractere que foi digitado não será contado.
	strtext = Campo.value;
	tamtext = strtext.length;
	//pegando o tamanho da mascara
	tammask = mascara.length;
	//criando um array para guardar cada caractere da máscara
	arrmask = new Array(tammask);
	//jogando os caracteres para o vetor
	for (var i = 0; i < tammask; i++) {
		arrmask[i] = mascara.slice(i, i + 1);
	}
	//alert (teclapres.keyCode)
	//começando o trabalho sujo
	if (((((arrmask[tamtext] == "#") || (arrmask[tamtext] == "9"))) || (((arrmask[tamtext + 1] != "#") || (arrmask[tamtext + 1] != "9"))))) {
		if ((teclapres.keyCode >= 37 && teclapres.keyCode <= 40) || (teclapres.keyCode >= 48 && teclapres.keyCode <= 57) || (teclapres.keyCode >= 96 && teclapres.keyCode <= 105) || (teclapres.keyCode == 8) || (teclapres.keyCode == 9) || (teclapres.keyCode == 46) || (teclapres.keyCode == 13)) {
			limpa_digitacao(Campo, arrmask[tamtext], teclapres.keyCode, strtext);
		}
		else {
			dispara_evento(Campo, strtext);
		}
	//Aqui funcionaria a mascara para números mas eu ainda não implementei
	} else {
		if ((arrmask[tamtext] == "A")) {
			charupper = event.valueOf();
			//charupper = charupper.toUpperCase()
			dispara_evento(Campo, strtext);
			masktext = strtext + charupper;
			Campo.value = masktext;
		}
	}
}

/**
 ****************************************************************************************
 * Autor: Rodrigo da Silva Luz.															*
 * Data: 07/05/2010.																	*
 * E-mail: rodrigosl336@gmail.com.														*
 * 																						*
 * Descrição:																			*
 * Limpa o campo quando digitados os caracteres que não são nescessários tipo "/".		*
 * 																						*
 * @parâmetros utilizados pela função valida_data_cpf_cnpj								*
 * @retorno false -1																	*
 ****************************************************************************************
 */
function limpa_digitacao(Campo, arrpos, teclapres_key, strtext){
	if (((arrpos == "/") || (arrpos == ".") || (arrpos == ",") || (arrpos == ":") || (arrpos == " ") || (arrpos == "-")) && !(teclapres_key == 8)) {
		separador = arrpos;
		masktext = strtext + separador;
		Campo.value = masktext;
	}
}

/**
 ****************************************************************************************
 * Autor: Rodrigo da Silva Luz.															*
 * Data: 07/05/2010.																	*
 * E-mail: rodrigosl336@gmail.com.														*
 * 																						*
 * Descrição:																			*
 * Dispara evento de redução do caracter												*
 * tipo "/".																			*
 * 																						*
 * @parâmetros utilizados pela função valida_data_cpf_cnpj								*
 * @retorno false -1																	*
 ****************************************************************************************
 */
function dispara_evento(Campo, strtext){
	event.returnValue = false;
	if (strtext != "") {
		Campo.value = strtext;
	}
}

/**
 ****************************************************************************************
 * Autor: Rodrigo da Silva Luz.															*
 * Data: 07/05/2010.																	*
 * E-mail: rodrigosl336@gmail.com.														*
 * 																						*
 * Descrição:																			*
 * Conta a quantidade de caracteres digitadas no textarea e se ultrapassar o número		*
 * expecificado na variável valor manda o alert, também diminui o limite especificado a	*
 * medida que o internauta digita no campo.												*
 * 																						*
 * Funciona apenas para IE e CHROME														*
 * 																						*
 * @parâmetro Campo - no caso this (este)												*
 * @parâmetro valor - valor especificado com a this exemplo (1000) que quer dizer 1000	*
 * 				caracteres																*
 * @retorno Mensagem Alert																*
 ****************************************************************************************
 */
function conta_caracteres(Campo, valor){
	document.getElementById("Qtd").innerText = valor-Campo.value.length
	if ((valor - Campo.value.length) == 0) {
		alert('Atenção, você atingiu o limite máximo de caracteres!');
	}
}

/**
 ****************************************************************************************
 * Autor: Rodrigo da Silva Luz.															*
 * Data: 07/05/2010.																	*
 * E-mail: rodrigosl336@gmail.com.														*
 * 																						*
 * Descrição:																			*
 * Formata número tipo moeda usando o evento onKeyDown									*
 * 																						*
 * @parâmetro campo - no caso this (este)												*
 * @parâmetro tammax - tamanho do campo em caracteres ex "20"							*
 * @parâmetro teclapres - tecla digitada capturada pela função "event"					*
 * @parâmetro teclapres - a quantidade de descimais desejado ex "9"						*
 * @retorno Mensagem Alert																*
 ****************************************************************************************
 */
function formata_moeda (campo,tammax,teclapres,decimal) {
	var tecla = teclapres.keyCode;
	vr = limpa_campo(campo.value,"0123456789");
	tam = vr.length;
	dec=decimal
	
	// Saiba o número da tecla
	//alert (tecla);
	
	// Inpede que se digite no campo text letras e caracteres especiais
	if ((tecla >= 1 && tecla <= 7) || (tecla >= 10 && tecla <= 45) || (tecla == 47) || (tecla >= 58 && tecla <= 95) || (tecla >= 106 && tecla <= 109) || tecla >= 111 && tecla != 8) {
		event.returnValue = false;
	} else {	
		if (tam < tammax && 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 <= dec ) {
				campo.value = vr;
			}
			if ( (tam > dec) && (tam <= 5) ) {
				campo.value = vr.substr( 0, tam - 2 ) + "," + vr.substr( tam - dec, tam );
			}
			if ( (tam >= 6) && (tam <= 8) ) {
				campo.value = vr.substr( 0, tam - 5 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam );
			}
			if ( (tam >= 9) && (tam <= 11) ) {
				campo.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) ) {
				campo.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) ) {
				campo.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 );
			}
		} 
	}
}

/**
 ****************************************************************************************
 * Autor: Rodrigo da Silva Luz.															*
 * Data: 07/05/2010.																	*
 * E-mail: rodrigosl336@gmail.com.														*
 * 																						*
 * Descrição:																			*
 * Retira caracteres invalidos da string tipo "/".										*
 * 																						*
 * @parâmetros utilizados pela função formata_moeda										*
 * @retorno false -1																	*
 ****************************************************************************************
 */
function limpa_campo (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;
}

/**
 ****************************************************************************************
 * Autor: Rodrigo da Silva Luz.															*
 * Data: 07/05/2010.																	*
 * E-mail: rodrigosl336@gmail.com.														*
 * 																						*
 * Descrição:																			*
 * Função simples que impede permite a digitação apenas de números.						*
 * 																						*
 ****************************************************************************************
 */
// Inpede que se digite no campo text letras e caracteres especiais
function so_nemuros() {
	var ctrl=window.event.ctrlKey;
	var tecla=window.event.keyCode;
	if ((tecla >= 1 && tecla <= 7) || (tecla >= 10 && tecla <= 45) || (tecla == 47) || (tecla >= 58 && tecla <= 95) || (tecla >= 106 && tecla <= 109) || tecla >= 111 && tecla != 8) {
		event.keyCode=0;
		event.returnValue=false;
	}
}
