//=============================================================================
// Descrição:	Bibliotecas javascript para o sítio.
// Criação: 	Rodrigo Azevedo - 02/07/2009
//=============================================================================

//# Área: variáveis globais

var sysUrlInterface = '/' //retorna a url da pasta com as páginas de interface do sítio.
var sysUrlAdm = '/adm/' //retorna a url da pasta com as páginas da área administrativa do sítio.
var sysUrlUtil = '/util/' //retorna a url da pasta util do sítio.

//# Área: funções

//=============================================================================
// Descrição: 	Vincula a execução do código ao fim do carregamento da página, utilizando JQuery.
//				Permite a criação de uma função no script da página para responder a esse evento.
// Criação: 	Rodrigo Azevedo - 02/07/2009
$(document).ready(function(){
	$('#sysMensagem :button').click(function() { $('#sysMensagem').slideUp('normal'); }); //configurar fechamento do quadro de mensagem, no pressionamento do botão.
	try { paginaIniciar(); } catch(e){} //chamar inicialização da página que está sendo executada, se houver.
	
	$('.sysData').mask("99/99/9999", {completed: function(){ alert('!'); }}); //configurar as caixas de texto, conforme o tipo.
	$('.sysData').datePicker({startDate:'01/01/2009'});
	$('.dp-choose-date').html('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;').attr('title', 'Escolher data');
	$('.sysHorario').mask("99h99");

	//definir para todas as caixas de texto a chamada à função padrão do formulário
	$(':text,:password').keypress( 
		function(e)
		{
			if (e.which == 13) { eval($(this).parents('form').attr('name') + 'Executar();'); return false;}
		});
});
//=============================================================================
// Descrição: 	Captura o elemento a partir do seu id.
// Criação: 	Rodrigo Azevedo - 02/07/2009
// Parâmetros:	id - identificação do documento a ser recuperado.
// Retorno:		Objeto ou coleção de objetos com o id especificado.
function $$(id)
{
	return document.getElementById(id);
}
//=============================================================================
// Descrição: 	Abre a janela do gerenciador de arquivo do FCKEditor.
// Criação: 	Rodrigo Azevedo - 15/08/2009
// Parâmetros:	modoImagem - identificação se o gerenciador será aberto no modo imagem.
// Retorno:		Objeto ou coleção de objetos com o id especificado.
function sysAbrirGerenciadorArquivo(modoImagem)
{
	var url = sysUrlUtil +'fckeditor/editor/filemanager/browser/default/browser.html?' + (modoImagem ? 'type=Image&' : '') + 'Connector='+ encodeURIComponent(sysUrlUtil) +'fckeditor%2Feditor%2Ffilemanager%2Fconnectors%2Fasp%2Fconnector.asp';
	sysAbrirJanela(url, 'gerenciadorArquivo', 800, 600);
}
//=============================================================================
// Descrição: 	Função para abrir uma nova janela no centro da tela.
// Criação: 	Rodrigo Azevedo - 04/07/2009
// Parâmetros:	- url: Caminho virtual a ser carregado na nova janela.
//				- identificacao: Identificação da nova janela.
//				- largura: Largura da nova janela.
//				- altura: Altura da nova janela.
// Retorno:		Referência para a janela aberta.
function sysAbrirJanela(url, identificacao, largura, altura)
{
	var x = (screen.width - largura) / 2;
	var y = (screen.height - altura) / 2;
	var propriedade = (largura == 0 && altura == 0) ? '' : 'height=' + altura + ',width=' + largura + ',top=' + y + ',left=' + x + ',scrollbars=1,resizable';
	var win = window.open(url, identificacao, propriedade);
	if (parseInt(navigator.appVersion) >= 4) win.window.focus();
	return win;
}
//=============================================================================
// Descrição: 	Configurar uma caixa de texto para especificação de data.
// Criação: 	Rodrigo Azevedo - 09/08/2009
// Parâmetros:	- id: identificação da caixa a ser configurada.
function sysConfigurarCaixaData(id)
{
	$('#'+ id).datePicker({startDate:'01/01/2009'});
	$('#'+ id).mask("99/99/9999");
}
//=============================================================================
// Descrição: 	Configurar uma caixa de texto para especificação de hora.
// Criação: 	Rodrigo Azevedo - 09/08/2009
// Parâmetros:	- id: identificação da caixa a ser configurada.
function sysConfigurarCaixaHora(id)
{
	$('#'+ id).mask("99h99");
}
//=============================================================================
// Descrição: 	Exibir a mensagem na barra de mensagens.
// Criação: 	Rodrigo Azevedo - 12/07/2009
// Parâmetros:	- mensagem: mensagem a ser exibida.
function sysExibirAviso(mensagem)
{
	if ($('#sysMensagem span').length == 0)
		alert(mensagem);
	else
	{
		$('#sysMensagem span').html(mensagem);
		$('#sysMensagem').slideDown("normal");
	}
}
//=============================================================================
// Descrição: 	Exibir a mensagem na parte superior da tela, após navegar para o endereço especificado.
// Criação: 	Rodrigo Azevedo - 12/07/2009
// Parâmetros:	- mensagem: mensagem a ser exibida.
//				- url: endereço para onde o usuário será redirecionado.
function sysExibirMensagem(mensagem, url)
{
	var html = '<form id=\"sysFrmMensagem\" action=\"'+ url +'\" method=\"post\">'+
		'<input type=\"hidden\" name=\"sysMensagem\" /></form>';
	$(html).appendTo('body');
	$('#sysFrmMensagem input').val(mensagem);
	$('#sysFrmMensagem').submit();
}
//=============================================================================
// Descrição: 	Validar um campo a partir da condição especificada.
// Criação: 	Rodrigo Azevedo - 15/08/2009
// Parâmetros:	- condicao: condição que define se o validação falhou ou não.
//				- campo: objeto JQuery que representa o campo.
//				- mensagem: mensagem a ser exibida em caso de falha na validação.
// Retorno:		boleano.
function sysValidarCampo(condicao, campo, mensagem)
{
	if (condicao)
	{
		sysExibirAviso(mensagem);
		campo.focus();
		return false;
	}
	return true;
}
//=============================================================================
// Descrição: 	Validar um campo para especificação de data.
// Criação: 	Rodrigo Azevedo - 15/08/2009
// Parâmetros:	- campo: objeto JQuery que representa o campo.
// Retorno:		boleano.
function sysValidarCampoData(campo)
{
	return sysValidarCampo(!sysVerificarData(campo.val()), campo, 'Favor informar uma data válida!');
}
//=============================================================================
// Descrição: 	Validar um campo para especificação de e-mail.
// Criação: 	Rodrigo Azevedo - 16/08/2009
// Parâmetros:	- campo: objeto JQuery que representa o campo.
// Retorno:		boleano.
function sysValidarCampoEmail(campo)
{
	return sysValidarCampo(!sysVerificarEmail(campo.val()), campo, 'Favor informar um e-mail válido!');
}
//=============================================================================
// Descrição: 	Validar um campo para especificação de hora.
// Criação: 	Rodrigo Azevedo - 15/08/2009
// Parâmetros:	- campo: objeto JQuery que representa o campo.
// Retorno:		boleano.
function sysValidarCampoHora(campo)
{
	return sysValidarCampo(!sysVerificarHora(campo.val()), campo, 'Favor informar um horário válido!');
}
//=============================================================================
// Descrição: 	Validar um campo que não pode contar um valor vazio.
// Criação: 	Rodrigo Azevedo - 15/08/2009
// Parâmetros:	- campo: objeto JQuery que representa o campo.
//				- mensagem: mensagem a ser exibida em caso de falha na validação.
// Retorno:		boleano.
function sysValidarCampoVazio(campo, mensagem)
{
	return sysValidarCampo(campo.val() == '', campo, mensagem);
}
//=============================================================================
// Descrição: 	Validar se o formato da string especificada é uma data válida (DD/MM/AAAA).
// Criação: 	Rodrigo Azevedo - 15/08/2009
// Parâmetros:	- data: string cujo formato será verificado.
// Retorno:		Boleano.
function sysVerificarData(data)
{
	var d = data.split('/');
	if (d.length != 3) return false;
	
	var dia = d[0] * 1, mes = d[1] * 1 - 1, ano = d[2] * 1, date = new Date();
	date.setFullYear(ano, mes, dia);
	return (date.getDate() == dia && date.getMonth() == mes && date.getFullYear() == ano);
}
//=============================================================================
// Descrição: 	Validar se o formato da string especificada é compatível com o de um email.
// Criação: 	Rodrigo Azevedo - 04/07/2009
// Parâmetros:	- email: string cujo formato será verificado.
// Retorno:		Boleano.
function sysVerificarEmail(email)
{
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   return reg.test(email)
}
//=============================================================================
// Descrição: 	Validar se o formato da string especificada é um horário válido (HHhMM).
// Criação: 	Rodrigo Azevedo - 15/08/2009
// Parâmetros:	- horario: string cujo formato será verificado.
// Retorno:		Boleano.
function sysVerificarHora(horario)
{
	var h = horario.split('h');
	if (h.length != 2) return false;
	
	var hora = h[0] * 1, minuto = h[1] * 1;
	return (hora >= 0 && hora < 24 && minuto >= 0 && minuto < 60);
}
//=============================================================================
// Descrição: 	Retornar se o navegador é o Internet Explorer.
// Criação: 	Rodrigo Azevedo - 04/07/2009
// Retorno:		Boleano indicando se o navegador é o Internet Explorer.
function sysVerificarIE()
{
    return navigator.appVersion.indexOf('MSIE') != -1;
}