//mensagem exibida ao carregar um formulário após POST
//(informa visualmente o usuário de uma operacao bem sucedida)
var MSG_SUCESSO_OPERACAO = 'Operação concluída com sucesso!';

// mensagem exibida pelo validaFormConsulta ao identificar
// que nenhum dos campos com id='consulta' foi preenchido
var MSG_CONFIRMACONSULTA = 
	'Você irá executar uma pesquisa sem aplicar filtros e a consulta poderá demorar.' + 
	'Tem certeza que deseja executar a consulta?';
	
// constante utilizada pela função validaFormConsulta
// para obrigar que o campo texto tenha um numero mínimo de caracteres
var TAM_MINIMO_CAMPO_TEXTO = 3;


var MSG_SUCESSO_GRAVACAO =
	'O registro foi gravado com sucesso!';
	

////////////////////////////////////////////////////////////
/** Ativa a validação dos campos obrigatórios na
 função validaForm(..) **/
////////////////////////////////////////////////////////////
var VALIDA_CAMPOS_OBRIGATORIOS	= false;

////////////////////////////////////////////////////////////
/** Ativa a validação dos campos ao perder o foco,
impedidondo que valores inválidos sejam salvos **/
////////////////////////////////////////////////////////////
var VALIDA_VALORES_ONBLUR		= false;

////////////////////////////////////////////////////////////
/** Ativa a função para limpar limpar as mascaras
dos campos **/
////////////////////////////////////////////////////////////
var CONST_LIMPAR_MASCARA_SUBMIT	= true;

// constantes para uso na função de configuração de campo
// (utilizados na função 'configuraCampo')
var TIPODADO_STRING				=  1;
var TIPODADO_INTEIRO			=  2;
var TIPODADO_FLUTUANTE			=  3;
var TIPODADO_MOEDA				=  4;
var TIPODADO_DATA				=  5;
var TIPODADO_HORA				=  6;
var TIPODADO_DATAHORA			=  7;
var TIPODADO_CEP				=  8;
var TIPODADO_CNPJ				=  9;
var TIPODADO_CPF				= 10;
var TIPODADO_EMAIL				= 11;
var TIPODADO_IP					= 12;
var TIPODADO_TELEFONE			= 13;
var TIPODADO_DOMINIO			= 14;
var TIPODADO_USERNAME			= 15;
var TIPODADO_BANCODADOS			= 16;
var TIPODADO_URL				= 17;
var TIPODADO_SALACHAT			= 18;
var TIPODADO_RG					= 19;
var TIPODADO_CARTAO				= 20;
var TIPODADO_COMPETENCIA		= 21;
var TIPODADO_CONTA				= 22;
var TIPODADO_HORARIO			= 23;
var TIPODADO_INSCRESTADUAL		= 24;
var TIPODADO_OBSERVACAO			= 25;
var TIPODADO_CIDADE             = 26;

var janelaWait;
var abaSel;

function showWait(){
	if(document.all.tdWait){
		document.all.tdWait.style.display = "";
	}
	if(document.all.tdBody){
		document.all.tdBody.style.display = "none";
	}
}

function hideWait(){
	if(document.all.tdWait){
		document.all.tdWait.style.display = "none";
	}
	if(document.all.tdBody){
		document.all.tdBody.style.display = "";
	}
}

function pesquisarContexto(){
	pesquisar()
}

function validaPeriodo(obj) {
	if (obj.value != "1" && obj.value != "2" && obj.value != "") {
		obj.value = "";
		obj.focus();
	}
}
function validaAno(obj) {
	if (obj.value.length < 4 && obj.value != "") {
		obj.value = "";
		obj.focus();
	}
}

function tituloPrograma(objTbl, texto, tipoTela){
	var objRow, objCell, str;

	str	=	"<map name='pesquisar'>"
	str	+=	"	<AREA SHAPE='RECT' COORDS='69,5,87,24' onclick='pesquisarContexto()' HREF='#'>"
	str	+=	"</map>"
	str	+=	"<map name='voltar'>"
	str	+=	"	<AREA SHAPE='RECT' COORDS='56,6,74,24' id='mapprogramaVoltar' onclick='voltar()' HREF='#'>"
	str	+=	"</map>"
	str	+=	"<map name='principal'>"
	str	+=	"	<AREA SHAPE='RECT' COORDS='69,5,87,24' onclick='principal()' HREF=\"#\">"
	str	+=	"</map>"
	str	+=	"<map name='nav'>"
	str	+=	"	<AREA SHAPE='RECT' COORDS='91,6,110,24' onclick='helpOnline()' HREF='#'>"
	str	+=	"</map>"


	if(tipoTela.toUpperCase()=="PRINCIPAL"){
		objRow 	= objTbl.insertRow(0);

		//INSERE A CELULA DE TEXTO
		objCell = objRow.insertCell(0);
		objCell.height 		= "5"
		objCell.width 		= "50%"
		objCell.className	= "FmTop"
		objCell.id			= "tituloPagina"
		objCell.innerHTML	= texto + str
		//objCell.innerText	= texto
		/*************************/



		//INSERE A CELULA DA IMAGEM PESQUISAR
		objCell = objRow.insertCell();
		objCell.width 		= "95"
		objCell.id			= "tituloPagina"
		objCell.innerHTML	= "<img src='"+diretorioRaizImg+"pesquisar.gif' usemap='#pesquisar' border='0'></TH>"
		/*************************/


		//INSERE A CELULA DA IMAGEM VOLTAR
		objCell = objRow.insertCell();
		objCell.width 		= "85"
		objCell.id			= "tituloPagina"
		objCell.innerHTML	= "<img id='programaVoltar' name='programaVoltar' src='"+diretorioRaizImg+"voltar.gif' 	 usemap='#voltar' border='0'>"
		/*************************/

		//INSERE A CELULA DA IMAGEM PRINCIPAL
		objCell = objRow.insertCell();
		objCell.width 		= "95"
		objCell.id			= "tituloPagina"
		objCell.innerHTML	= "<img src='"+diretorioRaizImg+"principal.gif' usemap='#principal' border='0'>"
		/*************************/



		//INSERE A CELULA DA IMAGEM HELP
		objCell = objRow.insertCell();
		objCell.width 		= "120"
		objCell.id			= "tituloPagina"
		objCell.innerHTML	= "<img src='"+diretorioRaizImg+"cellpic35.gif' usemap='#nav' border='0'>"
		/*************************/
	}else if(tipoTela.toUpperCase()=="PRINCIPAL_SEM_PESQUISA"){
		objRow 	= objTbl.insertRow(0);

		//INSERE A CELULA DE TEXTO
		objCell = objRow.insertCell(0);
		objCell.height 		= "5"
		objCell.width 		= "90%"
		objCell.className	= "FmTop"
		objCell.id			= "tituloPagina"
		objCell.innerHTML	= texto + str
		//objCell.innerText	= texto
		/*************************/

		//INSERE A CELULA DA IMAGEM FECHAR
		objCell = objRow.insertCell();
		objCell.width 		= "9%"
		objCell.id			= "tituloPagina"
		objCell.className	= "FmTop2"
		objCell.innerHTML	= "<img src='../images/bt_mouse_fechar_out.gif' class='btnFechar' id='imgFechar' border='0' onMouseOver=this.src='../images/bt_mouse_fechar_in.gif' onMouseOut=this.src='../images/bt_mouse_fechar_out.gif' onMouseDown=this.src='../images/bt_mouse_fechar_down.gif' border='0' onclick='home();' hspace='0'>"
		/*************************/
		
		//INSERE A CELULA EM BRANCO APÓS A IMAGEM FECHAR
		objCell = objRow.insertCell();
		objCell.width 		= "1%"
		objCell.id			= "tituloPagina"
		objCell.className	= "FmTop2"
		objCell.innerHTML	= "&nbsp;"
		/*************************/

		
		
	}else if(tipoTela.toUpperCase() == "PESQUISA"){
		objRow 	= objTbl.insertRow(0);

		//INSERE A CELULA DE TEXTO
		objCell = objRow.insertCell(0);
		objCell.height 		= "5"
		objCell.width 		= "85%"
		objCell.className	= "FmTop"
		objCell.id			= "tituloPagina"
		objCell.innerHTML	= texto + str
		//objCell.innerText	= texto
		/*************************/

		//INSERE A CELULA DA IMAGEM HELP
		objCell = objRow.insertCell();
		objCell.width 		= "120"
		objCell.id			= "tituloPagina"
		objCell.innerHTML	= "<img src='"+diretorioRaizImg+"cellpic35.gif' usemap='#nav' border='0'>"
		/*************************/
	}

}

function printRel(){
	document.all.btnImprimir.style.display = "none";
	window.print();
	document.all.btnImprimir.style.display = "";
}

function alteraTitulo(titulo){
	try{
		parent.fraTopo.document.getElementById("tituloPagina").innerText = titulo
		parent.fraTopo.document.getElementById("tituloPagina").className = 'titulotopo';
	} catch(e){}
	try{
	document.getElementById("tituloPagina").innerText = titulo
	document.getElementById("tituloPagina").className = 'titulotopo';
	} catch(e){}
}



function disabledObjetosProtegidosUsuario(obj){
	if (obj.length > 0){
		for (var i=0; i<obj.length; i++){
			if(eval("document.all."+obj[i])){
				enableIt(document.all(eval(obj[i])))
			} else {

				for (var j=0; j<document.frames.length; j++){
					if(eval("document.frames[" + j + "].document.all."+obj[j])){
						disableIt(eval("document.frames[" + j + "].document.all."+obj[j]))
					}
				}
			}
		}
	}
}

function enableIt(obj){
	//habilita campo
	try{
		obj.disabled = false;
		if (obj.classNameOld != undefined && obj.classNameOld != "") {
			if ( obj.type != "checkbox" ) {
				if ( obj.className.toUpperCase().indexOf('NUMERIC') != -1 ) {
					obj.className = "NumericTextBox";
				} else {
					obj.className = obj.classNameOld;
				}
			}
		}
	}catch(e){
	   alert("ERRO:"+e.getMessage());
	}
}
function disableIt(obj){
//desabilita campo
	try{
		obj.disabled = true;
		if(obj.className.toUpperCase().indexOf("DISABLED")==-1){
			obj.classNameOld = obj.className;
		}
		if(obj.type != "checkbox" && obj.type != "radio"){
			if(obj.className.toUpperCase().indexOf('NUMERIC')!= -1 ){
				obj.className = "NumericTextBoxDisabled";
			}else{
				if(obj.type == 'select-one'){
					obj.className = "selectDisabled";
				}else{
					obj.className = "TextBoxDisabled";
				}
			}
		}
		if(obj.classNameOld == "fieldSet"){
			obj.className = "fieldSetDisabled";
		}
		if(obj.classNameOld == "fsAtendimento"){
			obj.className = "fsAtendimentoDisabled";
		}
		if(obj.classNameOld == "FmButtonsVermelho"){
			obj.className = "FmButtonsVermelhoDisabled";
		}
		if(obj.classNameOld == "FmButtonsVerde"){
			obj.className = "FmButtonsVerdeDisabled";
		}
		if(obj.classNameOld == "FmButtonsPreto"){
			obj.className = "FmButtonsPretoDisabled";
		}
	}catch(e){
		alert('Erro JavaScript: Tantativa de desabilitar um objeto que não existe !');
	}
}

//NETSCAPE : NO
document.onkeypress = anulaCaracter;
function anulaCaracter(evento){
	// '	- 39
	// "	- 34
	// |	- 124
	// °	- 176
	// ª	- 170
	// º	- 186
	// ;	- 59
	if(!evento) {
		evento = window.event;
	}
	if(evento.keyCode == 34 || evento.keyCode == 124 
		|| evento.keyCode == 176 || evento.keyCode == 170 
		|| evento.keyCode == 186 || evento.keyCode == 59){
		return false;
	}
}

paginaHabilitada = true;
window.onload = recuperaOnload;

function recuperaOnload() {
//NETSCAPE : YES
	if(self.verificaCheck){
		verificaCheck();
	}
	if (self.preparaGrid){
		preparaGrid()
	}
	if (self.onloadPagina) {
		//onloadPagina();
	}
	paginaHabilitada = true;
}

desabilitaEventosDocumentoPagina = true;
desabilitaEventosDocumentoFrames = true;
desabilitaCamposPagina = true;
desabilitaCamposIframe = true;

var objetosDesabilitados = "";

var objDisabled;

function ObjDisabled(){
	this.fieldsObject 	= new Array();
	this.add			= _addObjDisabled;
}

function _addObjDisabled(obj,disabled){
	objDisabled.fieldsObject[objDisabled.fieldsObject.length] = new FieldsObject(obj,disabled);
}

function FieldsObject(obj,disabled){
	this.disabled	= disabled;
	this.object		= obj;
}


function desabilitaEventosDocumento() {
//NETSCAPE: YES
	if(document.all.tituloPagina){
		for(var x=0; x < document.all.tituloPagina.length; x++){
			document.all.tituloPagina[x].style.filter ='progid:DXImageTransform.Microsoft.BasicImage(grayscale=10)';
		}
	}

	objDisabled = new ObjDisabled();

	if(document.all.TABLE_ABA){
		for(var r=0; r < document.all.TABLE_ABA.rows.length;r++){
			for(var c=0; c < document.all.TABLE_ABA.rows[r].cells.length;c++){
				if(!document.all.TABLE_ABA.rows[r].cells[c].disabled){
					objDisabled.add(document.all.TABLE_ABA.rows[r].cells[c]);
					document.all.TABLE_ABA.rows[r].cells[c].disabled = true;
				}
			}
		}
	}

	if(document.all.TABLE_NAVEGACAO){
		for(var r=0; r < document.all.TABLE_NAVEGACAO.rows.length;r++){
			for(var c=0; c < document.all.TABLE_NAVEGACAO.rows[r].cells.length;c++){
				if(!document.all.TABLE_NAVEGACAO.rows[r].cells[c].disabled){
					objDisabled.add(document.all.TABLE_NAVEGACAO.rows[r].cells[c]);
					document.all.TABLE_NAVEGACAO.rows[r].cells[c].disabled = true;
				}
			}
		}
	}

	for (j=0; j < document.forms.length; j++) {
		for (i=0; i < document.forms[j].elements.length; i++) {
			if(!document.forms[j].elements[i].disabled){
				objDisabled.add(document.forms[j].elements[i]);
				disableIt(document.forms[j].elements[i]);
			}
		}
	}

	var totalFrames = document.frames.length;
	if (totalFrames > 0) {
		for (k=0; k<totalFrames; k++) {
			currFrame = document.frames[k];
			if (currFrame.document.forms) {
				for (j=0; j < currFrame.document.forms.length; j++) {
					for (i=0; i < currFrame.document.forms[j].elements.length; i++) {
						if(!currFrame.document.forms[j].elements[i].disabled){
							objDisabled.add(currFrame.document.forms[j].elements[i]);
							disableIt(currFrame.document.forms[j].elements[i]);
						}
					}
				}
			}
		}
	}

	paginaHabilitada = false;
}

function desabilitaEvento() {
	void(0);
}

function objExiste(obJ) {
//NETSCAPE: ADAPTAR
	numAll = document.all.length;
	for (z=0;z<numAll;z++) {
		if (obJ == document.all[z]) {
			return true;
			break;
		}
	}
	if (document.frames.length > 0) {
		for (k=0;k<document.frames.length;k++) {
			currFrame = document.frames[k];
			numAll = currFrame.document.all.length;
			for (z=0;z<numAll;z++) {
				if (obJ == currFrame.document.all[z]) {
					return true;
					break;
				}
			}
		}
	}
	return false;
}


