window.onerror = function(msg,url,line)
{
	alert("Script error: " + msg + '\nUrl: ' + url + '\nLine: ' + line);
//	document.location.href = "login.aspx?logoff=S"
}


//*********************************************************
//Descrição:	Não deixa digitar (',",\,<,>).
//				- Chamar no onKeyPress e no onBlur.
//				- Passar campo usando "this".
//Data de criação: 01/10/2003
//Autor: André Cinicola (Netpartners)
//*********************************************************
function mfcnFiltraChrs(pObj)
{
	// Aspas simples 
	if (event.keyCode == 39)
	{
		event.keyCode = 0;
	}
	
	// Aspas duplas
	if (event.keyCode == 34)
	{
		event.keyCode = 0;
	}
	
	// Barra invertida
	if (event.keyCode == 92)
	{
		event.keyCode = 0;
	}
	
	// Menor
	if (event.keyCode == 60)
	{
		event.keyCode = 0;
	}
	
	// Maior
	if (event.keyCode == 62)
	{
		event.keyCode = 0;
	}

	// Procura os caracteres novamente (se o usuário der um Control + V no campo)
	while (pObj.value.search("'") > -1)
	{
		pObj.value = pObj.value.replace("'","");
	}
	
	while (pObj.value.search("\"") > -1)
	{
		pObj.value = pObj.value.replace("\"","");
	}

	while (pObj.value.search(">") > -1)
	{
		pObj.value = pObj.value.replace(">","");
	}

	while (pObj.value.search("<") > -1)
	{
		pObj.value = pObj.value.replace("<","");
	}
}

//*********************************************************
//Descrição:	Lê o campo hidden que tem as autorizações
//				e habilita ou desabilita o botão.
//				- O campo hidden possui valores "A" e/ou "I"
//				- Quando não pode alterar só possui "I"
//				- Quando não pode incluir só possui "A"
//				- Se não tiver nem "A" nem "I" não Inclui nem Altera.
//				A = Alterar
//				I = Incluir
//Data de criação: 24/09/2003
//Autor: André Cinicola (Netpartners)
//*********************************************************
function mfcnPermissaoBotoes(pPermissoes,pBotao,pAcao)
{
	if(pPermissoes.value.search(pAcao) > -1)
		pBotao.disabled = false;
	else
		pBotao.disabled = true;
}

//*********************************************************
//Descrição:	Troca palavras que a função VB coloca por
//				caracteres do javascript.
//Data de criação: 18/09/2003
//Autor: André Cinicola (Netpartners)
//********************************************************
function gfcnDesconverterTxtJS(pTexto)
{
	// Procura pela palavara -::-AspasDuplas-::- e a troca pelo
	// caracater (\")
	while (pTexto.search("-::-AspasDuplas-::-") > -1)
	{
		pTexto = pTexto.replace('-::-AspasDuplas-::-','\"')
	}

	// Procura pela palavara (-::-AspasSimples-::-) e a troca pelo
	// caracater (\')
	while (pTexto.search("-::-AspasSimples-::-") > -1)
	{
		pTexto = pTexto.replace('-::-AspasSimples-::-','\'')
	}
	
	// Procura pela palavara (-::-BarraInvertida-::-) e a troca pelo
	// caracater (\')
	while (pTexto.search("-::-BarraInvertida-::-") > -1)
	{
		pTexto = pTexto.replace('-::-BarraInvertida-::-','\\')
	}
	
	// Procura pela palavara (-::-QuebraLinha-::-) e a troca pelo
	// caracater (\n)
	while (pTexto.search("-::-QuebraLinha-::-") > -1)
	{
		pTexto = pTexto.replace('-::-QuebraLinha-::-','\n')
	}
	
	return pTexto
}

