// VARIÁVEIS GLOBAIS ÚTEIS PARA VERIFICAÇÃO DO NAVEGADOR, ETC...
var NS4 = (document.layers) ? 1 : 0;
var IE4 = (document.all) ? 1 : 0;
var COLOU = false;
var OBJ;
var EV;

//////////////////////////////////////////////////////////////////////////////
// INCLUINDO OS SCRIPTS NECESSÁRIOS
document.write( "<script language=\"JavaScript\" src=\"js/form/infraEstrutura.js\"></script>" );

document.write( "<script language=\"JavaScript\" src=\"js/form/data.js\"></script>" );
document.write( "<script language=\"JavaScript\" src=\"js/form/dataEvents.js\"></script>" );

document.write( "<script language=\"JavaScript\" src=\"js/form/email.js\"></script>" );
document.write( "<script language=\"JavaScript\" src=\"js/form/emailEvents.js\"></script>" );

document.write( "<script language=\"JavaScript\" src=\"js/form/cep.js\"></script>" );
document.write( "<script language=\"JavaScript\" src=\"js/form/cepEvents.js\"></script>" );

document.write( "<script language=\"JavaScript\" src=\"js/form/cpf.js\"></script>" );
document.write( "<script language=\"JavaScript\" src=\"js/form/cpfEvents.js\"></script>" );

document.write( "<script language=\"JavaScript\" src=\"js/form/cnpj.js\"></script>" );
document.write( "<script language=\"JavaScript\" src=\"js/form/cnpjEvents.js\"></script>" );

document.write( "<script language=\"JavaScript\" src=\"js/form/tituloEleitor.js\"></script>" );
document.write( "<script language=\"JavaScript\" src=\"js/form/tituloEleitorEvents.js\"></script>" );

document.write( "<script language=\"JavaScript\" src=\"js/form/rgEvents.js\"></script>" );

document.write( "<script language=\"JavaScript\" src=\"js/form/dinheiroEvents.js\"></script>" );

document.write( "<script language=\"JavaScript\" src=\"js/form/numerico.js\"></script>" );
document.write( "<script language=\"JavaScript\" src=\"js/form/alfabetico.js\"></script>" );


///////////////////////////////////////////////////////////////////////////////////
// (FUNÇÕES ABSTRATAS) PARA OS EVENTOS QUE OCORREM SOBRE OS CAMPOS DE UM FORMULÁRIO
function fkeypress( ) {
	eval( "fkeypress_" + OBJ.tipo + "( OBJ, EV );" );
}

//////////////////////////////////////////////////////////////////////////////
//@ Função: 	ffocus( obj, ev )
//@ Descrição: 	Função abstrata que DEVE** ser utilizada nos campos de formulários com tipos especiais
//				e que estejam utilizando a camada de mascaramento.
//@ Entradas:	obj 	-> Formulário a ser submetido.
//@ Entradas:	ev 		-> Objeto event utilizado para detectar ações do mouse e teclado.
function ffocus( obj, ev ) {

	// INICIALIZA A DEVIDA MENSAGEM NO STATUS DO BROWNSER
	if( obj.obrigatorio ) {
		window.status = "[ PREENCHIMENTO NECESSÁRIO ] ";
	}
	else {
		window.status = "";
		setaMensagem( "" );
	}
	
	// somente para os tipos especiais deve-se setar os tratadores de eventos especiais
	if( typeof obj.tipo != "undefined" ) {
	
		// SETANDO O CAMPO E EVENTO CORRENTES
		EV 				= ev;
		OBJ 			= obj;
		// SETANDO O OUTROS TRATADORES DE EVENTOS
		OBJ.onkeypress 	= fkeypress;
		OBJ.onkeydown 	= fkeydown;
		OBJ.onkeyup 	= fkeyup;
		OBJ.onblur 		= fblur;
		
		// somente para os tipos especiais chama-se a função ffcocus específica
		return eval( "ffocus_" + OBJ.tipo + "( OBJ );" );
	}
	else
		return true;
}
//////////////////////////////////////////////////////////////////////////////


function fkeydown( ) {
	return eval( "fkeydown_" + OBJ.tipo + "( OBJ, EV );" );
}

function fkeyup( ) {
	return eval( "fkeyup_" + OBJ.tipo + "( OBJ );" );
}