function habilitaEventosDocumento(Consulta) {
//NETSCAPE: YES
	if(document.all.tituloPagina){
		for(var x=0; x < document.all.tituloPagina.length; x++){
			document.all.tituloPagina[x].style.filter ='';
		}
	}

	for(var i=0; i < objDisabled.fieldsObject.length; i++){
		try{
			if(objDisabled.fieldsObject[i].object.className=="FmAba"){
				objDisabled.fieldsObject[i].object.disabled = false;
			}else{
				enableIt(objDisabled.fieldsObject[i].object);
			}
		}catch(e){}
	}

	paginaHabilitada = true;
}


function submitForm(nomeForm, msgConfirm, dontHideWait) {
//NETSCAPE: AINDA NO

// Esta Função cria dinamicamente um novo formulário, chamado formSIC,
// transfere todos os campos do formulário principal para o formSIC, desabilita
// todos os campos do formulário principal, e faz o submit do formSIC.
	if (!paginaHabilitada) {
		return;
	}

	if(msgConfirm == undefined)
	{
		submitFormSemMsg(nomeForm, dontHideWait);
		formSIC.innerHTML = "";
	}
	else if(confirm(msgConfirm))	//confirmação da Operação
	{
		submitFormSemMsg(nomeForm, dontHideWait);
		formSIC.innerHTML = "";
	}
	else
		return false;

	return true;
}

function montaURL(objForm){
//NETSCAPE: YES
	var retorno = "";

	for (iObjetosFormulario = 0; iObjetosFormulario < objForm.elements.length; iObjetosFormulario++) {
		/*if((objForm.elements[iObjetosFormulario].type=="text" )&&(objForm.elements[iObjetosFormulario].value!="")){
			retorno += "&P"+objForm.elements[iObjetosFormulario].name+"="+escape((objForm.elements[iObjetosFormulario].value));
		}*/
		if((objForm.elements[iObjetosFormulario].type=="select-one" )&&(objForm.elements[iObjetosFormulario].value!="")){
			retorno +="&P"+objForm.elements[iObjetosFormulario].name+"="+escape((objForm.elements[iObjetosFormulario].options[objForm.elements[iObjetosFormulario].selectedIndex].text));
		}

	}
	return retorno;
}




function submitFormSemMsg(nomeForm, dontHideWait) {
//NETSCAPE: NO
// Esta Função cria dinamicamente um novo formulário, chamado formSIC,
// transfere todos os campos do formulário principal para o formSIC, desabilita
// todos os campos do formulário principal, e faz o submit do formSIC.
	if (self.document.formSIC) document.formSIC.outerHTML = "";
	var htmlHiddenFields = '';
	var aForms = new Array();

	if(nomeForm.action != undefined){
		aForms[0] = nomeForm;
	}else{
		aForms = nomeForm;
	}

	for(var x=0; x < aForms.length;x++){
		nomeForm = aForms[x];
		for (var z=0;z<nomeForm.elements.length;z++) {
			var campoAtual = nomeForm.elements[z];
			var valorAtual = campoAtual.value;

			if (campoAtual.name != "_wc")
				valorAtual = escape(campoAtual.value);

			if (campoAtual.type == 'checkbox' || campoAtual.type == 'radio') {
				if (campoAtual.checked)
					htmlHiddenFields += '<input type=\"hidden\" tipoDado=\"'+campoAtual.tipoDado+'\" name=\"'+campoAtual.name+'\" value=\"'+valorAtual+'\">'+"\n";
			}else if(campoAtual.type == 'select-multiple'){
				htmlHiddenFields += '<select multiple tipoDado=\"'+campoAtual.tipoDado+'\" name=\"'+ campoAtual.name +'\">';
				for(var i =0; i < campoAtual.length; i++){
					if(campoAtual.options[i].selected){
						htmlHiddenFields += '<option selected value=\"'+campoAtual.options[i].value+'\">';
					}
				}
				htmlHiddenFields += '</select>';
			}else {
				if(campoAtual.tipo =="cep" || campoAtual.tipo =="telefone" || campoAtual.tipo =="cnpj" || campoAtual.tipo =="cpf"){
					htmlHiddenFields += '<input type=\"hidden\" tipoDado=\"'+campoAtual.tipoDado+'\" name=\"'+campoAtual.name+'\" value=\"'+limpaParaMascara(campoAtual.value,'numeros')+'\">'+"\n";
				}else if (campoAtual.name){
					htmlHiddenFields += '<input type=\"hidden\" tipoDado=\"'+campoAtual.tipoDado+'\" name=\"'+campoAtual.name+'\" value=\"'+valorAtual+'\">'+"\n";
				}
			}
		}
	}
	document.body.insertAdjacentHTML("BeforeEnd","<form name=formSIC style='display:none'></form>");
	formSIC.innerHTML = htmlHiddenFields;

	for (var z=0;z<formSIC.elements.length;z++) {
		campoAtual = formSIC.elements[z];
		campoAtual.value = unescape(campoAtual.value);
		if (CONST_LIMPAR_MASCARA_SUBMIT){
			limpaValor(campoAtual);
		}
	}
	if(nomeForm.action.indexOf("?") == -1){
		formSIC.action = nomeForm.action+"?"+montaURL(nomeForm);
	}else{
		formSIC.action = nomeForm.action+montaURL(nomeForm);
	}

	formSIC.target = nomeForm.target;
	formSIC.method = nomeForm.method;
	if (!dontHideWait){
		showWait();
	}
	formSIC.submit();
	desabilitaPagina();

}

function limpaValor(objCampo){
	var sTipoDado = objCampo.tipoDado;
	if (sTipoDado){
		switch (sTipoDado){
			case 'TIPODADO_STRING':{
				break;
			}
			case 'TIPODADO_INTEIRO':{
				objCampo.value = limpaParaMascara(objCampo.value,'numeros');
				break;
			}
			case 'TIPODADO_FLUTUANTE':{
				objCampo.value = limpaParaMascara(objCampo.value,'valores');
				//objCampo.value = objCampo.value.replace(",", ".");
				break;
			}
			case 'TIPODADO_MOEDA':{
				objCampo.value = limpaParaMascara(objCampo.value,'valores');
				//objCampo.value = objCampo.value.replace(",", ".");
				break;
			}
			case 'TIPODADO_DATA':{
				break;
			}
			case 'TIPODADO_HORA':{
				break;
			}
			case 'TIPODADO_DATAHORA':{
				objCampo.value = limpaParaMascara(objCampo.value,'datahora');
				objCampo.value = objCampo.value.replace("  ", " ");
				if(objCampo.value.length == 16){
					objCampo.value = objCampo.value + ':00';
				}
				break;
			}
			case 'TIPODADO_CEP':{
				objCampo.value = limpaParaMascara(objCampo.value,'numeros');
				break;
			}
			case 'TIPODADO_CNPJ':{
				objCampo.value = limpaParaMascara(objCampo.value,'numeros');
				break;
			}
			case 'TIPODADO_CPF':{
				objCampo.value = limpaParaMascara(objCampo.value,'numeros');
				break;
			}
			case 'TIPODADO_EMAIL':{
				break;
			}
			case 'TIPODADO_IP':{
				break;
			}
			case 'TIPODADO_TELEFONE':{
				objCampo.value = limpaParaMascara(objCampo.value,'numeros');
				break;
			}
			case 'TIPODADO_DOMINIO':{
				break;
			}
			case 'TIPODADO_USERNAME':{
				break;
			}
			case 'TIPODADO_BANCODADOS':{
				break;
			}
			case 'TIPODADO_URL':{
				break;
			}
			case 'TIPODADO_SALACHAT':{
				break;
			}
			case 'TIPODADO_RG': {
				break;
			}
			case 'TIPODADO_CARTAO': {
				break;
			}
			case 'TIPODADO_COMPETENCIA': {
				break;
			}
			case 'TIPODADO_CONTA': {
				break;
			}
			case 'TIPODADO_HORARIO': {
				break;
			}
			case 'TIPODADO_INSCRESTADUAL': {
				break;
			}
			case 'TIPODADO_OBSERVACAO':{
				break;
			}
			case 'TIPODADO_CIDADE': {
				break;
			}
			default:{
				break;
			}
		}
	}
}



function desabilitaPagina() {
	paginaHabilitada = false;
	desabilitaEventosDocumento();

}

function habilitaPagina(Consulta) {
	paginaHabilitada = true;
	habilitaEventosDocumento(Consulta);
}


// programador	: Rafael Castro
// data			: 05/fevereiro/2004
// Valida formulário de consulta. se todos os campos da janela de consulta
// com id='consulta' não estiverem preenchidos haverá uma mensagem e uma 
// crítica (e.g. deseja pesquisar?).
// parâmetros:
//	formulario = formulario a ser validado	
// retorno:
//	true se o formulario foi validado, else caso contrário
function validaFormConsulta(formulario, camposObrigatorio){
//NETSCAPE: NÃO BUSCA A PROPRIEDADE 'ID' DO OBJETO PARA VALIDAR SE O OBJETO
//			DEVE SER OBRIGATORIO
	var retorno = false;
	var form = formulario;
	var quantidadeElementos = form.elements.length;
	var quantidadeElementos2 = form.elements.length;
	var objsObrigatorio;
	var blValidado = false;
	var sObrigatorio = "";
	
	if (camposObrigatorio){
		objsObrigatorio = camposObrigatorio.split(",");
	}else{
		objsObrigatorio = ""
	}
	// vefica se os campos obigatorios estão preenchidos
	for (var iCount = 0; iCount < objsObrigatorio.length; iCount++){
		objValidar = eval(form.name+"."+objsObrigatorio[iCount]);
		blValidado = (objValidar.value != "" || blValidado);
		if (sObrigatorio == ""){
			sObrigatorio = "'"+objValidar.label+"'";
		}else{
			sObrigatorio += ", '"+objValidar.label+"'";
		}
	}
	if((camposObrigatorio) && (!blValidado)){
		objValidar = eval(form.name+"."+objsObrigatorio[0]);
		objValidar.focus();
		alert("Pelo menos um dos campo "+sObrigatorio+" deve estar preenchido.");
		return false;
	}
	
	
	for (var i = 0; i < quantidadeElementos; i++){
		if (form.elements[i].id.toLowerCase() == "obrigatorio") {
			if (form.elements[i].value.length == 0){
				if (form.elements[i].label){
					alert("Campo '"+form.elements[i].label+"' Obrigatório!");
				}else{
					alert("Campo Obrigatório Inválido!");
				}
				if(form.elements[i] == '[object]'){
					if (!IsNetscape()){
						eval("document."+form.name+"."+form.elements[i].name+".focus()");
					}else{
						eval("document."+form.name+"."+form.elements[i].name+".value='';");
					}
				}
				return false;
			}
		}
		if (((form.elements[i].id.toLowerCase() == "dtinicial") || (form.elements[i].id.toLowerCase() == "dtfinal")) && (form.elements[i].value.length != 0)){
			for (var j = 0; j < quantidadeElementos2; j++){
				var valor = form.elements[j].value;
				if (form.elements[i].busca == form.elements[j].name) {
					if(trimString(valor,true,true).length == 0){
						alert("A data deve ser informada."); //mensagem definida no arquivo source.jsp
						if(form.elements[j] == '[object]'){
							eval("document."+form.name+"."+form.elements[j].name+".focus()");
						}
						return false;
					} else {
						var k = 0;
						if (form.elements[j].id.toLowerCase() == "dtinicial"){
							retorno = dataInicialMenorFinal (form.elements[j].value, form.elements[i].value);
							k = i;
						} else {
							retorno = dataInicialMenorFinal (form.elements[i].value, form.elements[j].value)
							k = j;
						}
						if (!retorno){
							alert('A data Final deve ser maior ou igual a inicial.');
							if(form.elements[k] == '[object]'){
								eval("document."+form.name+"."+form.elements[k].name+".select()");
							}
							return false
						}
					}
				}
			}
		}
		if ((form.elements[i].id.toLowerCase() == "dtinicial") || (form.elements[i].id.toLowerCase() == "dtfinal") || (form.elements[i].id.toLowerCase() == "consulta") || (form.elements[i].id.toLowerCase() == "obrigatorio")){
			if(form.elements[i].type.toLowerCase() == "checkbox"){
				if(form.elements[i].checked) {
					retorno = true;
				} else {
					retorno = false;
				}
			} else {
				if(trimString(form.elements[i].value,true,true).length != 0){
					retorno = true;
				}
				if((form.elements[i].type.toLowerCase()=='text') && (trimString(form.elements[i].value,true,true).length != 0)){
					if(form.elements[i].minlength){
						if(trimString(form.elements[i].value,true,true).length < parseInt(form.elements[i].minlength)){
							eval("document."+form.name+"."+form.elements[i].name+".focus()");
							if (form.elements[i].label){
								alert("Campo '"+form.elements[i].label+"' deve ter no mínimo "+parseInt(form.elements[i].minlength)+" caracteres!");
							}else{
								alert("Campo deve ter no mínimo "+parseInt(form.elements[i].minlength)+" caracteres!");
							}
							return false;
						}
					}else{
						if(trimString(form.elements[i].value,true,true).length < parseInt(TAM_MINIMO_CAMPO_TEXTO)){
							eval("document."+form.name+"."+form.elements[i].name+".focus()");
							if (form.elements[i].label){
								alert("Campo '"+form.elements[i].label+"' deve ter no mínimo "+parseInt(TAM_MINIMO_CAMPO_TEXTO)+" caracteres!");
							}else{
								alert("Campo deve ter no mínimo "+parseInt(TAM_MINIMO_CAMPO_TEXTO)+" caracteres!");
							}
							return false;
						}
					}
				}
			}
		}
	}
	if (!retorno){
		if(confirm(MSG_CONFIRMACONSULTA)) {
			retorno = true;
		}
		else retorno = false;
	}
	return retorno;
}

function dataInicialMenorFinal (dataInicial, dataFinal){
//NETSCAPE: YES
	return !eval(periodoDatas(dataInicial,dataFinal) > 0);
}


function validaForm(form,docum,validaObr){
//NETSCAPE: NÃO BUSCA A PROPRIEDADE 'ID' DO OBJETO PARA VALIDAR SE O OBJETO
//			DEVE SER OBRIGATORIO
	
	
	//12-Abril-2004
	//Validação ativada para testes de interface!
	validaObr = VALIDA_CAMPOS_OBRIGATORIOS;
	
	var formulario = form;
	var quantidadeElementos = formulario.elements.length;
	var quantidadeElementos2 = form.elements.length;
	var isValido = true;
	for(i=0; i < quantidadeElementos; i++){
		if((formulario.elements[i].type != "hidden") && (formulario.elements[i].id.toLowerCase() == "obrigatorio" || formulario.elements[i].id == "dtinicial" || formulario.elements[i].id == "dtinicialobrigatorio" || formulario.elements[i].id == "dtfinal" || formulario.elements[i].id == "dtfinalobrigatorio")&&(validaObr)){
			if((formulario.elements[i].id.toLowerCase().indexOf("obrigatorio")>-1) && trimString(formulario.elements[i].value,true,true).length == 0){
				if(formulario.elements[i].LABEL != undefined ){
					if (docum){
						if(docum.mostraTela){
							docum.mostraTela();
						}
					}
					alert("Campo '"+formulario.elements[i].LABEL+"' obrigatório!"); //mensagem definida no arquivo source.jsp
				}else if(formulario.elements[i].Label != undefined ){
					if (docum){
						if(docum.mostraTela){
							docum.mostraTela();
						}
					}
					alert("Campo '"+formulario.elements[i].Label+"' obrigatório!"); //mensagem definida no arquivo source.jsp
				}else if(formulario.elements[i].label != undefined ){
					if (docum){
						if(docum.mostraTela){
							docum.mostraTela();
						}
					}
					alert("Campo '"+formulario.elements[i].label+"' obrigatório!"); //mensagem definida no arquivo source.jsp
				}else{
					if (docum){
						if(docum.mostraTela){
							docum.mostraTela();
						}
					}
					alert("Campo obrigatório"); //mensagem definida no arquivo menu.jsp
				}
				if(formulario.elements[i] == '[object]'){
					if(formulario.elements[i].disabled == false){
						formulario.elements[i].focus();
						//eval("document."+form.name+"."+form.elements[i].name+".focus()");
					}
					else
						try{
							setaFocoPrimeiroCampo();
						}catch(e){}

				}
				return false;
			} else {
				isValido = true;
			}
			if (((form.elements[i].id.toLowerCase().indexOf("dtinicial")>-1) || (form.elements[i].id.toLowerCase().indexOf("dtfinal")>-1)) && (form.elements[i].value.length != 0)){
				for (var j = 0; j < quantidadeElementos2; j++){
					var valor = formulario.elements[j].value;
					if (formulario.elements[i].busca == formulario.elements[j].name) {
						if(trimString(valor,true,true).length == 0){
							alert("A data deve ser informada."); //mensagem definida no arquivo source.jsp
							if(form.elements[j] == '[object]'){
								formulario.elements[j].focus();
								//eval("document."+form.name+"."+form.elements[j].name+".focus()");
							}
							return false;
						} else {
							var k = 0;
							if (formulario.elements[j].id.toLowerCase().indexOf("dtinicial")>-1){
								retorno = dataInicialMenorFinal (formulario.elements[j].value, formulario.elements[i].value);
								k = i;
							} else {
								retorno = dataInicialMenorFinal (formulario.elements[i].value, formulario.elements[j].value)
								k = j;
							}
							if (!retorno){
								alert('A data Final deve ser maior ou igual a inicial.');
								if(form.elements[k] == '[object]'){
									formulario.elements[k].focus();
									//eval("document."+formulario.name+"."+formulario.elements[k].name+".select()");
								}
								return false
							}
						}
					}
				}
			}
		}
	}
	return isValido;
}