//*********************************************************
//Descrição:	Bloqueia os caracteres "<" e ">"
//				- Chamar no onBlur e no onKeyPress
//				- Passar como parametro "this"
//Data de criação: 10/09/2003
//Autor: André Cinicola (Netpartners)
//********************************************************
function mfcnBloquearTag(pObj)
{
	if (event.keyCode == 60 || event.keyCode == 62)
	{
		event.keyCode = 0
	}

	if (pObj.value.search("<") != -1)
	{
		// Se for modal, não consegue acessar o frame
		if (self.dialogWidth)
		{
			alert(frm.hdnMsg111.value);
		}
		// Se for pop, não consegue acessar o frame diretamente.
		else if (self.opener)
		{
			alert(opener.top.window.frames('frmMenu').frm.hdnMsg111.value);		
		}
		// Se for iframe, não consegue acessar o frame diretamente.
		else if (self.location.href.search("/ifr") > -1) // Tenta achar "ifr" no inicio do nome da pagina.
		{
			alert(top.parent.frames('frmMenu').frm.hdnMsg111.value);
		}
		else
		{
			alert(parent.frames('frmMenu').frm.hdnMsg111.value);
		}
		//alert("Caracter inválido \"<\"")
		pObj.focus();
		return;
	}
	
	if (pObj.value.search(">") != -1)
	{
		// Se for modal, não consegue acessar o frame
		if (self.dialogWidth)
		{
			alert(frm.hdnMsg112.value)
		}
		// Se for pop, não consegue acessar o frame diretamente.
		else if (self.opener)
		{
			alert(opener.top.window.frames('frmMenu').frm.hdnMsg112.value);		
		}
		// Se for iframe, não consegue acessar o frame diretamente.
		else if (self.location.href.search("/ifr") > -1) // Tenta achar "ifr" no inicio do nome da pagina.
		{
			alert(top.parent.frames('frmMenu').frm.hdnMsg112.value);
		}
		else
		{
			alert(parent.frames('frmMenu').frm.hdnMsg112.value);
		}
		//alert("Caracter inválido \">\"")
		pObj.focus();
		return;
	}
}

//*********************************************************
//Descrição:	Valida os campos Quantidade de Horas
//				- Deve ser chamada no onKeyPress do campo.
//				- Passar o campo usando "this".
//				- Esta função deve ser usada juntamente 
//				  com a função mfcnValidarQtHoras()
//Data de criação: 19/08/2003
//Autor: André Cinicola (Netpartners)
//********************************************************
function mfcnFormatoQtHoras(pObj)
{
	var lstrValor = pObj.value;
	
	// Não deixa digitar ":" se não tiver números na frente
	if (event.keyCode == 58 && lstrValor.length < 2)
	{
		event.keyCode = 0;
	}

	// Deixa digitar apenas numeros ou ":"
	if (((event.keyCode < 48) || (event.keyCode > 57)) && (event.keyCode != 58))
	{
		event.keyCode = 0;
	}

	// Deixa digitar ":" apenas uma vez
	if ((lstrValor.search(":") != -1) && (event.keyCode == 58))
	{
		event.keyCode = 0;
	}
}

//*********************************************************
//Descrição:	Valida os campos Quantidade de Horas
//				- Deve ser chamada no onBlur do campo.
//				- Passar o campo usando "this".
//				- Esta função deve ser usada juntamente 
//				  com a função mfcnFormatoQtHoras()
//Data de criação: 19/08/2003
//Autor: André Cinicola (Netpartners)
//********************************************************
function mfcnValidarQtHoras(pObj)
{
	var lstrValor = pObj.value;
	var lintPos = lstrValor.search(":")
	lblnOk = true; // Variavel global (sem var). É usada em outras funções no sistema.
	
	// Se achou ":"
	if (lintPos != -1)
	{
		// Verifica quantos numeros há antes dos ":"
		if (lstrValor.substring(0,lintPos).length > 4)
		{
			lblnOk = false;
		}
		// Verifica se há pelo menos 2 digitos antes dos ":"
		if (lstrValor.substring(0,lintPos).length < 2)
		{
			lblnOk = false;
		}
		// Verifica se há dois numeros depois dos ":" e se nao passam de 59.
		if (lstrValor.substr(lintPos+1).length != 2)
		{
			lblnOk = false;
		}
		else
		{
			if (lstrValor.substr(lintPos+1) > 59)
			{
				lblnOk = false;
			}
		}
	}
	else
	{
		// Se nao achou ":", verifica se há mais de 4 numeros.
		if (lstrValor.length > 0)
		{
			lblnOk = false;
		}
	}

	if (lblnOk == false)
	{
		// Se for modal, não consegue acessar o frame
		if (self.dialogWidth)
		{
			alert(frm.hdnMsg113.value)
		}
		// Se for pop, não consegue acessar o frame diretamente.
		else if (self.opener)
		{
			alert(opener.top.window.frames('frmMenu').frm.hdnMsg113.value);		
		}
		// Se for iframe, não consegue acessar o frame diretamente.
		else if (self.location.href.search("/ifr") > -1) // Tenta achar "ifr" no inicio do nome da pagina.
		{
			alert(top.parent.frames('frmMenu').frm.hdnMsg113.value);
		}
		else
		{
			alert(parent.frames('frmMenu').frm.hdnMsg113.value);
		}
		//alert('Digite a quantidade de horas no formato \"9999:59\"!')
		pObj.focus();
	}
}

