/*
 * Funções de Formulários
 * 26/02/2008
 * 
 * Bruno Afonso
 * 
 */

/*
 * Máscaras de Entrada Formulários
 */

function is_function( key ){
		return (key == 9) || (key == 8) || (key == 13) || ( key == 35 ) || ( key == 36 ) || ( key == 37 ) || ( key == 39 );
}

function validchar( obj, mask, key, index ){
		var valid = false; 
		switch ( mask.substr( index, 1 ) ) {
			case "X":
				valid = true;
				break;
			case "A":
				valid = ( (key > 65) && (key < 90) ) || ( (key > 97) && (key < 122) );
				break;
			case "9":
				valid = (key > 47) && (key < 58); // se for numero
				break;
			default :
				valid = (mask.substr( index, 1 ) == String.fromCharCode( key ));
				if( validchar( obj, mask, key, index+1 ) ) {
						valid =true;
						obj.value += mask.substr( index, 1 );
				}
				break;
		}
		return valid;
}

function mask( mask, e, obj ){
				//pega a caracter referente a tecla digitada
				var key;
				if(window.event || !e.which){ // IE
						key = e.keyCode; // for IE, same as window.event.keyCode
				} else if(e) {// netscape
						key = e.which;
				} 	else {
						return true;
				}

				var mascara = mask;
				//validacao de caracteres de acordo com a mascara
				var valid_key = false;
				if( !is_function( key ) ){
						if ( obj.value.length < mask.length) 
							valid_key = validchar( obj, mascara, key, obj.value.length );
						else
							valid_key = false;  
				} else
						valid_key = true;
				
				return valid_key;
}


	//
	//-----------------------------------------------------
	//Funcao: MascaraMoeda
	//Sinopse: Mascara de preenchimento de moeda
	//Parametro:
	//   objTextBox : Objeto (TextBox)
	//   SeparadorMilesimo : Caracter separador de milésimos
	//   SeparadorDecimal : Caracter separador de decimais
	//   e : Evento
	//Retorno: Booleano
	//Autor: Gabriel Fróes - www.codigofonte.com.br
	//-----------------------------------------------------
function MascaraMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){
    var sep = 0;
    var key = '';
    var i = j = 0;
    var len = len2 = 0;
    var strCheck = '0123456789';
    var aux = aux2 = '';
    var whichCode = (window.Event) ? e.which : e.keyCode;
    if (whichCode == 13) return true;
    key = String.fromCharCode(whichCode); // Valor para o código da Chave
    if (strCheck.indexOf(key) == -1) return false; // Chave inválida
    len = objTextBox.value.length;
    for(i = 0; i < len; i++)
        if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break;
    aux = '';
    for(; i < len; i++)
        if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i);
    aux += key;
    len = aux.length;
    if (len == 0) objTextBox.value = '';
    if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux;
    if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux;
    if (len > 2) {
        aux2 = '';
        for (j = 0, i = len - 3; i >= 0; i--) {
            if (j == 3) {
                aux2 += SeparadorMilesimo;
                j = 0;
            }
            aux2 += aux.charAt(i);
            j++;
        }
        objTextBox.value = '';
        len2 = aux2.length;
        for (i = len2 - 1; i >= 0; i--)
        objTextBox.value += aux2.charAt(i);
        objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
    }
    return false;
}	