function validaDocument(doc){
	var retorno = true;
	for(var x=0; x<doc.document.forms.length; x++){
		retorno = validaForm(doc.document.forms[0], doc);
		if(retorno==false){
			return retorno;
		}
	}
	return true;
}

//VERIFICA SE UMA STRING ESTÁ NO ARRAY
function isInArrayObj(aObj, campo){
//NETSCAPE : YES
	if(aObj!=undefined){
		for(var i=0; i < aObj.length; i++){
			if(aObj[i]==campo){
				return true;
			}
		}
	}
	return false;
}

function limitaTexto(objText,limiteChars){
//NETSCAPE : YES
// Descrição: quando associada ao evento onkeyup, limita o tamanho do objText ao tamanho limiteChars. ( trunca )
	if(objText.value.length > limiteChars){
		objText.value = objText.value.substr(0,limiteChars);
		return(false);
	}
	return(true);
}


function clearFields(form,campos) {
//NETSCAPE : YES
	//campos: define os campos que não serão limpos ex: clearFields(document.frmTela,'txtCodigo,txtDescricao')
	var formulario = form;
	if(campos == undefined){
		campos = "";
	}
	var aObj = campos.split(",");
	for (iObjetosFormulario = 0; iObjetosFormulario < formulario.elements.length; iObjetosFormulario++) {
		if(!isInArrayObj(aObj, formulario.elements[iObjetosFormulario].name)) {
			switch(formulario.elements[iObjetosFormulario].type){
				case 'hidden':
					formulario.elements[iObjetosFormulario].value = '';
					break;

				case 'select-one':
						formulario.elements[iObjetosFormulario].value = formulario.elements[iObjetosFormulario].options[0].value;
					break;

				case 'password':
					formulario.elements[iObjetosFormulario].value = '';
					break;

				case 'text':
					formulario.elements[iObjetosFormulario].value = '';
					break;
				case 'textarea':
					formulario.elements[iObjetosFormulario].value = '';
					break;

				case 'checkbox':
					if(formulario.elements[iObjetosFormulario].length >= 2){
						for(var iObjetosFormularioCheckBox = 0; iObjetosFormularioCheckBox < formulario.elements[iObjetosFormulario].length; iObjetosFormularioCheckBox ++){
							formulario.elements[iObjetosFormulario][iObjetosFormularioCheckBox].checked=false;
						}
					} else {
						formulario.elements[iObjetosFormulario].checked=false;
					}
					break;

				case 'radio':
					if(eval("formulario."+formulario.elements[iObjetosFormulario].name+".length") >= 2){ // Se tiver mais de um radio com o mesmo nome){
						for(var iObjetosFormularioRadio = 0; iObjetosFormularioRadio < formulario.elements[iObjetosFormulario].length; iObjetosFormularioRadio++){
							eval("formulario."+formulario.elements[iObjetosFormulario].name+"["+iObjetosFormularioRadio+"].checked=false");
						}
					} else {
						eval("formulario."+formulario.elements[iObjetosFormulario].name+".checked=false");
					}
					break;
			}
		}
	}

	totalFrames = document.frames.length;
	if (totalFrames > 0) {
		for (k=0; k<totalFrames; k++) {
			currFrame = document.frames[k];
			if(currFrame.restaurarLinha){
				currFrame.restaurarLinha();
			}
		}
	}
	//setaFocoPrimeiroCampo();
}

function trimString(inputString,trimLeft,trimRight){
//NETSCAPE = YES
// Descrição: Remove espaços em branco à direita e/ou à esquerda de 'inputString'
// trimString("  123  ",true,true) -> '123'
// trimString("  123  ",true,false) -> '123  '
// trimString("  123  ",false,true) -> '  123'
// trimString("  123  ",false,false) ->'  123  '
	var outputString  = '';
	var espacosAntes  = 0;
	var espacosDepois = 0;
 	if(trimLeft){
		for(var i = 0 ; i < inputString.length ; i++){
			if(inputString.charAt(i) == ' '){ espacosAntes++; }
			else {	break;	}
		}
	}
	if(trimRight){
		for(var i = inputString.length-1 ; i>0 ; i--){
			if(inputString.charAt(i) == ' '){ espacosDepois++; }
			else {	break;	}
		}
	}
	outputString =  inputString.substr(espacosAntes);
	outputString = outputString.substr(0,(outputString.length-espacosDepois));
	return outputString;
}

function dateToddmmaaaa(objDate) {
//NETSCAPE = YES
// Descrição: recebe um objeto Date e retorna ele formatado como DD/MM/AAAA
// Autor: Eduardo Pinheiro
// Data: 27/12/2000
	var dia = objDate.getDate();
	var mes = objDate.getMonth()+1;
	if (dia < 10) { dia = '0'+dia; }
	if (mes < 10) { mes = '0'+mes; }
	return dia+"/"+mes+"/"+objDate.getFullYear();
}


/********************************************************************
* Método: setaFocoPrimeiroCampo()()									*			*
* Funcionalidade: Chamada no evento onload da página, foca no 		*
				 	primeiro campo do primeiro formulário da tela. 	*
*********************************************************************/
function setaFocoPrimeiroCampo() {
//NETSCAPE = ADAPTAR
// Descrição: Chamada no evento onload da página, foca no primeiro campo do primeiro formulário da tela.
	for ( contador1 = 0 ; contador1 < document.forms.length ; contador1++ ) {
		for ( contador2 = 0 ; contador2 < document.forms[contador1].elements.length ; contador2++ ) {
			if (document.forms[contador1].elements[contador2]) {
				if (!document.forms[contador1].elements[contador2].disabled) {
					if (document.forms[contador1].elements[contador2].type == 'text' ||
						document.forms[contador1].elements[contador2].type == 'select' ||
						document.forms[contador1].elements[contador2].type == 'select-one' ||
						document.forms[contador1].elements[contador2].type == 'textarea' ||
						document.forms[contador1].elements[contador2].type == 'checkbox' ||
						document.forms[contador1].elements[contador2].type == 'radio' ||
						document.forms[contador1].elements[contador2].type == 'submit' ||
						document.forms[contador1].elements[contador2].type == 'password' ||
						document.forms[contador1].elements[contador2].type == 'button'
						) {
						if (!(document.forms[contador1].elements[contador2].style.display == 'none' || document.forms[contador1].elements[contador2].style.visibility == 'hidden') ){
							if (document.forms[contador1].elements[contador2].disabled == false) {
								document.forms[contador1].elements[contador2].focus();
								if (document.forms[contador1].elements[contador2].type == 'radio') {
									document.forms[contador1].elements[contador2].click();
									document.forms[contador1].elements[contador2].checked = true;
								}
								break;
							}
						}
					}
				}
			}
		}
	}
}

var janela;
function openPopup(nomeUrl, titulo, largura, altura, propriedades){

   var Mtop = (parseInt(screen.Height) - parseInt(altura))/2;
   var Mleft = (parseInt(screen.Width)- parseInt(largura))/2;
   var txtPropriedades = "width="+largura+", height="+altura+", left="+Mleft+", top="+Mtop+","+propriedades;
	if(nomeUrl.indexOf("?")!=-1){
		return showModalDialog(nomeUrl+"&"+Math.random(),window,'unardorned:no;scroll:auto;resizable:no;status:no;center=yes;help:no;dialogWidth:'+largura+'px;dialogHeight:'+altura+'px;');
	}else{
		return showModalDialog(nomeUrl+"?"+Math.random(),window,'unardorned:no;scroll:auto;resizable:no;status:no;center=yes;help:no;dialogWidth:'+largura+'px;dialogHeight:'+altura+'px;');
	}
    //janela =  window.open(nomeUrl,titulo, txtPropriedades);
	//janela.focus();
}

function openWindow(nomeUrl, titulo, largura, altura, propriedades){
   var Mtop = (parseInt(screen.Height) - parseInt(altura))/2;
   var Mleft = (parseInt(screen.Width)- parseInt(largura))/2;
   var txtPropriedades = "width="+largura+", height="+altura+", left="+Mleft+", top="+Mtop+","+propriedades + ",scrollbars=auto";
	if(nomeUrl.indexOf("?")!=-1){
		nomeUrl += "&"+Math.random(),window,'unardorned:no;scroll:auto;resizable:no;status:no;center=yes;help:no;dialogWidth:'+largura+'px;dialogHeight:'+altura+'px;';
	}else{
		nomeUrl += "?"+Math.random(),window,'unardorned:no;scroll:auto;resizable:no;status:no;center=yes;help:no;dialogWidth:'+largura+'px;dialogHeight:'+altura+'px;';
	}
    janela =  window.open(nomeUrl,titulo, txtPropriedades);
	janela.focus();

	//return janela;
}

/**************************************************************
***	FUNÇÕES UTILIZADAS PARA CONTROLE DAS LINHAS DOS IFRAMES ***
***************************************************************/
//NETSCAPE : NO
var objAnterior;
var	destak		= true; //variável que define se a linha vai receber destak ao passar o mouse por ela
var	sel			= true; //variável que define se a linha vai receber seleção ao ser clicada

function restaurarLinha(){
	if(objAnterior==null){
		return
	}
	preparaRow(objAnterior)
	setaEventosRow(objAnterior,true,true);
	objAnterior = null
/*	if((objAnterior.rowIndex%2)==0){
		objAnterior.className = "FmLine"
	}else{
		objAnterior.className = "FmLine2";
	}*/
}

function preparaGrid(){
	var objTable
	var web
	if (document.getElementById("tblGrid")){
		objTable = document.getElementById("tblGrid")
		web = false
	} else {
		objTable = document.getElementById("tblGridWeb")
		web = true
	}
	var funcoes;
	if(objTable==undefined){
		return
	}
	if (!web){
		for(var i=0; i < objTable.rows.length; i++){
			if(objTable.rows[i].id=="Sep"){

			}else{
				preparaRow(objTable.rows[i])
				setaEventosRow(objTable.rows[i],true,true);
			}
		}
	} else {
		for(var i=0; i < objTable.rows.length; i++){
			preparaRowWeb(objTable.rows[i])
			setaEventosRowWeb(objTable.rows[i],true,true);
		}
	}
}

function setaEventosRowWeb(objSE, mmove, mout){

	if(!mmove || !destak){
		objSE.onmousemove 	= null;
	}else if(objSE.onmousemove!= null){
		//PEGA AS FUNÇÕES JÁ EXISTENTES NA 'TR' E ADICIONA A FUNÇÃO DE MARCAR LINHA
		funcoes = (objSE.onmousemove.toString().substring(23,(objSE.onmousemove.toString().length-1)));
		objSE.onmousemove 	= Function("lineMouseMove(this);"+funcoes);
	}else{
		objSE.onmousemove 	= Function("lineMouseMove(this)");
	}

	if(!mout){
		objSE.onmouseout 	= null;
	}else if(objSE.onmouseout!= null){
		//PEGA AS FUNÇÕES JÁ EXISTENTES NA 'TR' E ADICIONA A FUNÇÃO DE MARCAR LINHA
		funcoes = (objSE.onmouseout.toString().substring(23,(objSE.onmouseout.toString().length-1)));
		objSE.onmouseout 	= Function("lineMouseOutWeb(this);"+funcoes);
	}else{
		objSE.onmouseout	= Function("lineMouseOutWeb(this)");
	}

	if(objSE.onmousedown!= null){
		//PEGA AS FUNÇÕES JÁ EXISTENTES NA 'TR' E ADICIONA A FUNÇÃO DE MARCAR LINHA
		funcoes = (objSE.onmousedown.toString().substring(23,(objSE.onmousedown.toString().length-1)));
		if(!sel){
			objSE.onmousedown	= new Function(funcoes);
		}else{
			objSE.onmousedown	= new Function("marcarLinhaWeb(this);"+funcoes);
		}
	}else{
		if(sel){
			objSE.onmousedown	= Function("marcarLinhaWeb(this);");
		}

	}	
}

function selectAll(obj, checkAll){
	if (obj) {
		if (obj.length){
			for (var idx = 0; idx < obj.length; idx++){
				obj[idx].checked = checkAll;
			}
		} else {
			obj.checked = !obj.checked;
		}
	}
}

function setaEventosRow(objSE, mmove, mout){

	if(!mmove || !destak){
		objSE.onmousemove 	= null;
	}else if(objSE.onmousemove!= null){
		//PEGA AS FUNÇÕES JÁ EXISTENTES NA 'TR' E ADICIONA A FUNÇÃO DE MARCAR LINHA
		funcoes = (objSE.onmousemove.toString().substring(23,(objSE.onmousemove.toString().length-1)));
		objSE.onmousemove 	= Function("lineMouseMove(this);"+funcoes);
	}else{
		objSE.onmousemove 	= Function("lineMouseMove(this)");
	}

	if(!mout){
		objSE.onmouseout 	= null;
	}else if(objSE.onmouseout!= null){
		//PEGA AS FUNÇÕES JÁ EXISTENTES NA 'TR' E ADICIONA A FUNÇÃO DE MARCAR LINHA
		funcoes = (objSE.onmouseout.toString().substring(23,(objSE.onmouseout.toString().length-1)));
		objSE.onmouseout 	= Function("lineMouseOut(this);"+funcoes);
	}else{
		objSE.onmouseout	= Function("lineMouseOut(this)");
	}

	if(objSE.onmousedown!= null){
		//PEGA AS FUNÇÕES JÁ EXISTENTES NA 'TR' E ADICIONA A FUNÇÃO DE MARCAR LINHA
		funcoes = (objSE.onmousedown.toString().substring(23,(objSE.onmousedown.toString().length-1)));
		if(!sel){
			objSE.onmousedown	= new Function(funcoes);
		}else{
			objSE.onmousedown	= new Function("marcarLinha(this);"+funcoes);
		}
	}else{
		if(sel){
			objSE.onmousedown	= Function("marcarLinha(this);");
		}

	}
}