//*********************************************************
//Descrição:	Valida horário (00:00 - 23:59)
//				- Deve ser chamada no onBlur do campo.
//				- Passar o campo usando "this".
//				- Esta função deve ser usada juntamente 
//				  com a função mfcnFormatoQtHoras()
//Data de criação: 07/09/2003
//Autor: Gustavo Rodrigues (Netpartners)
//********************************************************
function mfcnValidarHorario(pObj)
{
	var lstrValor = pObj.value;
	var lintPos = lstrValor.search(":")
	lblnOk = true; // Variavel global (sem var). É usada em outras funções no sistema.
	
	// Se achou ":"
	if (lintPos != -1)
	{
		// Verifica quantos numeros há antes dos ":"
		if (lstrValor.substring(0,lintPos) > 23)
		{
			lblnOk = false;
		}
		// Verifica se há pelo menos 2 digitos antes dos ":"
		if (lstrValor.substring(0,lintPos).length < 2)
		{
			lblnOk = false;
		}
		// Verifica se há dois numeros depois dos ":" e se nao passam de 59.
		if (lstrValor.substr(lintPos+1).length != 2)
		{
			lblnOk = false;
		}
		else
		{
			if (lstrValor.substr(lintPos+1) > 59)
			{
				lblnOk = false;
			}
		}
	}
	else
	{
		// Se nao achou ":", verifica se há mais de 4 numeros.
		if (lstrValor.length > 0)
		{
			lblnOk = false;
		}
	}

	if (lblnOk == false)
	{
		// Se for modal, não consegue acessar o frame
		if (self.dialogWidth)
		{
			alert(frm.hdnMsg114.value)
		}
		// Se for pop, não consegue acessar o frame diretamente.
		else if (self.opener)
		{
			alert(opener.top.window.frames('frmMenu').frm.hdnMsg114.value);		
		}
		// Se for iframe, não consegue acessar o frame diretamente.
		else if (self.location.href.search("/ifr") > -1) // Tenta achar "ifr" no inicio do nome da pagina.
		{
			alert(top.parent.frames('frmMenu').frm.hdnMsg114.value);
		}
		else
		{
			alert(parent.frames('frmMenu').frm.hdnMsg114.value);
		}
		//alert('Digite a quantidade de horas no formato \"XX:XX\" com valores entre 00:00 e 23:59!')
		pObj.focus();
	}
}


//*********************************************************
//Descrição:	Deixa o backgound transparente através de CSS.
//				Essa funcao deve ser chamada no final da pagina
//				se esta estiver usando 'ASPCheckbox' ou 'ASPRadioButton'.
//Data de criação: 18/08/2003
//Autor: André Cinicola (Netpartners)
//********************************************************
function mfcnTirarBackground()
{
	for(i=0;i<frm.elements.length;i++)
	{
		if((frm.elements(i).type == "checkbox") || (frm.elements(i).type == "radio"))
		{
			frm.elements(i).style.background = "transparent";
		}
	}
}