function fblur( ) {
	// RETIRANDO MENSAGENS
	window.status = "";
	setaMensagem( window.status );
	return eval( "fblur_" + OBJ.tipo + "( OBJ );" );
}
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
//@ Função: 	fsubmit( obj )
//@ Descrição: 	Função que DEVE** ser utilizada nos botões de formulários com tipos especiais
//				e que estejam utilizando a camada de mascaramento para poder submeter o formulário.
//				Esta função já verifica se os campos obrigatórios foram devidamente preenchidos 
//				e desmascara e formata os dados coerentemente a fim de enviá-los à camada dinâmica
//@ Entradas:	obj 	-> Formulário a ser submetido.
function fsubmit( obj ) {
	
	// VERIFICANDO SE TODOS OS CAMPOS OBRIGATÓRIOS FORAM PREENCHIDOS
	for ( var i=0; i < obj.length; i++ ) {
		if( obj[ i ].obrigatorio == 1 ){
			if( obj[ i ].value == "" ) {
				window.alert( "O preenchimento do campo \"" + obj[ i ].apresentacao + "\" é necessário!" );
				obj[ i ].focus( );
				return 0;
			}
		}
	}
	
	// DESMASCARANDO E FORMATANDO PARA ENVIAR OS DADOS VIA MÉTODO POST À CAMADA DINÂMICA
	for ( var i=0; i < obj.length; i++ ) {
		if( obj[ i ].tipo == "data" ) {
			obj[ i ].value = desmascara( obj[ i ].value );
			obj[ i ].value = 	obj[ i ].value.substring( 4, 8 ) + 
								obj[ i ].value.substring( 2, 4 ) +
								obj[ i ].value.substring( 0, 2 );
		}
		else if( obj[ i ].tipo == "cpf" || obj[ i ].tipo == "cnpj" || obj[ i ].tipo == "cep" || obj[ i ].tipo == "tituloEleitor"  || obj[ i ].tipo == "rg" || obj[ i ].tipo == "numerico" ) {
			obj[ i ].value = desmascara( obj[ i ].value );
		}
	}
	
	// SUBMIT...
	obj.submit( );
}
//////////////////////////////////////////////////////////////////////////////




//////////////////////////////////////////////////////////////////////////////
//@ Função: popSubmit( obj, pag, acao, style )
//@ Descrição: 	Função que pode ser utilizada nos botões de formulários ( de preferência input type = "button" )
// 				para possibilitar a submissão numa janela popup.
//@ Entradas:	obj 	-> Formulário a ser submetido.
//				pag 	-> Página destino.
//				acao 	-> Ação do formulário.
//				style 	-> estilo para formatação da janela popup a ser aberta.
function popSubmit( obj, pag, acao, style ){
	var get_string = "";
	// VERIFICANDO SE TODOS OS CAMPOS OBRIGATÓRIOS FORAM PREENCHIDOS
	for ( var i=0; i < obj.length; i++ ) {
		if( obj[ i ].obrigatorio == 1 ){
			if( obj[ i ].value == "" ) {
				window.alert( "O preenchimento do campo \"" + obj[ i ].apresentacao + "\" é necessário!" );
				obj[ i ].focus( );
				return 0;
			}
		}
	}
	
	// DESMASCARANDO E FORMATANDO PARA ENVIAR OS DADOS VIA MÉTODO GET À CAMADA DINÂMICA
	for ( var i=0; i < obj.length; i++ ) {
		if( obj[ i ].tipo == "data" ) {
			obj[ i ].value = desmascara( obj[ i ].value );
			obj[ i ].value = 	obj[ i ].value.substring( 4, 8 ) + 
								obj[ i ].value.substring( 2, 4 ) +
								obj[ i ].value.substring( 0, 2 );

		}
		else if( obj[ i ].tipo == "cpf" || obj[ i ].tipo == "cnpj" || obj[ i ].tipo == "cep" || obj[ i ].tipo == "tituloEleitor"  || obj[ i ].tipo == "rg" || obj[ i ].tipo == "numerico" ) {
			obj[ i ].value = desmascara( obj[ i ].value );
		}
		
		// VERIFICA OS CASOS ESPECIAIS E CRIA A QUERY STRING A SER ANEXADA JUNTO À PÁGINA DESTINO
		if( obj[ i ].type == "radio" ) {
			if( obj[ i ].checked )
				get_string += obj[ i ].name + "=" + obj[ i ].value + "&";
		}
		else if( obj[ i ].type == "checkbox" ) {
			if( obj[ i ].checked )
				get_string += obj[ i ].name + "[" + i + "]=" + obj[ i ].value + "&";
		}
		else
			get_string += obj[ i ].name + "=" + obj[ i ].value + "&";
	}
	
	// FINALIZANDO, CONSTRUINDO A URL COM $_GET E DEPOIS ABRINDO A JANELA DESTINO
	pag = pag + "?acao=" + acao + "&" + get_string;
	window.open( pag, acao, style );
}
//////////////////////////////////////////////////////////////////////////////