function marcarLinha(obj){
	if(event){
		if(event.button==2){
			return false;
		}
	}
	//retorna caso o evento tenha vindo do check box
	if(event){
		if(event.srcElement){
			if(event.srcElement.type != undefined){
				if(event.srcElement.type.toUpperCase()=="CHECKBOX"){
					return
				}
			}
		}
	}

	//não é necessário marcar a linha caso o objeto anterior seja igual ao atual
	if(obj==objAnterior){
		return;
	}

	//retorna caso o evento tenha vindo da primeira célula
	if(event){
		if(event.srcElement){
			if(event.srcElement.type == undefined){
				if(event.srcElement.cellIndex==0){
					if(event.srcElement.innerHTML.toUpperCase().indexOf("CHECKBOX")!=-1){
						return
					}
				}
			}
		}
	}

	var cont=0
	if(obj.innerHTML.toUpperCase().indexOf("CHECKBOX") != -1){//então existe checkbox
		cont=1
	}

	preparaRowSel(obj,cont);
	setaEventosRow(obj,false,false);

	if(objAnterior==undefined){
		objAnterior = obj;
	}else{
		if(objAnterior.rowIndex != undefined){
			preparaRow(objAnterior);
			setaEventosRow(objAnterior,true,true);
		}
		objAnterior = obj;
	}
	marcaTr = true;
}

function lineMouseMove(objMove){
	if(event.srcElement.type != undefined){
		if(event.srcElement.type.toUpperCase()=="CHECKBOX"){
			return
		}
	}

	if(event.srcElement.type == undefined){
		if(event.srcElement.cellIndex==0){
			if(event.srcElement.innerHTML.toUpperCase().indexOf("CHECKBOX")!=-1){
				return
			}
		}
	}

	var cont = 0;

	if(objMove.innerHTML.toUpperCase().indexOf("CHECKBOX") != -1){//então existe checkbox
		cont=1
	}

	preparaRowDestak(objMove, cont)
}


function lineMouseOutWeb(objOut){
	preparaRowWeb(objOut)
}

function lineMouseOut(objOut){
	preparaRow(objOut)
}


function preparaRow(objRow){
		if((objRow.rowIndex%2)==0){
			objRow.className = "FmLine"
		}else{
			objRow.className = "FmLine2"
		}
}

function preparaRowDestak(objRow, cont){
	objRow.className = "FmDestak"
}

function preparaRowSel(objRow, cont){
	objRow.className = "FmSel"
}

function preparaRowSelWeb(objRow, cont){
	objRow.className = "FmSelWeb"
}

function marcarLinhaWeb(obj){
	if(event.button==2){
		return false;
	}
	//não é necessário marcar a linha caso o objeto anterior seja igual ao atual

	//retorna caso o evento tenha vindo do check box
	if(event.srcElement.type != undefined){
		if(event.srcElement.type.toUpperCase()=="CHECKBOX"){
			return
		}
	}

	if(obj==objAnterior){
		return;
	}

	//retorna caso o evento tenha vindo da primeira célula
	if(event.srcElement.type == undefined){
		if(event.srcElement.cellIndex==0){
			if(event.srcElement.innerHTML.toUpperCase().indexOf("CHECKBOX")!=-1){
				return
			}
		}
	}

	var cont=0
	if(obj.innerHTML.toUpperCase().indexOf("CHECKBOX") != -1){//então existe checkbox
		cont=1
	}

	preparaRowSelWeb(obj,cont);
	setaEventosRowWeb(obj,false,false);

	if(objAnterior==undefined){
		objAnterior = obj;
	}else{
		if(objAnterior.rowIndex != undefined){
			preparaRowWeb(objAnterior);
			setaEventosRowWeb(objAnterior,true,true);
		}
		objAnterior = obj;
	}

}

var objetos;
var marcaTr = true;

function verificaCheck(){
	objetos = document.getElementsByTagName("input");
	for(var i=0; i < objetos.length; i++ ){
		if(objetos[i].type=="checkbox" ||objetos[i].type=="radio" ){
			var funcoes = "";
			if(objetos[i].onclick){
				funcoes = (objetos[i].onclick.toString().substring(23,(objetos[i].onclick.toString().length-1)));
			}
			
			//alert('['+funcoes+']');
			try
			{	
				objetos[i].onclick = Function("check();"+funcoes);
			} catch(ex) {
				funcoes = funcoes.substring(1,funcoes.length);
				objetos[i].onclick = Function("check();"+funcoes);
			}
		}
	}
}

function check(){
	marcaTr = false;
}

/******************************************************************
***	FIM FUNÇÕES UTILIZADAS PARA CONTROLE DAS LINHAS DOS IFRAMES ***
*******************************************************************/




function limpaCampo(field) {
// Descrição: Função para extrair caracteres indesejados de um campo. ( . - / , )
// limpaCampo("1.23/45,abc") -> 12345abc
	t_field='';
	for (i=0;i<field.length;i++) {
		if( (field.charAt(i) != ".") && (field.charAt(i) != "-") && (field.charAt(i) != "/") && (field.charAt(i) != ",")) {
			t_field = t_field + field.charAt(i);
		}
	}
	return t_field;
}


function periodoDatas(dataFimPeriodo,dataInicioPeriodo) {
//NETSCAPE = YES
// Descrição: Subtrai datas
// Autor: Eduardo Pinheiro
// Data:
	dateFim = new Date(dataFimPeriodo.substring(6,10),dataFimPeriodo.substring(3,5)-1,dataFimPeriodo.substring(0,2));
	dateInicio = new Date(dataInicioPeriodo.substring(6,10),dataInicioPeriodo.substring(3,5)-1,dataInicioPeriodo.substring(0,2));
	return ((dateFim - dateInicio)/86400000);
}

function dataValida(dataValor,tipoTeste){
//NETSCAPE: YES
// Descrição: Retorna false caso o string 'dataValor' não passe no 'tipoTeste', ou true no caso de passar no teste.
// Tipos de teste: anterior,ult120anos,futura,futuraOUigual,anteriorOUigual,2mesesMMAAAA
// Exemplo: if(dataValida(document.form.txtData.value,'anterior')) {alerta("a data é anterior à atual e é válida")}
	dataValor = limpaCampo(dataValor);

	dia = dataValor.substr(0,2);
	mes = dataValor.substr(2,2) - 1;
	ano = dataValor.substr(4,4);

	dataObj = new Date(ano,mes,dia);
	diaObj = dataObj.getDate();
	mesObj = dataObj.getMonth();
	anoObj = dataObj.getFullYear();
	dataObj.setHours(0);
	dataObj.setMinutes(0);
	dataObj.setSeconds(0);
	dataObj.setMilliseconds(0);

	dataCorr = new Date();
	diaCorr = dataCorr.getDate();
	mesCorr = dataCorr.getMonth();
	anoCorr = dataCorr.getFullYear();
	dataCorr.setHours(0);
	dataCorr.setMinutes(0);
	dataCorr.setSeconds(0);
	dataCorr.setMilliseconds(0);

	data120 = new Date(anoCorr-120,mesCorr,diaCorr);
	data120.setHours(0);
	data120.setMinutes(0);
	data120.setSeconds(0);
	data120.setMilliseconds(0);

	if ( ( dataValor.length < 8 ) || (dia != diaObj) || (mes != mesObj) || (ano != anoObj) )
		return false;

	switch (tipoTeste){
		case 'anterior':{
			if (dataObj >= dataCorr) {
				return false; }
		break; }
		case 'ult120anos':{
			if (dataObj < data120) {
				return false; }
			if (dataObj >= dataCorr) {
				return false; }
		break; }
		case 'ult120anosFutura':{
			if (dataObj < data120) {
				return false; }
		break; }
		case 'futura':{
			if (dataObj <= dataCorr) {
				return false; }
		break; }
		case 'futuraOUigual':{
			if (dataObj < dataCorr) {
				return false; }
		break; }
		case 'anteriorOUigual':{
			if (dataObj > dataCorr) {
				return false; }
		break; }
		case '2mesesMMAAAA':{
			dia = '01';
			dataObj = new Date(ano,mes,dia);
			dataObj.setHours(0);
			dataObj.setMinutes(0);
			dataObj.setSeconds(0);
			dataObj.setMilliseconds(0);
			if( mesCorr >= 2) {mesCorr -= 2;} // mes a partir de março
			else {
				anoCorr -= 1;
				if(mesCorr == 0){mesCorr = 10};
				if(mesCorr == 1){mesCorr = 11};
			}
			data2meses = new Date(anoCorr,mesCorr,dia);
			data2meses.setHours(0);
			data2meses.setMinutes(0);
			data2meses.setSeconds(0);
			data2meses.setMilliseconds(0);
			if (dataObj < data2meses) {
				return false; }
		break; }
	}
	return true;
}

/****************************************************
*********** FUNÇÕES DE IMPRESSÃO ********************
*****************************************************/
var flagprocessa = true;

arrayImpressao = new Array;

function printLockUrls() {
	if (self.arrayImpressao) {
		if (arrayImpressao.length > 0) {
			desabilitaPagina();
			if (flagprocessa){
				flagprocessa = false;
				printUrls(0, arrayImpressao);
			}
		}
	}
}

function fimImpressao(){
	habilitaPagina();
}

if ( printIsNativeSupport() )
  window.print2 = window.print;
window.print = window.print;

function printFrame(frame, onfinish) {
  if ( !frame ) frame = window;
  function execOnFinish() {
    switch ( typeof(onfinish) ) {
      case "string": execScript(onfinish); break;
      case "function": onfinish();
    }
    if ( focused && !(focused.disabled || focused.style.display == 'none' || focused.style.visibility == 'hidden')) focused.focus();
  }
  if ( frame.document.readyState !== "complete") {
      alert("Houve falha na impressão!");
			if (self.habilitaPagina()) habilitaPagina();
			if (parent.habilitaPagina()) parent.habilitaPagina();
			return;
  }
/*
  if ( frame.document.readyState !== "complete" &&
       !confirm("The document to print is not downloaded yet! Continue with printing?") )
  {
    execOnFinish();
    return;
  }
*/
  if ( window.print2 ) { // IE5
    var focused = document.activeElement;
    frame.focus();

    if ( frame.print2 ) frame.print2();
    else frame.print();
    execOnFinish();
    return;
  }
  var eventScope = printGetEventScope(frame);
  var focused = document.activeElement;
  window.printHelper = function() {
    execScript("on error resume next: printWB.ExecWB 6, 2", "VBScript");
    printFireEvent(frame, eventScope, "onafterprint");
    printWB.outerHTML = "";
    execOnFinish();
    window.printHelper = null;
  }
  document.body.insertAdjacentHTML("beforeEnd",
    "<object id=\"printWB\" width=0 height=0 \
    classid=\"clsid:8856F961-340A-11D0-A96B-00C04FD705A2\"></object>");
  printFireEvent(frame, eventScope, "onbeforeprint");
  frame.focus();
  window.printHelper = printHelper;
  setTimeout("window.printHelper()", 0);
}

function printIsNativeSupport() {
  var agent = window.navigator.userAgent;
  var i = agent.indexOf("MSIE ")+5;
  return parseInt(agent.substr(i)) >= 5 && agent.indexOf("5.0b1") < 0;
}

function printFireEvent(frame, obj, name) {
  var handler = obj[name];
  switch ( typeof(handler) ) {
    case "string": frame.execScript(handler); break;
    case "function": handler();
  }
}

function printGetEventScope(frame) {
  var frameset = frame.document.all.tags("FRAMESET");
  if ( frameset.length ) return frameset[0];
  return frame.document.body;
}

function printHidden(url) {
	if(document.all.printHiddenFrame){
	  document.frames['printHiddenFrame'].document.open();
	  document.frames['printHiddenFrame'].document.write(
	    "<frameset onload='parent.onprintHiddenFrame()' rows=\"100%\">" +
	    "<frame name=printMe src=\""+url+"\">" +
	    "</frameset>");
	  document.frames['printHiddenFrame'].document.close();
	}else{
	  document.body.insertAdjacentHTML("beforeEnd",
	    "<iframe name=printHiddenFrame width=0 height=0></iframe>");
	  document.frames['printHiddenFrame'].document.open();
	  document.frames['printHiddenFrame'].document.write(
	    "<frameset onload='parent.onprintHiddenFrame()' rows=\"100%\">" +
	    "<frame name=printMe src=\""+url+"\">" +
	    "</frameset>");
	  document.frames['printHiddenFrame'].document.close();
	}
}


function onprintHiddenFrame() {
  function onfinish() {
    printHiddenFrame.outerHTML = "";
    if ( window.onprintcomplete )
		window.onprintcomplete();
  }
  printFrame(printHiddenFrame.printMe, onfinish);
}

function printURL(url) {
  frmImpressao.btnImprimir.disabled = true;
  window.onprintcomplete = function() {
     frmImpressao.btnImprimir.disabled = false;
  }
  printHidden(url);
}

function printUrls(i, arr) {
	if(arr[i]){
		if (i < arr.length){
			window.onprintcomplete = function () {
				printUrls(i+1, arr);
			}
			printHidden(arr[i]);
		}
	} else {
// Fim da impressão
		flagprocessa = true;
		fimImpressao();
	}
}

/* 	Função: gotFocus(component)
 *		função que poe o foco em um componente do formulário
 *		a função verifica se a pagina do cadastro está completa e
 *		verifica se o frame do cadastro é o ativo, impedindo erros de JS.
 * 	Parametros:
 *    	component - componente do formulário que irá receber o focus.
 *
 * 	Autor: Marcelo Martins
 * 	Data: 03/Jan/2003 15:27]
 *
 * 	Obs: Esta função não funciona!
 */
function gotFocus(component)
{
	if(document.all.ifrmCad.readyState == "complete") {
		if ( document.all.DETALHES.style.display != "none" ) {
			component.focus();
		}
	} else  {
	   	window.setTimeout("gotFocus("+component+");",100);
	}
}

function desabilitaVoltar(){
	if(parent.retornaFrameAtual()>1){
	    document.getElementById('programaVoltar').src = diretorioRaizImg+"voltar_off.gif";
    	document.getElementById('programaVoltar').onclick = "";
		document.getElementById('mapprogramaVoltar').onclick = "";
		document.getElementById('mapprogramaVoltar').style.cursor = "default"
		document.getElementById('programaVoltar').style.cursor = "default"
	}
}

function submeter(form,msgConfirm){
	var fForm = form;
	var i, cont;
	if(msgConfirm == 'undefined'){
		form.submit();
	}else{
		cont = 0;
		for(i=0;i<fForm.elements.length;i++){
			if(fForm.elements[i].id.toUpperCase().indexOf('OBRIGATORIO') > -1 && fForm.elements[i].name.value == null) cont++;
		}
		if(cont == 0) {
			form.submit();
		}else{
			alert('Algum campo deve ser informado.');
			return false;
		}	
	}	
}

function CWIInputButtonStyle(_buttonAlignment,_buttonSpacing,_leftSpacing,_rightSpacing,_class,_width,_height) {
	this.alignment = _buttonAlignment ? _buttonAlignment : "right";
	this.spacing = _buttonSpacing ? _buttonSpacing : "";
	this.leftSpacing = _leftSpacing ? _leftSpacing : "";
	this.rightSpacing = _rightSpacing ? _rightSpacing : "";

	var _style = "";

	if(_width)
		_style += 'width:' + _width + ';';
	if(_height)
		_style += 'height:' + _height + ';';

	var _properties = "";

	if(_class)
		_properties += ' class="' + _class + '"';

	if(_style)
		_properties += ' style="' + _style + '"';

	this.properties = _properties;
}

function CWIInputButton(_caption,_onClick) {
	this.caption = _caption;
	this.onClick = _onClick;
}