//*********************************************************
//Descrição:	Verifica se tentaram entrar na página sem passar
//				pelo frame, se sim, dá logoff, a única excessão
//				é a página de login
//Data de criação: 13/08/2003
//Autor: Gustavo Rodrigues (Netpartners)
//********************************************************
if (top.location.href == document.location.href)
{
	var result
	var page = document.location.href;
	page = page.toString();
	page = page.toLowerCase();
	result = page.search("login.aspx");
	if (result == -1)
	{
		result = page.search("popestruturasistemamulti.aspx");
	}
	if (result == -1)
	{
		result = page.search("popestruturasistema.aspx");
	}
	if (result == -1)
	{
		result = page.search("popestruturaorganizacao.aspx");
	}
	if (result == -1)
	{
		result = page.search("popnivelacesso.aspx");
	}
	if (result == -1)
	{
		result = page.search("popestruturaorganizacaonivel.aspx");		
	}
	if (result == -1)
	{
		result = page.search("popremanejamentoatividade.aspx");
	}	
	if (result == -1)
	{
		result = page.search("popreabertura.aspx");
	}	
	if (result == -1)
	{	
		result = page.search("popalterarsenha.aspx");
	}	
	if (result == -1)
	{
		result = page.search("popatualizacaosistema.aspx");
	}	
	if (result == -1)
	{
		result = page.search("popcancelarocorrencia.aspx");
	}	
	if (result == -1)
	{
		result = page.search("popfecharocorrencia.aspx");
	}	
	if (result == -1)
	{
		result = page.search("poprepeticao.aspx");
	}	
	if (result == -1)
	{
		result = page.search("popsubocorrencia.aspx");
	}	
	if (result == -1)
	{
		result = page.search("popagrupamento.aspx");
	}	
	if (result == -1)
	{
		result = page.search("popmostrafaq.aspx");
	}	
	if (result == -1)
	{
		result = page.search("respostapesquisa.aspx");
	}	
	if (result == -1)
	{
		result = page.search("respostapesquisaaprovacao.aspx");
	}	
	if (result == -1)
	{
		result = page.search("respostapesquisaavaliacao.aspx");
	}	
	if (result == -1)
	{
		result = page.search("popFornecedor.aspx");
	}	
	//Redireciona para login e dá logoff
	if (result == -1)
	{
		window.navigate("login.aspx?logoff=S")
	}
}

//*********************************************
//Descrição:	Trim.
//Data de criação:
//Autor:
//*********************************************
function trim(Str)
{
	for (l = 0; l < Str.length; l++)
	{
		if (Str.charAt(l) != ' ')
		{
		break;
		}
	
	}
	if (l == Str.length)
	{
		return '';
	}

	fim = Str.length - 1;
	for (i = 0; i < Str.length; i++)
	{
		if (Str.charAt(i) != " ")
		{
		break;
		}
	}

	for(j = fim; j > 0; j--)
	{
		if (Str.charAt(j) != " ")
		{
		break;
		}
	}
	return Str.substring(i, j+1);
}

//*********************************************
//Descrição:	Cancela um submit já iniciado.
//Data de criação: 02/07/2003
//Autor: André Cinicola (NetPartners)
//*********************************************
function mfcnCancelarSubmit()
{
	window.event.cancelBubble = true;
	window.event.returnValue = false;
	return;
}

//*********************************************
//Descrição:	Troca o background de um objeto
//				através de CSS.
//				O objeto deve ser passado para
//				a função utilizando "this"
//Data de criação: 02/07/2003
//Autor: André Cinicola (NetPartners)
//*********************************************
function mfcnTrocarCor(objeto, cor)
{
	objeto.style.background = cor
}

//*********************************************
//Descrição:	Permite que sejam digitados
//				apenas numeros
//Data de criação: 10/07/2003
//Autor: André Cinicola (NetPartners)
//*********************************************
function mfcnSoNumeros()
{
	if (((event.keyCode < 48) || (event.keyCode > 57)) && (event.keyCode != 13)) 
	{
		// Se for modal, não consegue acessar o frame
		if (self.dialogWidth)
		{
			alert(frm.hdnMsg115.value)
		}
		// Se for pop, não consegue acessar o frame diretamente.
		else if (self.opener)
		{
			alert(opener.top.window.frames('frmMenu').frm.hdnMsg115.value);		
		}
		// Se for iframe, não consegue acessar o frame diretamente.
		else if (self.location.href.search("/ifr") > -1) // Tenta achar "ifr" no inicio do nome da pagina.
		{
			alert(top.parent.frames('frmMenu').frm.hdnMsg115.value);
		}
		else
		{
			alert(parent.frames('frmMenu').frm.hdnMsg115.value);
		}
		//alert ("Digite apenas números!");
		event.keyCode = 0;
		return;
	}
}

