/**
 * @fileOverview Biblioteca Teclado
 * @author Juliano Vidal
 * @date 15/04/2009
 */
 

/**
 * Realiza filtragem alfanumerica em campos de input (evento onkeypress)
 * @example onkeypress="return mascaraAlfaNumerica(event, 1,0,1,0,0,1,1);"
 * @param {Object} evento Objeto event
 * @param {Boolean} hasNumbers Flag de Numero "0-9"
 * @param {Boolean} hasVirgula Flag de Virgula ","
 * @param {Boolean} hasPonto Flag de Ponto "."
 * @param {Boolean} hasHifen Flag de Hifen "-"
 * @param {Boolean} hasBarra Flag de Barra "/"
 * @param {Boolean} hasUnderline Flag de Underline "_"
 * @param {Boolean} hasArroba Flag de Arroba "@"
 * @param {Boolean} hasEspaco Flag de Espaco " "
 * @return {Boolean} Retorna true se passar no filtro, false caso contrario
 */
function mascaraAlfaNumerica(evento, hasNumbers, hasVirgula, hasPonto, hasHifen, hasBarra, hasUnderline, hasArroba, hasEspaco) {
	var tecla = new Number();
    if(window.event) {
		tecla = evento.keyCode; 
	} 
	else if(evento.which) {
		tecla = evento.which; 
	} else {
		return true;
	}

	if ( (tecla >= 65  && tecla <= 90)   || 
		 (tecla >= 97  && tecla <= 122)  || 
		 (tecla >= 192 && tecla <= 221)  || 
		 (tecla >= 224 && tecla <= 246)  || 
		 (tecla >= 249 && tecla <= 255)  ||
		 (tecla == 8) ) {
		return true;
	}
	else {
		if ( (tecla == 32 && hasEspaco) ||  
			 (tecla == 44 && hasVirgula) || 
			 (tecla == 45 && hasHifen) || 
			 (tecla == 46 && hasPonto) || 
			 (tecla == 47 && hasBarra) || 
			 (tecla == 64 && hasArroba) || 
			 (tecla == 95 && hasUnderline) || 
			 ( (tecla >= 48 && tecla <= 57) && hasNumbers ) ) {
			return true;
		}
		return false;
	}
}


/**
 * Realiza filtragem numerica em campos de input (evento onkeypress).
 * @example onkeypress="return mascaraNumerica(event, 1,1,0,0);"
 * @param {Object} evento Objeto event
 * @param {Boolean} hasVirgula Flag de Virgula ","
 * @param {Boolean} hasPonto Flag de Ponto "."
 * @param {Boolean} hasHifen Flag de Hifen "-"
 * @param {Boolean} hasBarra Flag de Barra "/"
 * @return {Boolean} Retorna true se passar no filtro, false caso contrario
 */
function mascaraNumerica(evento, hasVirgula, hasPonto, hasHifen, hasBarra) {
	var tecla = new Number();
    if(window.event) {
		tecla = evento.keyCode; 
	} 
	else if(evento.which) {
		tecla = evento.which; 
	} else {
		return true;
	}
    
	var algarismos = '0123456789';

	if ( tecla == 36 || tecla == 40 || tecla == 41 || tecla == 42 || 
		 tecla == 43 || tecla == 63 || tecla == 91 || tecla == 92 || 
		 tecla == 94 || tecla == 93 || tecla == 124 ) {
		return false;
	}
	else {
	 	if ( (tecla == 44 && hasVirgula) || 
	 		 (tecla == 45 && hasHifen) || 
	 		 (tecla == 46 && hasPonto) || 
	 		 (tecla == 47 && hasBarra) ||
			 (tecla == 8) ) {
			return true;
		}
	 	else {
			if ( !(algarismos.search( String.fromCharCode (tecla) ) != -1) || tecla == 46 ) {
				return false;
			}
			else {
				return true;
			}
	 	}
	}
}