function renderCWIInputButton(_buttonArray,_targetComponent,_backgroundClass,_buttonStyle) {
	if(!_buttonStyle)
		_buttonStyle = new CWIInputButtonStyle("right",null,null,"&nbsp;","button","75",null)

	_backgroundClass = _backgroundClass ? ' class="' + _backgroundClass + '"' : '';

	if(_buttonArray && _targetComponent) {
		var strInnerHTML = "";

		strInnerHTML += '<table class="Form" cellpadding="0" cellspacing="0" border="0" align="center" width="100%">\n';
		strInnerHTML += '\t<tr>\n';
		strInnerHTML += '\t\t<td' + _backgroundClass + ' align="' + _buttonStyle.alignment + '">\n';
		strInnerHTML += '\t\t\t' + _buttonStyle.leftSpacing + '\n';

		for(var i = 0;i < _buttonArray.length;i++) {
			if(i > 0)
				strInnerHTML += '\t\t\t' + _buttonStyle.spacing + '\n';
				if(_buttonArray[i].caption.toLowerCase() == "pesquisar") {
					btName = "BtnPesquisar";
				}
				else if(_buttonArray[i].caption.toLowerCase() == "consultar") {
					btName = "BtnPesquisar";
				}
				else if(_buttonArray[i].caption.toLowerCase() == "fechar") {
					btName = "BtnFechar";
				}
				else {
					btName = "btn" + i;
				}
				
				strInnerHTML += '\t\t\t<input name="'+btName+'" type="button"' + _buttonStyle.properties + ' value="' + _buttonArray[i].caption + '" onclick="' + _buttonArray[i].onClick + '" hidefocus>\n';
		}

		strInnerHTML += '\t\t\t' + _buttonStyle.rightSpacing + '\n';
		strInnerHTML += '\t\t</td>\n';
		strInnerHTML += '\t</tr>\n';
		strInnerHTML += '</table>\n';

		_targetComponent.innerHTML = strInnerHTML;

	}
}


function desabilitaBotao(i){
	str = "document.all.btn"+i;
	disableIt(eval(str));
}

function habilitaBotao(i){
	str = "document.all.btn"+i
	enableIt(eval(str));
}

function hideButton(i){
	str = "document.all.btn"+i+".style.display = 'none'";
	eval(str);
}

function showButton(i){
	str = "document.all.btn"+i+".style.display = ''";
	eval(str);
}


/******************************************************************************
	Rotina que mostra mensagens na tela para o usuário, conforme quantidade de
registros a serem excluídos.
******************************************************************************/
function excluirItems(quantItems){

		if (quantItems == 0) {
			alert(msgDisableFailed);
		}
		if (quantItems == 1) {
			submitForm(ifrmCad.ifrmGrid.document.frmList, msgDeleteUnique); 		
		}
		if (quantItems > 1) {
			submitForm(ifrmCad.ifrmGrid.document.frmList,msgMultipleDisableBegin+quantItems+msgMultipleDisableEnd); 				
		}
}

function countItensDelete(obj, isSearch) {
	if (isSearch) {
		msgDeleteUnique = msgDisableUnique;
		msgMultipleDeleteBegin = msgMultipleDisableBegin;
		msgMultipleDeleteEnd = msgMultipleDisableEnd;
		msgDeleteFailed = msgDisableFailed;
	}
    var countDelete = 0;
    if(obj != undefined){
        if(obj.length == undefined) {
            if (obj.checked == true) {
                countDelete = 1;
            }
        } else {
            for(var i = 0; i < obj.length; i++) {
                if (obj[i].checked == true) {
                    countDelete++;
                }
            }
        }
    }
    if (countDelete == 0) {
        alert(msgDeleteFailed);
        return false;
    } else if (countDelete == 1) {
        if (confirm(msgDeleteUnique)) {
            return true;
        } else {
            return false;
        }
    } else if (countDelete > 1) {
        if (confirm(msgMultipleDeleteBegin+" "+countDelete+msgMultipleDeleteEnd)) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
	}
}

function countItensValidate(obj, isSearch) {
	if (isSearch) {
		msgValidateUnique = msgValidateUnique;
		msgMultipleValidateBegin = msgMultipleValidateBegin;
		msgMultipleValidateEnd = msgMultipleValidateEnd;
		msgValidateFailed = msgValidateFailed;
	}
    var countValidate = 0;
    if(obj != undefined){
        if(obj.length == undefined) {
            if (obj.checked == true) {
                countValidate = 1;
            }
        } else {
            for(var i = 0; i < obj.length; i++) {
                if (obj[i].checked == true) {
                    countValidate++;
                }
            }
        }
    }
    if (countValidate == 0) {
        alert(msgValidateFailed);
        return false;
    } else if (countValidate == 1) {
        if (confirm(msgValidateUnique)) {
            return true;
        } else {
            return false;
        }
    } else if (countValidate > 1) {
        if (confirm(msgMultipleValidateBegin+" "+countValidate+msgMultipleValidateEnd)) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
	}
}

function countItensSelect(obj) {
    var countSelect = 0;
    if(obj != undefined){
        if(obj.length == undefined) {
            if (obj.checked == true) {
                countSelect = 1;
            }
        } else {
            for(var i = 0; i < obj.length; i++) {
                if (obj[i].checked == true) {
                    countSelect++;
                }
            }
        }
    }
    if (countSelect == 0) {
        alert(msgSelectMark);
        return false;
    } else {
        return true;
	}
}


function getDateHour(appendHour) {
	var today = new Date();
	var dateToday = today.getDate();
	var month = today.getMonth();
	month++;
	var year = today.getYear();
	var hour = today.getHours();
	var minute = today.getMinutes();
	var retorno = "";
	if (dateToday < 10) {
		dateToday = "0" + dateToday;
	}
	if (month < 10) {
		month = "0" + month;
	}
	if (hour < 10) {
		hour = "0" + hour;
	}
	if (minute < 10) {
		minute = "0" + minute;
	}
	if (dateMask == 'U') { // internacionalização
		retorno = month + "/" + dateToday + "/" + year;
	} else if (dateMask == 'E') {
		retorno = dateToday + "/" + month + "/" + year;
	} else if (dateMask == 'G') {
		retorno = year + "/" + month + "/" + dateToday;
	}
	if (appendHour && retorno != "") {
		retorno += " - " + hour + ":" + minute;
	}
	//alert("Ano ="+year+" Month ="+month+" day ="+dateToday);
	return retorno;
}

function validaDataMaiorQueAtual(obj, flag) {
	var dataAtual = new Date();
	var diaObj = 0;
	var mesObj = 0;
	var anoObj = 0;
	if (obj.value.length < 8) {
		return;
	}
	var campo = trimString(obj.value, true, true);
	if (dateMask == 'U') {
		var diaObj = campo.substring(3, 5);
		var mesObj = campo.substring(0, 2);
		var anoObj = campo.substring(6, 10);
	} else if (dateMask == 'E') {
		var diaObj = campo.substring(0, 2);
		var mesObj = campo.substring(3, 5);
		var anoObj = campo.substring(6, 10);
	} else if (dateMask == 'G') {
		var diaObj = campo.substring(0, 2);
		var mesObj = campo.substring(5, 7);
		var anoObj = campo.substring(8, 10);
	}
	if (parseInt(anoObj, 10) < dataAtual.getYear()) {
		if (flag) {
			return true;
		}
	} else if (parseInt(anoObj, 10) == dataAtual.getYear()) {
		if (parseInt(mesObj, 10) > (dataAtual.getMonth() + 1)) {
			alert(msgDateGreaterThanActual);
			obj.value = "";
			obj.focus();
			if (flag) {
				return false;
			}
		} else if (parseInt(mesObj, 10) == (dataAtual.getMonth() + 1))  {
			if (parseInt(diaObj, 10) > dataAtual.getDate()) {
				alert( msgDateGreaterThanActual);
				obj.value = "";
				obj.focus();
				if (flag) {
					return false;
				}
			}
		}
	} else {
		alert(msgDateGreaterThanActual);
		obj.value = "";
		obj.focus();
		if (flag) {
			return false;
		}
	}
	if (flag) {
		return true;
	}
}

//compara a data 1 com a data 2
//retorna 1 => data 1 maior que data 2
//		  0 => datas iguais
//		 -1 => data 1 menor que data 2
//		  2 => numero errado de digitos
//hora => coloca a hora na comparacao
function compareDateTime(valDate1, valDate2, bhora) {
	if (bhora == true) {
		if (valDate1.length < 18 || valDate2.length < 18) {
			return 2;
		}
	} else {
		if (valDate1.length < 10 || valDate2.length < 10) {
			return 2;
		}
	}
	var dia = "";
	var mes = "";
	var ano = "";
	var hora = "";
	var minuto1 = "";
	var minuto = "";
	if (bhora == true) {
		hora = valDate1.substring(13, 15);
		minuto = valDate1.substring(15);
		minuto1 = minuto;
	}
	if (dateMask == 'U') { //Americano
		mes = valDate1.substring(0, 2);
		dia = valDate1.substring(3, 5);
		ano = valDate1.substring(6, 10);
	} else if (dateMask == 'E') { //Europeu
		dia = valDate1.substring(0, 2);
		mes = valDate1.substring(3, 5);
		ano = valDate1.substring(6, 10);
	} else { //Geral
		ano = valDate1.substring(0, 4);
		mes = valDate1.substring(5, 7);
		dia = valDate1.substring(8, 10);
	}
	var somaTotal1 = parseInt(ano+mes+dia, 10);
	if (bhora == true) {
		somaTotal1 = parseInt(ano+mes+dia+hora+minuto, 10);
	}
	if (bhora == true) {
		hora = valDate2.substring(13, 15);
		minuto = valDate2.substring(15);
	}
	if (dateMask == 'U') { //Americano
		mes = valDate2.substring(0, 2);
		dia = valDate2.substring(3, 5);
		ano = valDate2.substring(6, 10);
	} else if (dateMask == 'E') { //Europeu
		dia = valDate2.substring(0, 2);
		mes = valDate2.substring(3, 5);
		ano = valDate2.substring(6, 10);
	} else { //Geral
		ano = valDate2.substring(0, 4);
		mes = valDate2.substring(5, 7);
		dia = valDate2.substring(8, 10);
	}
	var somaTotal2 = parseInt(ano+mes+dia, 10);
	if (bhora == true) {
		somaTotal2 = parseInt(ano+mes+dia+hora+minuto, 10);
	}
	
	somaTotal1 = somaTotal1+minuto1;
	somaTotal2 = somaTotal2+minuto;

	if (somaTotal1 == somaTotal2) {
		return 0;
	} else if (somaTotal1 > somaTotal2) {
		return 1;
	} else {
		return -1;
	}
}

function submitMultipleForms(arrForm, tg, act) {
//NETSCAPE: NO
// Esta Função cria dinamicamente um novo formulário, chamado formSIC,
// transfere todos os campos do formulário principal para o formSIC, desabilita
// todos os campos do formulário principal, e faz o submit do formSIC.
	
	if (self.document.formSIC) document.formSIC.outerHTML = "";
	var htmlHiddenFields = '';
	var aForms = new Array();
	for (var xxx = 0 ; xxx < arrForm.length; xxx++) {
		nomeForm = arrForm[xxx];
		if(nomeForm.action != undefined){
			aForms[0] = nomeForm;
		}else{
			aForms = nomeForm;
		}
		for(var x=0; x < aForms.length;x++){
			nomeForm = aForms[x];
			for (var z=0;z<nomeForm.elements.length;z++) {
				campoAtual = nomeForm.elements[z];
				valorAtual = escape(campoAtual.value);
				if (campoAtual.type == 'checkbox' || campoAtual.type == 'radio') {
					if (campoAtual.checked)
						htmlHiddenFields += '<input type=\"hidden\" name=\"'+campoAtual.name+'\" value=\"'+valorAtual+'\">'+"\n";
				}else if(campoAtual.type == 'select-multiple'){
					htmlHiddenFields += '<select multiple  name=\"'+ campoAtual.name +'\">';
					for(var i =0; i < campoAtual.length; i++){
						if(campoAtual.options[i].selected){
							htmlHiddenFields += '<option selected value=\"'+campoAtual.options[i].value+'\">';
						}
					}
					htmlHiddenFields += '</select>';
				}else {
					if(campoAtual.tipo =="cep" || campoAtual.tipo =="telefone" || campoAtual.tipo =="cnpj" || campoAtual.tipo =="cpf"){
						htmlHiddenFields += '<input type=\"hidden\" name=\"'+campoAtual.name+'\" value=\"'+limpaParaMascara(campoAtual.value,'numeros')+'\">'+"\n";
					}else if (campoAtual.name){
						htmlHiddenFields += '<input type=\"hidden\" name=\"'+campoAtual.name+'\" value=\"'+valorAtual+'\">'+"\n";
					}
				}
			}
		}
	}
	document.body.insertAdjacentHTML("BeforeEnd","<form name=formSIC style='display:none'></form>");
	teste = htmlHiddenFields;
	formSIC.innerHTML = htmlHiddenFields;

	for (var z=0;z<formSIC.elements.length;z++) {
		campoAtual = formSIC.elements[z];
		campoAtual.value = unescape(campoAtual.value);
	}
	formSIC.action = act;

	formSIC.target = tg;
	formSIC.method = "POST";
	showWait();
	formSIC.submit();
	desabilitaPagina();

}

function habilitaEventosDocumentos(arrForms) {
	for(var j = 0; j < arrForms.length; j++){
		objDisabled = arrForms[j];
		for(var i=0; i < objDisabled.elements.length; i++){
				enableIt(objDisabled.elements[i]);
		}
		paginaHabilitada = true;
	}	
}

function validaData(dataInicial, dataFinal){
	var dtInicial = dataInicial.value; 
	var dtFinal   = dataFinal.value;
	if ( compareDateTime(dtInicial, dtFinal, true) == 1 ){
		alert(msgDateInitialMinorFinal);
		dataFinal.focus();				
		return false;
	}
	return true;
}


// programador	: Rafael Castro
// data			: 05/02/2004
// finalidade	: limpa form indicado e set foco no primeir campo
// parâmetros	: form = formulário em questão
function resetForm(form) {
	clearFields(form);
	setaFocoPrimeiroCampo();
}




///////////////
//**************************************************************************
// verifica a string de formatação do tamanho do campo (digitos,digitos)
// 
// parâmetros
//	(string) strTamCampo
//		a string de formatação do tamanho do campo
//
//	(int) tpCampo
//		tipo do campo
//
// retorno:
//	true se a string de formatação está ok, false caso contrário.
//
//**************************************************************************
function verificaStringTamanhoCampo(strTamCampo,tpCampo) {
	
	var ret 		= true;
	var separadorDigitos 	= ".";	
	var posSeparador	= "";	
	
	///////////////////////////////////////////
	// STRING
	if(tpCampo == TIPODADO_STRING) {
		
		if(isNaN(strTamCampo)) {
			ret = false;
		}		
		
	}
	///////////////////////////////////////////
	// INTEIRO
	else if(tpCampo == TIPODADO_INTEIRO) {
		
		if(isNaN(strTamCampo)) {
			ret = false;
		}
		
	}
	///////////////////////////////////////////
	// FLUTUANTE e MOEDA
	else if( (tpCampo == TIPODADO_FLUTUANTE) || (tpCampo == TIPODADO_MOEDA) ){
	
		// obtem a posicao do separador de digitos decimais
		posSeparador = strTamCampo.indexOf(separadorDigitos);
	
		// se naõ encontrou o separador...
		if(posSeparador == -1) {
			//... formato da tamanho incorreto
			ret = false;
		}
		
		if(ret) {
			// cria array com qtd de digitos 
			arrDigitos = strTamCampo.split(separadorDigitos);
			
			// verifica se foi definida as quantidades 
			// de deigitos para depois e antes do sep. decimal
			if(arrDigitos.length <2) {
				ret = false;
			} 
			// verifica se a qtd de dígitos foi informada corretamente 
			// (string somente com dígitos)
			else if( isNaN(arrDigitos[0]) || isNaN(arrDigitos[1]) ) {
				ret = false;
			}
		}
	}
	
	// verifica se foi encontrado erro na string de formatação
	// do tamanho do campo	
	if(ret == false) {
		
		// cria exceção
		fmErroTamanhoDoCampo = new Error (
			"WebFrameWorkCWI\n" 
			+ "A string de definição do tamanho do campo "
			+ "é inválida para o tipo de dado selecionado:\n"
			+ "tipo do dado do campo: " + tpCampo + "\n"
			+ "tamanho do campo: " + strTamCampo
		);			
	}
	
	return ret;
}