//*********************************************
//Descrição:	Abre janela, conforme parametros.
//				Se nao for especificado Top e Left
//				Usa valores padrão 50 e 100.
//Data de criação: 11/07/2003
//Autor: André Cinicola (NetPartners)
//*********************************************
function mfcnAbrirJanela(pUrl, pNome, pOpcoes)
{
	if (pOpcoes.search("top") == -1)
	{
		pOpcoes = pOpcoes + ',top=50'
	}
	if (pOpcoes.search("left") == -1)
	{
		pOpcoes = pOpcoes + ',left=100'
	}
	if (pOpcoes.search("scrolbars") == -1)
	{
		pOpcoes = pOpcoes + ',scrollbars=yes'
	}
	window.open(pUrl, pNome, pOpcoes)
	return;
}

//*********************************************
//Descrição:	Limita número de caracateres em
//				um campo.
//				- Passar o campo usando "this".
//				- Chamá-la no onKeyPress e no 
//				  onBlur.
//Data de criação: 14/07/2003
//Autor: André Cinicola (NetPartners)
//*********************************************
function mfcnLimitarCampo(pTamanho, pObjeto)
{
	if (pObjeto.innerText.length >= pTamanho)
	{
		event.keyCode = 8;
		pObjeto.innerText = pObjeto.innerText.substring(0,pTamanho)
	}
	return;
}


//*********************************************
//Descrição:	Deixa digitar apenas números
//				e UMA virgula
//				- Passar o campo usando "this".
//Data de criação: 15/07/2003
//Autor: André Cinicola (NetPartners)
//*********************************************
function mfcnValidarValorNumerico(pObjeto)
{
	if (((event.keyCode < 48) || (event.keyCode > 57)) && (event.keyCode != 44))
	{
		event.keyCode = 0;
	}

	if ((pObjeto.value.search(",") != -1) && (event.keyCode == 44))
	{  
		event.keyCode = 0;
	}
}


function mfcnMostrarEsconderObjeto(pObjeto)
{
	var mostrar = document.getElementById(pObjeto).style.display

	if (mostrar == 'none')
	{
		mostrar = 'inline'
	}
	else
	{
		mostrar = 'none'
	}
	document.getElementById(pObjeto).style.display = mostrar
}

//*********************************************
//Descrição:	Esconde / Mostra objeto (Table,
//				tr, td etc, usando visibility
//				- Passar o campo usando o id dele.
//Data de criação: 16/09/2003
//Autor: André Cinicola (NetPartners)
//*********************************************
function mfcnVisibilidadeObjeto(pObjeto)
{
	var mostrar = document.getElementById(pObjeto).style.visibility

	if (mostrar == 'hidden')
	{
		mostrar = 'visible'
	}
	else
	{
		mostrar = 'hidden'
	}
	document.getElementById(pObjeto).style.visibility = mostrar
}

//************************************************
//Descrição:	Verifica se a data inicial não
//				é maior que a final. (incluindo hora)
//				- Passar datas no formato DD/MM/YYYYHH:MM
//				- Retorna False se a data inicio for maior
//				  que a data fim.
//Data de criação: 18/09/2003
//Autor: André Cinicola (NetPartners)
//************************************************
function mfcnCompararDataHora(pDataInicial, pDataFinal)
{
	var dia	= pDataInicial.substring(0,2)
	var mes	= pDataInicial.substring(3,5) - 1 // Para javascript, mes ZERO é Janeiro
	var ano	= pDataInicial.substring(6,10)
	var hora = pDataInicial.substring(10,12)
	var minuto = pDataInicial.substring(13,16)

	objDataInicio = new Date(ano,mes,dia,hora,minuto)
	
	dia	= pDataFinal.substring(0,2)
	mes	= pDataFinal.substring(3,5) - 1 // Para javascript, mes ZERO é Janeiro
	ano	= pDataFinal.substring(6,10)
	hora = pDataFinal.substring(10,12)
	minuto = pDataFinal.substring(13,16)
	
	objDataFim = new Date(ano,mes,dia,hora,minuto)
	
	if (objDataInicio > objDataFim)
	{
		return false;
	}
	else
	{
		return true;
	}
}

//************************************************
//Descrição:	Verifica se a data inicial não
//				é maior que a final.
//				- Passar datas no formato DD/MM/YYYY
//				- Retorna False se a data inicio for maior
//				  que a data fim.
//Data de criação: 15/07/2003
//Autor: André Cinicola (NetPartners)
//************************************************
function mfcnCompararDatas(pDataInicial, pDataFinal)
{
	var dia	= pDataInicial.substring(0,2)
	var mes	= pDataInicial.substring(3,5) - 1 // Para javascript, mes ZERO é Janeiro
	var ano	= pDataInicial.substring(6,10)

	objDataInicio = new Date(ano,mes,dia)
	
	dia	= pDataFinal.substring(0,2)
	mes	= pDataFinal.substring(3,5) - 1 // Para javascript, mes ZERO é Janeiro
	ano	= pDataFinal.substring(6,10)
	
	objDataFim = new Date(ano,mes,dia)
	
	if (objDataInicio > objDataFim)
	{
		return false;
	}
	else
	{
		return true;
	}
}
//************************************************
//Descrição:	Retorna o número de caracteres 
//				desejado a partir da direita
//Data de criação: 22/07/2003
//Autor: Gustavo Rodrigues (NetPartners)
//************************************************
function right(str,tam)
{
	return str.substr(str.length - tam, tam);
}
//************************************************
//Descrição:	Retorna o número de caracteres 
//				desejado a partir da esquerda
//Data de criação: 22/07/2003
//Autor: Gustavo Rodrigues (NetPartners)
//************************************************
function left(str,tam)
{
	return str.substr(0, tam);
}

//************************************************
//Descrição:	Alterna entre 2 imagens ao clicar.
//				Passar o ID da imagem e o caminho
//				das duas imagens que ficarao alternando.
//Data de criação: 29/07/2003
//Autor: André Cinicola (NetPartners)
//************************************************
function mfcnTrocarSrcImagem(imgId,imgSrc,imgSrc2)
{
	if (document.getElementById(imgId).src.search("img/" + imgSrc) > -1)
	{
		document.getElementById(imgId).src = "img/" + imgSrc2
	}
	else
	{
		document.getElementById(imgId).src = "img/" + imgSrc
	}
}

//************************************************
//Descrição:	Habilita todos os itens do formulario.
//Data de criação: 31/07/2003
//Autor: André Cinicola (NetPartners)
//************************************************
function mfcnHabilitarTodos()
{
	for(i=0;i<frm.elements.length;i++)
	{
		frm.elements(i).disabled = false;
	}
}



/*
*****************************************************************************
Descrição:	Desfaz a seleção do primeiro item do listbox, caso mais de um item 
			seja selecionado. (primera opção = TODOS OU SELECIONE)
Data de criação: 06/02/03
Autor: André Cinicola (NetPartners)
*************************************************************************
*/
function mfcnValidarMultiplaSelecao(pObjeto)
{
	var lIntConta = 0
	for (var i = 0; i < pObjeto.length; i++)
	{
		if (pObjeto[i].selected == true)
		{
			lIntConta++
		}
	}
	if (lIntConta > 1)
	{
		pObjeto[0].selected = false
	}
}

//************************************************
//Descrição:	Verifica se a hora inicial não
//				é maior que a final.
//				- Passar horas no formato HH:MM
//				- Retorna False se a hora inicio for maior
//				  que a hora fim.
//Data de criação: 12/04/2005
//Autor: Renata Kawana (NetPartners)
//************************************************
function mfcnCompararHoras(pHrIni, pHrFim)
{
	var horaIni = pHrIni.substring(0,2);
	var minutoIni = pHrIni.substring(3,5);
	var horaFim = pHrFim.substring(0,2);
	var minutoFim = pHrFim.substring(3,5);
	
	hrInicio = horaIni + minutoIni;
	hrFim = horaFim + minutoFim;

	if ( hrInicio > hrFim )
	{
		return false;		
	}
	else
	{
		return true;
	}
}