//**************************************************************************
// configura o campo do formulário
// parâmetros
//	(string) nomeCampo 
//		prorpiedade name do input que se deseja modificar
//		(utilizado para encontrar o campo no formulario)
//
//	(char) obrigatorio 
//		's' se o campo deve ser configurado como
//	     	obrigatorio, 'n' caso contrario
//
//	(string) tamCampo 
//		tamanho do campo no formato 'n1,n2' - onde n1 é 
//		a quantidade de dígitos a esquerda do separador 
//		decimal e n2 é a quantidade de dígitos a direita 
//		do separador decimal para um número de ponto 
//		flutuante - ou 'n' - onde n é a 
//		quantidade de dígitos do número inteiro.
//
//	(int) labelCampo 
//		novo valor da propridade label do input (rótulo a ser 
//		utilizado na exibição de mensagens de campos obrigatorios)
//
//**************************************************************************
function configuraCampo(nomeCampo, obrigatorio, consulta, tamCampo, labelCampo, tipoDado, posicao){
	
	var ID_OBRIGATORIO_CADASTRO = "obrigatorio";
	var ID_OBRIGATORIO_CONSULTA  = "consulta";
	
	var blValida = VALIDA_VALORES_ONBLUR;

	// obtem referencia ao campo a ser modificado
	var pos = parseInt(posicao);
	var campo = null;
	
	if(isFieldArray(document.forms[0].elements[nomeCampo])){
		if (isNaN(pos)){
			throw new Error (
				"WebFrameWorkCWI\n"
				+ "Posição do campo no Array é inválida."
			);			
		}else{
			campo = document.forms[0].elements[nomeCampo][posicao];
		}
	}else{
		campo = document.forms[0].elements[nomeCampo];
	}

	
	// verifica se conseguiu obter referencia ao campo
	if(campo){	
		// id padrão do campo
		var idObrigatorio = nomeCampo;
		
		// ajusta flags de obrigatorio/consulta
		obrigatorio 	= obrigatorio.toLowerCase();
		consulta 	= consulta.toLowerCase();
		
		// verifica se o campo deve ser obrigatorio
		if (obrigatorio == 's'){
			// verifica se é uma consulta
			if (consulta == 's'){
				// monta id (obrigatorio/consulta)
				idObrigatorio = ID_OBRIGATORIO_CONSULTA;
			}else {
				// monta id (obrigatorio/cadastro)
				idObrigatorio = ID_OBRIGATORIO_CADASTRO;
			}
		}
		
		// aplica id montado
		campo.id = idObrigatorio;
		
		// configura o label do campo (caso nao seja NULL)
		if(labelCampo) {
			campo.label = labelCampo;
		}
		
		// verifica se o campo é um textbox
		// (somente deve alterar o estilo se for textbox)
		var funcoes = "";
		if(campo.onchange){
			funcoes = (campo.onchange.toString().substring(23,(campo.onchange.toString().length-1)));
		}
		campo.onchange 	= Function("ajustaComportamento(this);"+funcoes);
		if(campo.type.toLowerCase() == 'text') {
			
			// verifica se a string de tamanho
			// do campo está configurada corretamente
			// (um número inteiro)
			if(!verificaStringTamanhoCampo(tamCampo,tipoDado)) {
			
				// aconteceu um erro: string de tamanho de campo inválida
				throw fmErroTamanhoDoCampo;
			}
			
			/*
			///////////////////////////////////////////
			// STRING - texto livre	
			if(tipoDado == TIPODADO_STRING) {
														
				// configura o novo tamanho máximo do texto do campo
				campo.maxLength = parseInt(tamCampo);
				
				// classe + eventos
				campo.className 	= "TextBox";				
				campo.onblur 		= Function("this.className ='TextBox';");
				campo.onfocus 		= Function("this.className ='TextBoxFocus';");								
				campo.tipoDado		= "TIPODADO_STRING";
			} 			
			///////////////////////////////////////////
			// INTEIRO
			else if(tipoDado == TIPODADO_INTEIRO) {
											
				// configura o novo tamanho máximo do texto do campo
				campo.maxLength = parseInt(tamCampo);
				
				// classe + eventos
				campo.className 	= "NumericTextBox";
				campo.onkeypress 	= Function("isNumber(this,event);");
				campo.onblur 		= Function("this.className ='NumericTextBox';");
				campo.onfocus 		= Function("this.className ='NumericTextBoxFocus';");
				campo.tipoDado		= "TIPODADO_INTEIRO";
			}				
			///////////////////////////////////////////
			// MOEDA
			else if(tipoDado == TIPODADO_MOEDA) {
				
				// monta array com digitos antes
				// e depois do separador decimal
				arrDigitos = tamCampo.split('.');
				
				// ajusta array
				arrDigitos[0] = parseInt(arrDigitos[0],10);
				arrDigitos[1] = parseInt(arrDigitos[1],10);
				
				// configura o novo tamanho máximo do texto do campo
				// (digitos inteiros + digitos fração + separador)
				campo.maxLength = arrDigitos[0] + arrDigitos[1] + 1;

				// classe + eventos
				campo.className 	= "NumericTextBox";
				campo.onkeyup		= Function("moeda(this," + arrDigitos[0] + "," + arrDigitos[1] + ",event);");
				campo.onblur 		= Function("retornaFormatoMonetario(this,true); this.className='NumericTextBox';");
				campo.onfocus 		= Function("this.className ='NumericTextBoxFocus';");
				campo.tipoDado		= "TIPODADO_MOEDA";
			}
			///////////////////////////////////////////
			// FLUTUANTE
			else if(tipoDado == TIPODADO_FLUTUANTE) {
				
				// monta array com digitos antes
				// e depois do separador decimal
				arrDigitos = tamCampo.split('.');
				
				// ajusta array
				arrDigitos[0] = parseInt(arrDigitos[0],10);
				arrDigitos[1] = parseInt(arrDigitos[1],10);
				
				// configura o novo tamanho máximo do texto do campo
				// (digitos inteiros + digitos fração + separador)
				campo.maxLength = arrDigitos[0] + arrDigitos[1] + 1;

				// classe + eventos
				campo.className 	= "NumericTextBox";
				campo.onkeyup		= Function("moeda(this," + arrDigitos[0] + "," + arrDigitos[1] + ",event);");
				campo.onblur 		= Function("retornaFormatoMonetario(this,true); this.className='NumericTextBox';");
				campo.onfocus 		= Function("this.className ='NumericTextBoxFocus';");
				campo.tipoDado		= "TIPODADO_FLUTUANTE";
			}
			///////////////////////////////////////////
			// DATA
			else if(tipoDado == TIPODADO_DATA) {
									
				// configura o novo tamanho máximo do texto do campo				
				campo.maxLength = 10;

				// classe + eventos
				campo.className 	= "TextBox";				
				campo.onkeypress	= Function("mask(this,event,'DATA');");
				campo.onblur 		= Function("this.className='TextBox';");
				campo.onfocus 		= Function("this.className ='TextBoxFocus';");
				campo.tipoDado		= "TIPODADO_DATA";
			}	
			///////////////////////////////////////////
			// HORA
			else if(tipoDado == TIPODADO_HORA) {
			
				// configura o novo tamanho máximo do texto do campo
				campo.maxLength = 5;

				// classe + eventos
				campo.className 	= "TextBox";				
				campo.onkeypress	= Function("mask(this,event,'HORA');");
				campo.onblur 		= Function("this.className='TextBox';");
				campo.onfocus 		= Function("this.className ='TextBoxFocus';");
				campo.tipoDado		= "TIPODADO_HORA";
			}				
			///////////////////////////////////////////
			// DATA-HORA
			else if(tipoDado == TIPODADO_DATAHORA) {
						
				// configura o novo tamanho máximo do texto do campo
				campo.maxLength = 18;

				// classe + eventos
				campo.className 	= "TextBox";				
				campo.onkeypress	= Function("mask(this,event,'DATAHORA');");
				campo.onblur 		= Function("this.className='TextBox';");
				campo.onfocus 		= Function("this.className ='TextBoxFocus';");
				campo.tipoDado		= "TIPODADO_DATAHORA";
			}					
			///////////////////////////////////////////
			// CEP
			else if(tipoDado == TIPODADO_CEP) {
									
				// configura o novo tamanho máximo do texto do campo				
				campo.maxLength = 10;

				// classe + eventos
				campo.className 	= "TextBox";				
				campo.onkeypress	= Function("mask(this,event,'CEP');");
				campo.onblur 		= Function("this.className='TextBox';");
				campo.onfocus 		= Function("this.className ='TextBoxFocus';");
				campo.tipoDado		= "TIPODADO_CEP";
			}				
			///////////////////////////////////////////
			// CNPJ
			else if(tipoDado == TIPODADO_CNPJ) {
									
				// configura o novo tamanho máximo do texto do campo				
				campo.maxLength = 18;

				// classe + eventos
				campo.className 	= "TextBox";				
				campo.onkeypress	= Function("mask(this,event,'CNPJ');");
				campo.onblur 		= Function("this.className='TextBox';");
				campo.onfocus 		= Function("this.className ='TextBoxFocus';");
				campo.tipoDado		= "TIPODADO_CNPJ";
			}							
			///////////////////////////////////////////
			// CPF
			else if(tipoDado == TIPODADO_CPF) {
									
				// configura o novo tamanho máximo do texto do campo
				campo.maxLength = 14;

				// classe + eventos
				campo.className 	= "TextBox";				
				campo.onkeypress	= Function("mask(this,event,'CPF');");
				campo.onblur 		= Function("this.className='TextBox';");
				campo.onfocus 		= Function("this.className ='TextBoxFocus';");
				campo.tipoDado		= "TIPODADO_CPF";
			}
			///////////////////////////////////////////
			// EMAIL
			else if(tipoDado == TIPODADO_EMAIL) {
									
				// classe + eventos
				campo.className 	= "TextBox";				
				campo.onblur 		= Function("this.className='TextBox'; testaEmail(this);");
				campo.onfocus 		= Function("this.className ='TextBoxFocus';");
				campo.tipoDado		= "TIPODADO_EMAIL";
			}
			///////////////////////////////////////////
			// IP
			else if(tipoDado == TIPODADO_IP) {
			
				// classe + eventos
				campo.className 	= "TextBox";				
				campo.onkeypress	= Function("isIP(this,event);");
				campo.onblur 		= Function("this.className='TextBox';");
				campo.onfocus 		= Function("this.className ='TextBoxFocus';");
				campo.tipoDado		= "TIPODADO_IP";
			}		

			///////////////////////////////////////////
			// ERRO - tipo nao encontrado
			else {
				
				// cria a lança exceção
				fmErroTipoDoCampo = new Error(
					"WebFrameWorkCWI\n" 
					+ "Tipo de dado inválido!\n "					
					+ "tipo do dado do campo: " + tipoDado 
					+ "."
				);							
				throw fmErroTipoDoCampo;			
			}*/
			
			switch (tipoDado){
				///////////////////////////////////////////
				// STRING - texto livre
				case TIPODADO_STRING: {
					
					// configura o novo tamanho máximo do texto do campo
					campo.maxLength = parseInt(tamCampo);
					
					// classe + eventos
					campo.className 	= "TextBox";
					campo.onblur 		= Function("this.className ='TextBox';");
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_STRING";
					
					break;
				}
				///////////////////////////////////////////
				// INTEIRO
				case TIPODADO_INTEIRO: {
												
					// configura o novo tamanho máximo do texto do campo
					campo.maxLength = parseInt(tamCampo);
					
					// classe + eventos
					campo.className 	= "NumericTextBox";
					campo.onkeypress 	= Function("event","return isNumber(this,event);");
					campo.onfocus 		= Function("this.className='NumericTextBoxFocus';");
					campo.tipoDado		= "TIPODADO_INTEIRO";
					
					//if (blValida){
						campo.onblur 		= Function("this.className='NumericTextBox'; validaNumber(this);");
					//}else{
						//campo.onblur 		= Function("this.className='NumericTextBox';");
					//}
					
					break;
				}
				///////////////////////////////////////////
				// MOEDA
				case TIPODADO_MOEDA: {
					
					// monta array com digitos antes
					// e depois do separador decimal
					arrDigitos = tamCampo.split('.');
					
					// ajusta array
					arrDigitos[0] = parseInt(arrDigitos[0],10);
					arrDigitos[1] = parseInt(arrDigitos[1],10);
					
					// configura o novo tamanho máximo do texto do campo
					// (digitos inteiros + digitos fração + separador)
					campo.maxLength = arrDigitos[0] + arrDigitos[1] + 1;
					
					// classe + eventos
					campo.className 	= "NumericTextBox";
					//campo.onkeyup		= Function("moeda(this," + arrDigitos[0] + "," + arrDigitos[1] + ",event);");
					campo.onKeyDown		= Function("moeda(this," + arrDigitos[0] + "," + arrDigitos[1] + ",event);");
					campo.onkeypress 	= Function("isNumber(this,event);");
					campo.onfocus 		= Function("this.className='NumericTextBoxFocus';");
					campo.tipoDado		= "TIPODADO_MOEDA";
					
					//if (blValida){
						campo.onblur 		= Function("retornaFormatoMonetario(this,true); this.className='NumericTextBox'; validaMoney(this);");
					//}else{
						//campo.onblur 		= Function("retornaFormatoMonetario(this,true); this.className='NumericTextBox';");
					//}
					
					break;
				}
				///////////////////////////////////////////
				// FLUTUANTE
				case TIPODADO_FLUTUANTE: {
					
					// monta array com digitos antes
					// e depois do separador decimal
					arrDigitos = tamCampo.split('.');
					
					// ajusta array
					arrDigitos[0] = parseInt(arrDigitos[0],10);
					arrDigitos[1] = parseInt(arrDigitos[1],10);
					
					// configura o novo tamanho máximo do texto do campo
					// (digitos inteiros + digitos fração + separador)
					campo.maxLength = arrDigitos[0] + arrDigitos[1] + 1;
					
					// classe + eventos
					campo.className 	= "NumericTextBox";
					campo.onkeydown		= Function("moeda(this," + arrDigitos[0] + "," + arrDigitos[1] + ",event);");
					campo.onkeypress 	= Function("isNumber(this,event);");
					campo.onfocus 		= Function("this.className ='NumericTextBoxFocus';");
					campo.tipoDado		= "TIPODADO_FLUTUANTE";
					
					//if (blValida){
						campo.onblur 		= Function("retornaFormatoMonetario(this,true); this.className='NumericTextBox'; validaMoney(this);");
					//}else{
					//	campo.onblur 		= Function("retornaFormatoMonetario(this,true); this.className='NumericTextBox';");
					//}
					
					break;
				}
				///////////////////////////////////////////
				// DATA
				case TIPODADO_DATA: {
					
					// configura o novo tamanho máximo do texto do campo
					campo.maxLength = 10;
					
					// classe + eventos
					campo.className 	= "TextBox";
					campo.onkeypress	= Function("event","return mask(this,event,'DATA');");
					campo.onfocus 		= Function("this.className='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_DATA";
					
					//if (blValida){
						campo.onblur 		= Function("this.className='TextBox'; validaDate(this);");
					//}else{
					//	campo.onblur 		= Function("this.className='TextBox';");
					//}
					
					break;
				}
				///////////////////////////////////////////
				// HORA
				case TIPODADO_HORA: {
					
					// configura o novo tamanho máximo do texto do campo
					campo.maxLength = 5;
					
					// classe + eventos
					campo.className 	= "TextBox";
					campo.onkeypress	= Function("mask(this,event,'HORA');");
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_HORA";
					
					//if (blValida){
						campo.onblur 		= Function("this.className='TextBox'; validaHora(this);");
					//}else{
					//	campo.onblur 		= Function("this.className='TextBox';");
					//}
					
					break;
				}
				///////////////////////////////////////////
				// DATA-HORA
				case TIPODADO_DATAHORA: {
					
					// configura o novo tamanho máximo do texto do campo
					campo.maxLength = 18;
					
					// classe + eventos
					campo.className 	= "TextBox";
					campo.onkeypress	= Function("mask(this,event,'DATAHORA');");
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_DATAHORA";
					
					//if (blValida){
						campo.onblur 		= Function("this.className='TextBox'; validaDateHora(this);");
					//}else{
					//	campo.onblur 		= Function("this.className='TextBox';");
					//}
					
					break;
				}
				///////////////////////////////////////////
				// CEP
				case TIPODADO_CEP: {
					
					// configura o novo tamanho máximo do texto do campo
					campo.maxLength = 10;
					
					// classe + eventos
					campo.className 	= "TextBox";
					campo.onkeypress	= Function("event","return mask(this,event,'CEP');");
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_CEP";
					
					//if (blValida){
						campo.onblur 		= Function("this.className='TextBox'; validaCep(this);");
					//}else{
					//	campo.onblur 		= Function("this.className='TextBox';");
					//}
					
					break;
				}
				///////////////////////////////////////////
				// CNPJ
				case TIPODADO_CNPJ: {
					
					// configura o novo tamanho máximo do texto do campo
					campo.maxLength = 14;
					
					// classe + eventos
					campo.className 	= "TextBox";
					campo.onkeypress	= Function("mask(this,event,'CNPJ');");
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_CNPJ";
					
					//if (blValida){
						campo.onblur 		= Function("this.className='TextBox'; validaCnpj(this);");
					//}else{
					//	campo.onblur 		= Function("this.className='TextBox';");
					//}
					
					break;
				}
				///////////////////////////////////////////
				// CPF
				case TIPODADO_CPF: {
					
					// configura o novo tamanho máximo do texto do campo
					campo.maxLength = 11;
					
					// classe + eventos
					campo.className 	= "TextBox";
					campo.onkeypress	= Function("mask(this,event,'CPF');");
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_CPF";
					
					//if (blValida){
						campo.onblur 		= Function("this.className='TextBox'; validaCpf(this);");
					//}else{
					//	campo.onblur 		= Function("this.className='TextBox';");
					//}
					
					break;
				}
				///////////////////////////////////////////
				// EMAIL
				case TIPODADO_EMAIL: {
					
					// classe + eventos
					campo.className 	= "TextBox";
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_EMAIL";
					
					//if (blValida){
						campo.onblur 		= Function("this.className='TextBox'; validaEmail(this);");
					//}else{
					//	campo.onblur 		= Function("this.className='TextBox';");
					//}
					
					break;
				}
				///////////////////////////////////////////
				// IP
				case TIPODADO_IP: {
					
					// classe + eventos
					campo.className 	= "TextBox";
					campo.onkeypress	= Function("isIP(this,event);");
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_IP";
					
					//if (blValida){
						campo.onblur 		= Function("this.className='TextBox';");
					//}else{
					//	campo.onblur 		= Function("this.className='TextBox';");
					//}
					
					break;
				}
				///////////////////////////////////////////
				// TELEFONE
				case TIPODADO_TELEFONE: {
					
					// classe + eventos
					campo.className 	= "TextBox";
					campo.onkeypress	= Function("event","return maskTelefone(this,event);");
					campo.onblur 		= Function("this.className='TextBox';");
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_TELEFONE";
					campo.maxLength		= parseInt(tamCampo) + 1; // adicionei para incluir a máscara
					
					break;
				}
				///////////////////////////////////////////
				// DOMINIO
				case TIPODADO_DOMINIO: {
					
					// classe + eventos
					campo.className 	= "TextBox";
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_DOMINIO";
					
					//if (blValida){
						campo.onblur 		= Function("this.className='TextBox'; checa_dominio(this);");
					//}else{
					//	campo.onblur 		= Function("this.className='TextBox';");
					//}
					
					break;
				}
				///////////////////////////////////////////
				// USERNAME
				case TIPODADO_USERNAME: {
					
					// classe + eventos
					campo.className 	= "TextBox";
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_USERNAME";
					
					//if (blValida){
						campo.onblur 		= Function("this.className='TextBox'; nnTestaUser(this);");
					//}else{
					//	campo.onblur 		= Function("this.className='TextBox';");
					//}
					
					break;
				}
				///////////////////////////////////////////
				// BANCODADOS
				case TIPODADO_BANCODADOS: {
					
					// classe + eventos
					campo.className 	= "TextBox";
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_BANCODADOS";
					
					//if (blValida){
						campo.onblur 		= Function("this.className='TextBox'; checa_nome_BD(this);");
					//}else{
					//	campo.onblur 		= Function("this.className='TextBox';");
					//}
					
					break;
				}
				///////////////////////////////////////////
				// URL
				case TIPODADO_URL: {
					
					// classe + eventos
					campo.className 	= "TextBox";
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_URL";
					
					//if (blValida){
						campo.onblur 		= Function("this.className='TextBox'; checa_url(this);");
					//}else{
					//	campo.onblur 		= Function("this.className='TextBox';");
					//}
					
					break;
				}
				///////////////////////////////////////////
				// SALACHAT
				case TIPODADO_SALACHAT: {
					
					// classe + eventos
					campo.className 	= "TextBox";
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_SALACHAT";
					campo.onblur 		= Function("this.className='TextBox'; checa_nomesala(this);");
					break;
				}
				///////////////////////////////////////////
				// RG/Inscricao Estadua
				case TIPODADO_RG: {
					campo.className 	= "TextBox";
					campo.onblur 		= Function("this.className ='TextBox';");
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_RG";					
					break;
				}
				///////////////////////////////////////////
				// Cartao de credito
				case TIPODADO_CARTAO: {
					campo.className 	= "TextBox";
					campo.onblur 		= Function("this.className ='TextBox';");
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_CARTAO";
					
					break;
				}
				///////////////////////////////////////////
				// Competnecia (MM/AAAA)
				case TIPODADO_COMPETENCIA: {
					campo.className 	= "TextBox";
					campo.onblur 		= Function("this.className ='TextBox';");
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_CARTAO";
					
					break;
				}
				///////////////////////////////////////////
				// Numero de conta/agencia
				case TIPODADO_CONTA: {
					campo.className 	= "TextBox";
					campo.onblur 		= Function("this.className ='TextBox';");
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_CONTA";
					
					break;
				}
				///////////////////////////////////////////
				// HORARIO
				case TIPODADO_HORARIO: {
					
					// configura o novo tamanho máximo do texto do campo
					campo.maxLength = 11;
					
					// classe + eventos
					campo.className 	= "TextBox";
					campo.onkeypress	= Function("mask(this,event,'HORARIO');");
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_HORARIO";
					campo.onblur 		= Function("this.className='TextBox';");
					break;
				}
				///////////////////////////////////////////
				// Inscricao estadual
				case TIPODADO_INSCRESTADUAL: {
					campo.className 	= "TextBox";
					campo.onblur 		= Function("this.className ='TextBox';");
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.tipoDado		= "TIPODADO_INSCRESTADUAL";
					
					break;
				}
				///////////////////////////////////////////
				// OBSERVACAO
				case TIPODADO_OBSERVACAO: {
					
					// configura o novo tamanho máximo do texto do campo
					campo.maxLength = parseInt(tamCampo);
					
					// classe + eventos
					campo.className 	= "TextBox";
					campo.onblur 		= Function("this.className ='TextBox';");
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					campo.onkeypress 	= Function("isObservacao(this,event); validaLengthTextArea(this,event);");
					campo.tipoDado		= "TIPODADO_OBSERVACAO";
					
					break;
				}
				///////////////////////////////////////////
				// CIDADE
				case TIPODADO_CIDADE: {
					// configura o novo tamanho máximo do texto do campo
					campo.maxLength = parseInt(tamCampo);
					
					// classe + eventos
					campo.className 	= "TextBox";
					campo.onblur 		= Function("this.className ='TextBox';");
					campo.onfocus 		= Function("this.className ='TextBoxFocus';");
					break;
				}
				///////////////////////////////////////////
				// ERRO - tipo nao encontrado
				default: {
					// cria a lança exceção
					fmErroTipoDoCampo = new Error(
						"WebFrameWorkCWI\n"
						+ "Tipo de dado inválido!\n "
						+ "tipo do dado do campo: " + tipoDado
						+ "."
					);
					throw fmErroTipoDoCampo;
				}
			}
		}
	}
}


//**************************************************************
// função responsável por colocar as máscaras nos campos
//    objCampo -> Campo
//    tipoDado -> Tipo de Dado
//**************************************************************
function setaMascara(objCampo, tipoDado){
	switch (tipoDado){
		case TIPODADO_CPF:{
			formatCpf(objCampo);
			break;
		}
		case TIPODADO_CNPJ:{
			formatCnpj(objCampo);
			break;
		}
		default:{
			break;
		}
	}
}

//**************************************************************
// função que seleciona todos os itens do listBox indicado
//**************************************************************
function selecionaItensListBox(listBox) {
	for (i=0; i<listBox.options.length; i++){
		listBox.options[i].selected = true
	}
}

//**************************************************************
// função que limpa seleção do listbox indicado
//**************************************************************
function limpaSelecaoListbox(listBox) {
	listBox.options.selectedIndex = -1; 
}


//**************************************************************
// função que espera o objeto document passado como argumento 
// estar completamente carregado e avalia os comandos JS em uma
// string para serem executados.
//
//  parâmetros:
//	   oDocument - objeto document que se deseja verificar o
//	  			   carregamento.
//	   js - string contendo comandos javaScript a serem 
//			avaliados/executados (eval)
//**************************************************************
function aguardaCarregamentoDocumento(oDocument,js) {
	// verifica se o documento foi completamente carregado
	if (oDocument.readyState == 'complete'){
		// verifica se foi indicado um trecho JS a ser avaliado			
		if(js) {
			eval(js);
		}
	}else{		
		// prepara chamada recursiva - necessário devido a bugs IE/JS
		auxDoc = oDocument;
		auxJS = js;
		clearTimeout();

		// chamada recursiva que garante o carregamento do documento		
		setTimeout("aguardaCarregamentoDocumento(auxDoc,auxJS)", 100);
	}
}


//**************************************************************
// função que limpa a URL presente em um IFRAME, carregando uma
// página em branco.
//
//  parâmetros:
//	   strIFrame - string com o nome/caminho do iframe 
//					(e.g. 'document.ifrmTeste')
//**************************************************************
function descarregaIFrame(strIFrame) {
	// obtem o objeto iframe
	var oIFrame = eval(strIFrame);
	
	// carrega página em branco
	oIFrame.location = "about:blank";
}


//**************************************************************
// função que carrega o IFRAME com a url passada como argumento.
// Caso o IFRAME não esteja carregado com a URL indicada a url
// será carregada e a string JS será avaliada ao final do 
// carregamento. Caso esteja, apenas o JS é avaliado.
//
//  parâmetros:
//		strIFrame - string com o nome/caminho do iframe 
//					(e.g. 'document.ifrmTeste') 
//		url - string que contem a URL a ser carregada no IFRAMEs
//		js - string contendo comandos javaScript a serem 
//			avaliados/executados (eval)		
//**************************************************************
function carregaIFrame(strIFrame, url, js){
	// obtem o objeto iframe
	var oIFrame = eval(strIFrame);
	
	// verifica se o iframe esta carregado com a URL
	if((oIFrame.location == undefined) || (oIFrame.location == "") || (oIFrame.location == "about:blank")){
		// indica a url que deve ser carregada no iframe
		oIFrame.location = url;
		// aguarda que a URL
		aguardaCarregamentoIFrame(strIFrame, js);
		// retorna true caso o iframe não tenha sido carregado
		return true;
	}else{
		// verifica se foi indicado um trecho JS a ser avaliado
		if(js){
			eval(js);
			// retorna false caso o iframe já esteja carregado
			return false;
		}
	}
}


//**************************************************************
// função que espera o objeto iframe passado como argumento 
// estar completamente carregado e avalia os comandos JS em 
// uma string para serem executados.
//
//  parâmetros:
//		strIFrame - string com o nome/caminho do iframe 
//					(e.g. 'document.ifrmTeste') 
//		js - string contendo comandos javaScript a serem 
//			avaliados/executados (eval)		
//**************************************************************
function aguardaCarregamentoIFrame(ifrm, js) {
	var oDocument = eval(ifrm + '.document');
	
	// verifica se o documento está carregado 
	if (oDocument.readyState == 'complete'){			
		// verifica se foi indicado um trecho JS a ser avaliado				
		if(js) {
			eval(js);
		}
	}else{
   		// prepara chamada recursiva - necessário devido a bugs IE/JS	
		auxIfrm = ifrm;
		auxJS = js;
		clearTimeout();		

		// chamada recursiva que garante o carregamento do documento				
		setTimeout("aguardaCarregamentoIFrame(auxIfrm,auxJS)", 100);
	}
}


///////////// CARREGAMENTO DAS ABAS DETALHES //////////////////////
//**************************************************************
// função que carrega o IFRAME com a url passada como argumento,
// caso o IFRAME não esteja.
//
//  parâmetros:
//		frmMestre - formulário da aba mestre 
//					(e.g. document.forms[0]) 
//		strIFrameAba - string que contem o none do iframe onde a
//					a URL será carregada, será o target do formulário
//		urlAba - string contendo a URL que será carregada 
//				será o action do formulário
//**************************************************************
function carregaAbaDetalhe(frmMestre, strIFrameAba, urlAba) {
	// obtem o objeto iframe
	var oIFrame = eval(strIFrameAba);
	
	// verifica se o iframe esta carregado com a URL	
	if((oIFrame.location == undefined) || (oIFrame.location == "") || (oIFrame.location == "about:blank")) {
		// indica a url que deve ser carregada no iframe		
		frmMestre.action = urlAba;
		frmMestre.target = strIFrameAba;
		submitForm(frmMestre);
	}
	
}


////////////// Comboboxes e Opções Temporárias ////////////////


//*************************************************************
// Objeto utilizado no tratamento de combobox. Criado 
// apartir da necessidade de apresentar 'opções temporárias'
// em combobox (e.g. Uma opção inativa aparecerá na combo 
// durante a edição de um registro  relacionado a esta opção)
//*************************************************************
function OpcaoCombo(opcValor, opcTexto, strProp) {
	this.value = opcValor;
	this.text = opcTexto;
	if(strProp){
		this.properties = strProp
	}
}


//********************************************************
// Tratamento de opções da combo. Seleciona a opção da 
// combo e encapsula a lógica de criação de opções 
// temporárias (caso a opção não apareça na combo ) para 
// a manipulação correta de registros específicos. 
// e.g. Uma opção inativa aparecerá na combo durante a 
// edição de um registro  relacionado a esta opção.
//
// parâmetros:
//	cmb - a combobox a ser manipulada (objeto)
//	opcao - a opção que deve ser selecionada na combo (objeto)
//	bSelecionar - booleano indicando se a opção a ser tratada
//				  deve ser selecionada.
//********************************************************
function trataOpcaoCombo(cmb, opcao, bSelecionar) {
	var bExisteOpcao;
	
	// aplica a remoção da opção temporária
	removeOpcaoTemporaria(cmb,opcao);
	
	// procura a opção na combo	
	bExisteOpcao = verificaExistenciaOpcao(cmb,opcao);
	
	// verifica se a opção NÃO existe na combo
	if(!bExisteOpcao) {
		// inclui a opção como opção temporária	
		incluiOpcaoTemporariaCombo(cmb,opcao);
	}
	
	// verifica se deve selecionar a opção	
	if(bSelecionar) {
		// seleciona a opção
		cmb.value = opcao.value;
	}
}


//********************************************************
// Remove uma opção temporária da combo caso ele seja 
// diferente (texto E valor) da opção no argumento [opcao]
//
// parâmetros:
//	cmb - a combobox a ser manipulada (objeto)
//	opcao - a opção a ser comparada com a opção temporária 
//			sendo utilizada pela combo no momento (objeto)
//********************************************************
function removeOpcaoTemporaria(cmb,opcao) {
	// flag para controle remoção da opção temporaria
	var remover = false;
	
	// verifica se existe uma opção temporária
	// na combo (haverá 1 no máximo por vez!)
	if((cmb.tempvalue) && (cmb.temptext)) {
		// verifica se os valores de texto E valor da opção 
		// temporária utilizada na combo são válidos
		if((cmb.tempvalue!="") && (cmb.temptext!="")) {
			// se não foi indicada uma opção (argumento [opcao] = nulo)
			if(opcao == null) {
				// aprova a remoção da opção temporária
				remover = true;
				//alert(cmb.tempvalue);

			} else if(opcao.value != cmb.tempvalue) {
				remover = true;
				// obs.: a opção temporária será aproveitada caso
				// seja igual a opção passada como parâmetro							
			}
		}
	}

	// verifica se foi aprovada a remoção...	
	if(remover) {
		// remoção da opção temporária
		cmb.options.length--;
		cmb.tempvalue =  cmb.temptext = "";
	}	
}


//********************************************************
// verifica se uma opção existe na combobox
//
// parâmetros:
//	cmb - a combobox a ser manipulada (objeto)
//	opcao - a opção a ser procurada na combobox (objeto)
//
// retorno (bool):
//	true se a opção indicada pelo parâmetro [opcao] existir
//	na combo [cmb], false caso contrário	
//********************************************************
function verificaExistenciaOpcao(cmb,opcao) {
	// define o retorno padrão
	var ret = false;
	
	// laço entre as opções da combo
	for(i=0; i< cmb.length; i++) {
		// verifica se a opção do argumento [opcao]
		// é igual a opção da combo	
		if(cmb.options[i].value == opcao.value) {				
				// aciona indicativo de que a opção existe 
				// na combo e sai do laço
				ret = true;				
				break;
		}
	}
	
	// retorna se encontrou ou não a opção
	return ret;
}

//********************************************************
// inclui uma opção temporária na combo
//
// parâmetros:
//	cmb - a combobox a ser manipulada (objeto)
//	opcao - a opção a ser incluída na combobox (objeto)
//********************************************************
function incluiOpcaoTemporariaCombo(cmb,opcao) {	
	// inclui a opção na combo como uma opção temporária
	// (a opcao será incluída no final da combobox)
	cmb.options[cmb.options.length] = new Option(opcao.text, opcao.value);
	cmb.tempvalue = opcao.value;
	cmb.temptext = opcao.text;
	
	if (opcao.properties){
		strProp = opcao.properties;
		var arrProp = strProp.split(";");
		var arrAux;
		for(var i=0; i<arrProp.length; i++){
			arrAux = arrProp[i].split("=");
			eval("cmb.options[cmb.options.length-1]."+arrAux[0]+" = "+arrAux[1]+";");
		}
	}
}

//********************************************************
// valida o tamanho máximo do TextArea
//
// parâmetros:
// 	 obj - objeto - 'this'
//   event - event
//
// intruções:
// deve ser chamada no evento onkeypress do TextArea
//  ex. onkeypress="valida(this, event);"
// também deve ser colocada a propriedade maxlength no TextArea
//********************************************************
function validaLengthTextArea(obj, event){
	if (event.keyCode != 9){
		if (obj.value.length >= obj.maxlength){
			event.keyCode = 0;
		}
	}
}

//********************************************************
// verifica se um objeto é um array de campos
//********************************************************
function isFieldArray(objField){
	if(objField){
		if(objField.length){
			if(objField.type){
				return false;
			}else{
				return true;
			}
		}else{
			return false;
		}
	}else{
		return false;
	}
}





/**
Funções responsáveis pela manipulação dinamica de campos
*/

var arrManipulacaoCampo = new Array();

var TP_CAMPO		= 0;
var TP_CONTAINER	= 1;

function ManipulacaoCampo(){
	this.oCampo					= null;
	this.arrCondicao			= new Array();
}

function Condicao(){
	this.sValorCondicao			= null;
	this.arrComportamentoCampo	= new Array();
}

function ComportamentoCampo(){
	this.oCampo					= null;
	this.tDado					= null;
	this.oComportamento			= null;
	this.oAtributosPadraoCampo	= null;
}
	
function Comportamento(){
	this.bVisivel				= null;
	this.bObrigatorio			= null;
	this.bBloqueado				= null;
}

function AtributosPadraoCampo(){
	this.sVisivel				= null;
	this.sId					= null;
	this.bBloqueado				= null;
}

/******************************************************************************************
sCampoOrigem	- string	- nome do campo
iPosicaoOrigem	- integer	- posição do campo no array - pode ser null
sValorCondicao	- string	- condição para o procedimento ser executado
sCampoDestino	- string	- nome do campo/ container
iPosicaoDestino	- integer	- posição do campo/ container no array - pode ser null
bVisivel		- boolean	- define se sCampoDestino será visível
bObrigatorio	- boolean	- define se sCampoDestino será obrigatório
bBloqueado		- boolean	- define se sCampoDestino será bloquedo
tDado			- integer	- determina se o sCampoDestino é campo ou container (TP_CAMPO/ TP_CONTAINER)
******************************************************************************************/
function addComportamentoCampo(sCampoOrigem, iPosicaoOrigem, sValorCondicao, sCampoDestino, iPosicaoDestino, bVisivel, bObrigatorio, bBloqueado, tDado){
	
	var oCampoOrigem	= getFieldReference(sCampoOrigem, iPosicaoOrigem);
	switch (tDado){
		case TP_CAMPO:{
			var oCampoDestino	= getFieldReference(sCampoDestino, iPosicaoDestino);
		}
		case TP_CONTAINER:{
			var oCampoDestino	= getContainerReference(sCampoDestino, iPosicaoDestino);
		}
	}
	
	//Verifica se existe o Campo Origem no Array
	var iPosManipulacaoCampo	= null;
	var oManipulacaoCampo		= null;
	for(var i=0; i<arrManipulacaoCampo.length; i++){
		if(arrManipulacaoCampo[i].oCampo == oCampoOrigem){
			iPosManipulacaoCampo = i;
			break;
		}
	}
	if(iPosManipulacaoCampo==null){
		//Instancia o objeto Manipulacao Campo
		oManipulacaoCampo = new ManipulacaoCampo();
		oManipulacaoCampo.oCampo	= oCampoOrigem;
		
		//Adiciona o objeto no Array
		iPosManipulacaoCampo = arrManipulacaoCampo.length;
		arrManipulacaoCampo[iPosManipulacaoCampo] = oManipulacaoCampo;
	}else{
		//Variavel recebe a instancia do objeto Manipulacao Campo
		oManipulacaoCampo = arrManipulacaoCampo[iPosManipulacaoCampo];
	}
	
	// Verifica se existe o Valor da Condição para o Campo Origem
	var iPosCondicao	= null;
	var oCondicao		= null;
	var arrCondicao		= oManipulacaoCampo.arrCondicao;
	for(var i=0; i<arrCondicao.length; i++){
		if(arrCondicao[i].sValor == sValorCondicao){
			iPosCondicao = i;
			break;
		}
	}
	if(iPosCondicao==null){
		//Instancia o objeto Condicao
		oCondicao = new Condicao();
		oCondicao.sValor = sValorCondicao;
		
		//Adiciona o objeto no Array
		iPosCondicao = arrCondicao.length;
		arrCondicao[iPosCondicao] = oCondicao;
	}else{
		//Variavel recebe a instancia do objeto Manipulacao Condicao
		oCondicao = arrCondicao[iPosCondicao];
	}
	
	//Cria o Comportamento
	var oComportamento = new Comportamento()
	oComportamento.bVisivel		= bVisivel;
	oComportamento.bObrigatorio	= bObrigatorio;
	oComportamento.bBloqueado	= bBloqueado;
	
	//Grava as os Atributos Padrao do Campo Destino
	var oAtributosPadraoCampo = new AtributosPadraoCampo();
	switch(tDado){
		case TP_CAMPO:{
			oAtributosPadraoCampo.sVisivel		= oCampoDestino.style.display;
			oAtributosPadraoCampo.sId			= oCampoDestino.id;
			oAtributosPadraoCampo.bBloqueado	= oCampoDestino.disabled;
		}
		case TP_CONTAINER:{
			oAtributosPadraoCampo.sVisivel		= oCampoDestino.style.display;
			oAtributosPadraoCampo.sId			= null;
			oAtributosPadraoCampo.bBloqueado	= null;
		}
	}
	
	//Instancia ComportamentoCampo
	var oComportamentoCampo = new ComportamentoCampo();
	oComportamentoCampo.oCampo					= oCampoDestino;
	oComportamentoCampo.tDado					= tDado;
	oComportamentoCampo.oComportamento			= oComportamento;
	oComportamentoCampo.oAtributosPadraoCampo	= oAtributosPadraoCampo;
	
	//Insere o ComportamentoCampo no array arrComportamentoCampo de Condicao
	var arrComportamentoCampo	= oCondicao.arrComportamentoCampo;
	var iPosComportamentoCampo	= arrComportamentoCampo.length;
	arrComportamentoCampo[iPosComportamentoCampo] = oComportamentoCampo;
}

function ajustaComportamento(oCampoOrigem){
	
	//Verifica se existe o Campo Origem no Array
	var iPosManipulacaoCampo	= null;
	var oManipulacaoCampo		= null;
	for(var i=0; i<arrManipulacaoCampo.length; i++){
		if(arrManipulacaoCampo[i].oCampo == oCampoOrigem){
			iPosManipulacaoCampo = i;
			break;
		}
	}
	if(iPosManipulacaoCampo==null){
		//Campo Origem não está no arry
		return false;
	}else{
		//Variavel recebe a instancia do objeto Manipulacao Campo
		oManipulacaoCampo = arrManipulacaoCampo[iPosManipulacaoCampo];
	}
	
	//Verifica se existe o Valor da Condição para o Campo Origem
	var iPosCondicao	= null;
	var oCondicao		= null;
	var arrCondicao		= oManipulacaoCampo.arrCondicao;
	for(var i=0; i<arrCondicao.length; i++){
		if(arrCondicao[i].sValor == oCampoOrigem.value){
			iPosCondicao = i;
			break;
		}
	}
	//Condição não está no array
	//Varre todo o array de Condicao
	for(var i=0; i<arrCondicao.length; i++){
		//Varre o array de ComportamentoCampo para a condição atual Condicao
		for(var j=0; j<arrCondicao[i].arrComportamentoCampo.length; j++){
			//Retorna as propriedades padrao dos campos
			switch(arrCondicao[i].arrComportamentoCampo[j].tDado){
				case TP_CAMPO:{
					if(arrCondicao[i].arrComportamentoCampo[j].oAtributosPadraoCampo.bBloqueado){
						disableIt(arrCondicao[i].arrComportamentoCampo[j].oCampo);
					}else{
						enableIt(arrCondicao[i].arrComportamentoCampo[j].oCampo);
					}
					arrCondicao[i].arrComportamentoCampo[j].oCampo.id				= arrCondicao[i].arrComportamentoCampo[j].oAtributosPadraoCampo.sId;
					arrCondicao[i].arrComportamentoCampo[j].oCampo.style.display	= arrCondicao[i].arrComportamentoCampo[j].oAtributosPadraoCampo.sVisivel;
				}
				case TP_CONTAINER:{
					arrCondicao[i].arrComportamentoCampo[j].oCampo.style.display	= arrCondicao[i].arrComportamentoCampo[j].oAtributosPadraoCampo.sVisivel;
				}
			}
		}
	}
	if(iPosCondicao==null){
		return false;
	}else{
		//Variavel recebe a instancia do objeto Manipulacao Condicao
		oCondicao = arrCondicao[iPosCondicao];
	}
	
	//Varre ComportamentoCampo e adiciona as novas propriedades
	var arrComportamentoCampo	= oCondicao.arrComportamentoCampo;
	for(var i=0; i<arrComportamentoCampo.length; i++){
		switch(arrComportamentoCampo[i].tDado){
			case TP_CAMPO:{
				if(arrComportamentoCampo[i].oComportamento.bVisivel){
					oCondicao.arrComportamentoCampo[i].oCampo.style.display = '';
				}else{
					oCondicao.arrComportamentoCampo[i].oCampo.style.display = 'none';
				}
				
				if(arrComportamentoCampo[i].oComportamento.bObrigatorio){
					arrComportamentoCampo[i].oCampo.id = "obrigatorio";
				}else{
					arrComportamentoCampo[i].oCampo.id = arrComportamentoCampo[i].oCampo.name;
				}
				
				if(arrComportamentoCampo[i].oComportamento.bBloqueado){
					disableIt(arrComportamentoCampo[i].oCampo);
					if(arrComportamentoCampo[i].oCampo.type=='checkbox'){
						arrComportamentoCampo[i].oCampo.checked = false;
					}else if(arrComportamentoCampo[i].oCampo.type=='radio'){
					
					}else{
						arrComportamentoCampo[i].oCampo.value = "";
					}
				}else{
					enableIt(arrComportamentoCampo[i].oCampo);
				}
			}
			case TP_CONTAINER:{
				if(arrComportamentoCampo[i].oComportamento.bVisivel){
					oCondicao.arrComportamentoCampo[i].oCampo.style.display = '';
				}else{
					oCondicao.arrComportamentoCampo[i].oCampo.style.display = 'none';
				}
			}
		}
	}
}

function iniciaComportamento(){
	//Varra a array de Comportamento
	//Simula evento onChange
	for(var i=0; i<arrManipulacaoCampo.length; i++){
		ajustaComportamento(arrManipulacaoCampo[i].oCampo);
	}
}

function getFieldReference(sCampo, iPosicao){
	var iPos	= parseInt(iPosicao);
	var oCampo	= null;
	
	if(document.forms[0].elements[sCampo]){
		if(isFieldArray(document.forms[0].elements[sCampo])){
			if(isNaN(iPos)){
				throw new Error (
					"WebFrameWorkCWI\n"
					+ "Posição do campo no Array é inválida.\n"
					+ "O valor deve ser numérico."
				);
			}else{
				oCampo = document.forms[0].elements[sCampo][iPos];
			}
			if(!oCampo){
				throw new Error (
					"WebFrameWorkCWI\n"
					+ "Posição do campo no Array é inválida."
				);
			}
		}else{
			oCampo = document.forms[0].elements[sCampo];
		}
	}else{
		throw new Error (
			"WebFrameWorkCWI\n"
			+ "Nome de campo inválido."
		);
	}
	
	return oCampo;
}

function getContainerReference(sNome, iPosicao){
	var iPos			= parseInt(iPosicao);
	var oContainer		= null;
	var oContainerAux	= eval("document.all."+sNome);
	
	if(oContainerAux){
		if(isFieldArray(oContainerAux)){
			if (isNaN(iPos)){
				throw new Error (
					"WebFrameWorkCWI\n"
					+ "Posição do objeto no Array é inválida.\n"
					+ "O valor deve ser numérico."
				);
			}else{
				oContainer = oContainerAux[iPos];
			}
			if(!oContainer){
				throw new Error (
					"WebFrameWorkCWI\n"
					+ "Posição do objeto no Array é inválida."
				);
			}
		}else{
			oContainer = oContainerAux;
		}
	}else{
		throw new Error (
			"WebFrameWorkCWI\n"
			+ "Nome de objeto inválido."
		);
	}
	
	return oContainer;
}
