$(function() {
	$('#div_bg_aguarde').fadeTo('fast',0.7);
	$.fn.colorbox.settings.bgOpacity = "0.7";

	// hover dos botões e menus
	$('a.ui-state-default').livequery('mouseover', function(){$(this).addClass('ui-state-hover');});
	$('a.ui-state-default').livequery('mouseout', function(){$(this).removeClass('ui-state-hover');});	
	
	// hover os botões de imagem
	$("img[src='img/filtro.png']").livequery('mouseover', function(){
		$("img[src='img/filtro-h.png']").attr('src','img/filtro.png'); // reset
		$(this).attr('src','img/filtro-h.png');
	});
	$("img[src='img/filtro-h.png']").livequery('mouseout', function(){$(this).attr('src','img/filtro.png');});	
	$("img[src='img/play.png']").livequery('mouseover', function(){
		$("img[src='img/play-h.png']").attr('src','img/play.png'); // reset
		$(this).attr('src','img/play-h.png');
	});
	$("img[src='img/play-h.png']").livequery('mouseout', function(){$(this).attr('src','img/play.png');});
	
	
	Menu(); // carrega o menu

	/** Login
	**********************************************************************************************************************************************************/			
	$('#a_entrar').click(function(){Login();});
	$('#div_login input').livequery('blur',function(){MsgCampo($(this),false)}); // retira msg do campo
	$('#div_login input').bind('keypress',function(e){if (e.which == 13) {Login();}});
	
	/** Janelas
	**********************************************************************************************************************************************************/			
	// botões da janela	
	$("div.janela a[title='Fechar']").livequery('click',function(){
		// fade e remove o formulario(div) da tela
		var div = $(this).parent().parent();
		div.fadeOut('normal', function(){div.remove()});
		$('#span_valida_campo').hide();
	});

	$("div.janela a[title='Novo']").livequery('click',function(){
		var formulario = $(this).parent().parent().attr('id').split('_')[2];
		Novo(formulario);
	});
	
	// mover janelas
	$("div.janela[site!='S']").livequery(function(){$(this).draggable({handle:'div.titulo'});});
	
	// coloca a janela a frente das outras
	$('div.janela').livequery('mouseover',function(){
		if ($(this).css('z-index') == 1) { // está atrás
			var id = $(this).attr('id').split('_')[2];
			ZindexJanela(id);
		}
	});
	
	// instrução ao passar o mouse no icone
	$('img.instrucao').livequery(function(){$(this).fadeTo('fast',0.5);}); // fade em todos
	$('img.instrucao').livequery('mouseover',function(){InstrucaoIco($(this),true)});
	$('img.instrucao').livequery('mouseout',function(){InstrucaoIco($(this),false)});
	
	// instruções ao entrar no campo	
	$('div.conteudo input').livequery('focus',function(){Instrucao($(this),true)});
	$('div.conteudo input').livequery('blur',function(){Instrucao($(this),false)});
	$('div.conteudo select').livequery('focus',function(){Instrucao($(this),true)});
	$('div.conteudo select').livequery('blur',function(){Instrucao($(this),false)});
	$('div.conteudo textarea').livequery('focus',function(){Instrucao($(this),true)});
	$('div.conteudo textarea').livequery('blur',function(){Instrucao($(this),false)});
	$('div.conteudo file').livequery('focus',function(){Instrucao($(this),true)});
	$('div.conteudo file').livequery('blur',function(){Instrucao($(this),false)});	
	
	// mensagens do formulario
	$('.msg-form').livequery('mouseout',function(){
		var formulario = $(this).attr('id').split('_')[2];
		MsgForm(false, formulario);
	});	
	
	/** Menus e Submenus
	**********************************************************************************************************************************************************/		
	$('.submenu > li').livequery('mouseover', function(){$(this).addClass('ui-state-hover');});
	$('.submenu > li').livequery('mouseout', function(){$(this).removeClass('ui-state-hover');});	
	$('.submenu > li').livequery('click', function(){$(this).parent().hide();});	
	
	// abrir os submenus
	$('#div_menu_topo > a').livequery('mouseover',function(){
		$('.submenu').hide();
		var id = $(this).attr('id').split('_')[2]; // id (num) do menu
		var submenu = $('#ul_submenu_'+id);
		// posiciona o submenu abaixo do botão
		submenu.css('top', $(this).position().top+26);
		submenu.css('left', $(this).position().left);		
		submenu.show();
	});	
	
	$('.submenu').bind('mouseover',function(){$(this).show();});
	
	// ocultar submenus
	$('#div_conteudo').bind('mouseout',function(){$('.submenu').hide();});
	
	/** Máscaras
	**********************************************************************************************************************************************************/	
	$.mask.options.autoTab = false; // não mudar de campo ao término (erro)
	$('.cpf').livequery(function(){$(this).setMask('999.999.999-99')});
	$('.cnpj').livequery(function(){$(this).setMask('99.999.999/9999-99')});
	$('.fone').livequery(function(){$(this).setMask('(99) 9999-9999')});
	$('.data').livequery(function(){$(this).setMask('39/19/9999'); $(this).datepicker({dateFormat:'dd/mm/yy', dayNames:['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'], dayNamesMin: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'], monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'] });});	
	$('.hora').livequery(function(){$(this).setMask('29:69'); $(this).timepickr(); });
	$('.cep').livequery(function(){$(this).setMask('99.999-999')});
	$('.numero').livequery(function(){$(this).setMask({mask:'999999999999999', type:'reverse'});});
	$('.valor').livequery(function(){$(this).setMask({mask:'99,999.999.999.999', type:'reverse'});});
	$('.percent').livequery(function(){$(this).setMask({mask:'99,999', type:'reverse', defaultValue:'000'});});

	/** Editor de texto
	**********************************************************************************************************************************************************/	
	$('.editor').livequery(function(){
		var oFCKeditor = new FCKeditor($(this).attr('id'));
		oFCKeditor.BasePath	= 'fckeditor/';
		oFCKeditor.Config["CustomConfigurationsPath"] = "fckeditor/"
		oFCKeditor.ReplaceTextarea() ;
	});	

	/** Pesquisa - Colorbox 
	**********************************************************************************************************************************************************/		
	// menus	
	$('#ul_submenu_pesquisa li').livequery(function(){
		var id = $(this).attr('id').split('_')[2]; // formulario
		// abre o formulario de pesquisa e carrega os itens do campo (caso necessário)
		$(this).colorbox({href:'pesquisa.php?formulario='+id, title:'PESQUISA', fixedWidth:'90%', fixedHeight:'90%'}, function(){ComboItensPesquisa();});
	});
	
	// botões nos formularios
	$('a.pesquisa').livequery(function(){
		$(this).colorbox({title:'PESQUISA', fixedWidth:'90%', fixedHeight:'90%'});
	});
	
	// botão fechar
	$("#div_pesquisa a[title='Fechar']").livequery('click', function(){$.fn.colorbox.close();});	
		
	// ordernar tabela da consulta
	$("table.pesquisa").livequery(function(){$(this).tablesorter();});
	
	// linhas
	$('table.pesquisa tr.lin').livequery('mouseover', function(){$(this).children('td').addClass('ui-state-hover');});
	$('table.pesquisa tr.lin').livequery('mouseout', function(){$(this).children('td').removeClass('ui-state-hover');});
	$('table.pesquisa tr.lin').livequery('click', function(){
		var resposta = $(this).attr('id').split('_')[2]; // resposta		
		Editar($('#hdn_formulario_pesquisa').val(), resposta);
	});
		
	// campo pesquisa
	$('#sel_campo_pesquisa').livequery('change', function(){ComboItensPesquisa();});	
	
	// checkbox 
	$('fieldset.campos #chk_todos').livequery('click', function(){
		var marca = this.checked;
		$("fieldset.campos input[id!='chk_todos']").each(function(){this.checked = marca;});
	});
	
	/** Relatórios - Colorbox 
	**********************************************************************************************************************************************************/
	// menus de relatorios default
	$('#ul_submenu_relatorio li.formulario').livequery(function(){
		var id = $(this).attr('id').split('_')[2]; // formulario
		$(this).colorbox({href:'relatorio.php?formulario='+id, title:'RELATÓRIO', fixedWidth:'100%', fixedHeight:'100%'});
	});

	// menus de relatorios personalisados
	$('#ul_submenu_relatorio li.relatorio').livequery(function(){
		var id = $(this).attr('id').split('_')[2]; // relatorio
		$(this).colorbox({href:'relatorio.php?relatorio='+id, title:'RELATÓRIO', fixedWidth:'100%', fixedHeight:'100%'});
	});		
	
	// ordernar tabela da consulta
	$("table.relatorio").livequery(function(){$(this).tablesorter();});
	
	// linhas
	$('table.relatorio tr.lin').livequery('mouseover', function(){$(this).children('td').css('background-color','#EFEFEF');});
	$('table.relatorio tr.lin').livequery('mouseout', function(){$(this).children('td').css('background-color','#FFFFFF');});

	// botões nos formularios
	$('a.relatorio').livequery(function(){
		$(this).colorbox({title:'RELATÓRIO', fixedWidth:'100%', fixedHeight:'100%'});
	});
	
	// botões
	$("#div_relatorio a[title='Fechar']").livequery('click', function(){$.fn.colorbox.close();});
	$("#div_relatorio a[title='Imprimir']").livequery('click', function(){window.print();});
	$("#div_relatorio a[title='Ocultar filtros']").livequery('click', function(){
		$('#div_filtros_relatorio').slideUp();
		$(this).attr('title','Exibir filtros');
		$(this).children('span').attr('class','ui-icon ui-icon-arrowthickstop-1-s'); // altera icone do botão
	});
	$("#div_relatorio a[title='Exibir filtros']").livequery('click', function(){
		$('#div_filtros_relatorio').slideDown();
		$(this).attr('title','Ocultar filtros');
		$(this).children('span').attr('class','ui-icon ui-icon-arrowthickstop-1-n'); // altera icone do botão
	});
	
	/** Relatórios - Filtros
	**********************************************************************************************************************************************************/	
	$('#div_filtro').livequery(function(){$(this).draggable({handle:'h1'});});
	$('#img_fecha_filtro').livequery('click', function(){$('#div_filtro').hide();});
	$('#img_limpa_filtro').livequery('click', function(){$('#form_filtro').each(function(){this.reset();});});	
	$("#div_filtros_relatorio img.filtro").livequery('click', function(){		
		var top = ($(this).position().top + 10);
		var left = ($(this).position().left - 20);
		var div = $('#div_filtro');
		var campo = $(this).attr('campo');
		div.css('top', top); // ajusta div ao topo
		div.css('left', left); // ajusta div a esquerda
		if (campo == '') {
			$('#div_filtro p').show(); // exibe todos
		} else {
			$('#div_filtro p').hide(); // oculta todos
			$('#p_filtro_'+campo).show(); // exibe o clicado
		}		
		div.show();
	});
	
	
});

function debug(r) {
	$('#debug').show();
	$('#debug').html(r);
}

function Menu() {
	$('#div_menu_topo').load('menu.php');
	$('#div_logado').load('usuario_info.php');
}

// verifica se o obj existe
function Existe(obj) {
	var r = false;
	if ($(obj).length > 0) {r = true;}
	return r;
}

// verifica se o valor é diferente de branco
function Vazio(v) {
	var r = true;
	//if (($.trim(v) != '') && (v != undefined)) {r = false;}
	if ((v != '') && (v != undefined)) {r = false;}
	return r;
}

/*********************************************************************************************************************************************************
--| Mensagens
**********************************************************************************************************************************************************/
function Background(sim) {
	var div = $('#div_bg_aguarde'); // background opaco do aguarde		
	div.height($(document).height()); // ajusta o background ao tamanho da tela
	if (sim) {
		div.show();
	} else {
		div.hide();
	}
}

function Aguarde(sim) {
	var div1 = $('#div_aguarde');	
	div1.css('top', ($(document).height()/2) - (div1.height()/2)); // centraliza vertical
	div1.css('left', ($(window).width()/2) - (div1.width()/2)); // centraliza horizontal
	// exibe / oculta
	if (sim) {
		Background(true);
		div1.show();
	} else {
		div1.hide();
		Background(false)
	}
}

function Alerta(titulo, mensagem, icone, obj_focus) {
	var div = $("#div_alerta");
	div.attr('title', titulo);
	if (icone != '' && icone != undefined) {mensagem = "<img src='img/msg-"+icone+".png'>" + mensagem}
	div.html(mensagem);	
	Background(true);
	div.dialog({
		title: titulo,
		AutoOpen: false,
		bgiframe: false,
		modal: false, /*modal erro no ie8*/
		resizable: false,
		buttons: {
			OK: function() {
				$(this).dialog('destroy');
				if (obj_focus != '' && obj_focus != undefined) {
					obj_focus.focus();					
				}
				Background(false);
			}
		},
		close: function() {
			Background(false);
		}
	});
	div.dialog('open');	
}

function Confirma(titulo, mensagem, funcao_sim, funcao_nao) {
	var div = $("#div_confirma");
	div.html("<img src='img/msg-confirma.png'>" + mensagem);	
	Background(true);
	div.dialog({
		title: titulo,
		bgiframe: true,		
		modal: false, /*modal erro no ie8*/
		resizable: false,
		buttons: {
			Não: function() {
				eval(funcao_nao);
				$(this).dialog('destroy');
				Background(false);
			},
			Sim: function() {		
				eval(funcao_sim);
				$(this).dialog('destroy');
				Background(false);
			}			
		},
		close: function() {
			Background(false);
		}		
	});
	div.dialog('open');
}

/*********************************************************************************************************************************************************
--| Login
**********************************************************************************************************************************************************/
function Login() {
	var params;
	var login = $('#txt_login');
	var senha = $('#txt_senha');
	
	if ($.trim(login.val()) == '') {
		MsgCampo(login, true, 'Informe o seu login');
		return;
	}
	if ($.trim(senha.val()) == '') {
		MsgCampo(senha, true, 'Informe a sua senha');
		return;
	}
	params = 'login=' + login.val();
	params += '&senha=' + senha.val();
	params += '&sistema=' + $('#hdn_sistema').val();
	
	Aguarde(true);		
	$.post('login.php', params, function(r){
		Aguarde(false);	
		switch (r) {
			case 'erro_login':
				Alerta('Controle de Acesso', '<b>ACESSO NEGADO!</b><p>Login inexistente, verifique se digitou corretamente.</p>', 'alerta', login);
				break;
			case 'erro_senha':
				Alerta('Controle de Acesso', '<b>ACESSO NEGADO!</b><p>Senha incorreta, verifique se digitou corretamente.</p>', 'alerta', senha);
				break;
			case 'nao_pago':
				Alerta('Controle de Acesso', '<b>PAGAMENTO PENDENTE!</b><p>Em nosso sistema ainda não consta o pagamento referente ao plano que você assinou.</p><p>Caso já tenha sido efetuado, sua conta será liberada automaticamente assim que o <b>PagSeguro</b> nos confirmar o pagamento.</p><p>Caso ainda não tenha realizado o pagamento, entre com o seu login e senha na <a href="http://www.formti.com">página inicial do Form TI</a>, que será redirecionado para página de pagamento.</p>', 'alerta');
				break;					
			case 'OK':
				login.val('');
				senha.val('');
				$('#div_login').hide();
				Menu(true);
				break;				
			default:
				alert("ERRO - Login!");
				break;
		}		
	});	
}

function Logoff() {
	Aguarde(true);
	$.post('logoff.php', function(r){
		Menu();
		$('#div_conteudo').html('');
		$('#div_login').show();
		Aguarde(false);
	});	
}

/*********************************************************************************************************************************************************
--| Janelas
**********************************************************************************************************************************************************/	
function Janela(id, resposta, top, left, site) {
	var janela = $('#div_janela_'+id);
	var params = "opcao=exibir";
	params += "&formulario=" + id;
	params += "&resposta=";
	if (!Vazio(resposta)) {params += resposta;}
	params += "&site=";
	if (!Vazio(site)) {params += site;}	
	
	// remove janela, se aberta, para abrir edição
	if ((janela.length > 0) && (!Vazio(resposta))) {
		janela.remove();
		janela = '';
	}
	
	if (janela.length > 0) { // janela já existe na tela
		ZindexJanela(id);
	} else {
		// carrega nova janela
		Aguarde(true);
		$.post('formulario.php', params, function(r){
			Aguarde(false);
			switch (r) {			
				case "erro-form":
					alert('ERRO - Formulário não localizado!');
					break;
				default:					
					// posiciona left
					$('#div_conteudo').append(r); // insere form na tela								
					ZindexJanela(id);
					
					// posiciona a janela na mesma posição da anterior
					if (!Vazio(top)) {$('#div_janela_'+id).css('top', top)};
					if (!Vazio(left)) {$('#div_janela_'+id).css('left', left)};
					break;
			}
		});
	}
}


// coloca janelas na frente e atrás
function ZindexJanela(id) {
	var janela = $('#div_janela_'+id);
	var outras = $('div.janela[id!=div_janela_'+id+']');
	outras.css('z-index',1); // todas as janelas para tras
	outras.fadeTo('fast',0.3);	// fade em todas as janelas	(menos a aberta)
	janela.show();
	janela.css('z-index',2); // janela para frente
	janela.fadeTo('fast',1); // já existe na tela
}

function MsgCampo(obj, exibe, mensagem) {
	var id = obj.attr('id');
	var span = $('#span_valida_campo');
	span.html("<img src='img/msg-alerta.png'>" + mensagem);
	// posiciona acima do campo e do lado esquerdo do formulario
	span.css('top', obj.offset().top - obj.height()-11);	
	span.css('left', obj.parent().offset().left + (obj.parent().width()-span.width()-4));
	// exibe
	if (exibe) {
		span.show();
		obj.effect('highlight');
		obj.focus();
	} else {
		span.hide();
	}	
}

function MsgForm(sim, formulario, mensagem, icone) {
	var div = $("#div_msgform_"+formulario);	
	if (sim) {
		var html = "<p>";
		if (icone != '' && icone != undefined) {html += "<img src='img/msg-"+icone+".png'>"}
		html += mensagem + "</p>";
		div.html(html);
		div.show('bounce','fast');
		window.scrollBy(0,9999); // rola a tela horiz/vert em px
	} else {
		div.hide('explode');
	}
}

// instrução ao entrar no campo
function Instrucao(obj, exibe) {
	var id = obj.attr('id');
	var div = $('#div_instrucao_'+id);
	// posiciona mensagem ao lado do campo	
	div.css('top', obj.position().top);
	div.css('left', obj.position().left + obj.width()+7);
	if (exibe) {	
		div.fadeIn();
	} else {
		div.fadeOut();
		$('#span_valida_campo').hide();
	}
}

// instrução ao passar o mouse no icone
function InstrucaoIco(obj, exibe) {
	var id = obj.attr('campo');
	var div = $('#div_instrucao_'+id);
	// posiciona mensagem ao lado do campo	
	div.css('top', obj.position().top + 20);
	div.css('left', obj.position().left - 5);
	if (exibe) {
		obj.fadeTo('fast',1);
		div.fadeIn();
	} else {
		obj.fadeTo('fast',0.5);
		div.fadeOut();
		$('#span_valida_campo').hide();
	}
}

/*********************************************************************************************************************************************************
--| Formulários
**********************************************************************************************************************************************************/
// carrega a resposta para edição
function Editar(formulario, resposta) {
	var div = $('#div_janela_'+formulario); // janela
	var top = div.offset().top; // posicao top
	var left = div.offset().left; // posicao left	
	$.fn.colorbox.close();
	Janela(formulario, resposta, top, left); // abre nova janela na mesma posição da anterior
}

function Novo(formulario) {
	var div = $('#div_janela_'+formulario); // janela
	var top = div.offset().top; // posicao top
	var left = div.offset().left; // posicao left
	div.remove(); // remove da tela
	Janela(formulario, '', top, left); // abre nova janela na mesma posição da anterior
}

function Alterar(formulario) {
	//Confirma('Alteração', 'Confirma a alteração dos dados?', "Formulario("+formulario+", 'alterar')", '');
	Formulario(formulario, 'alterar');
}

function Excluir(formulario) {
	Confirma('Exclusão', 'Confirma a exclusão dos dados?', "Formulario("+formulario+", 'excluir')", '');
}

// carrega o campo ajax
function CampoAjax(campo_id, valor_id, resposta_id) {	
	var obj = $('#'+campo_id);
	var params = "opcao=campo_ajax";
	params += "&campo=" + campo_id;
	params += "&valor=" + valor_id;
	params += "&resposta=" + resposta_id;		
	obj.replaceWith("<span id='"+campo_id+"'><img src='img/aguarde2.gif'></span>"); // substitui o <select> por um aguarde
	$.post('formulario_trata.php', params, function(r){		
		obj = $('#'+campo_id);
		obj.replaceWith(r); // substitui o aguarde pelo <select> carregado
	});
}

// insere uma nova resposta no formulário
function Formulario(formulario, opcao) {
	var tipo, obrigatorio, campo, valor, radio, checks, marcou;
	var params = "opcao=" + opcao;
	var ps = $('#div_janela_'+formulario+' .p-campos');
	var valido = true;
	params += "&formulario=" + formulario;
	params += "&resposta=" + $('#hdn_resposta_'+formulario).val();

	// percorre os campos do formulário (exceto exclusão)
	if (opcao != 'excluir') {
		ps.each(function(){
			valor = '';
			tipo = $(this).children("input[name='tipo']").val();
			obrigatorio = $(this).children("input[name='obrigatorio']").val();
			campo = $(this).children("*[name='campo']");
			switch (parseInt(tipo)) {
				case 2: // cpf
					if ((obrigatorio == 1) || ($.trim(campo.val()) != '')) {
						if (!ValidaCPF(campo.val())) {
							MsgCampo(campo, true, 'CPF inválido!');
							valido = false;
							return false;				
						}
					}
					break
				case 3: // cnpj
					if ((obrigatorio == 1) || ($.trim(campo.val()) != '')) {
						if (!ValidaCNPJ(campo.val())) {
							MsgCampo(campo, true, 'CNPJ inválido!');
							valido = false;
							return false;				
						}
					}
					break;
				case 5: // data
					if ((obrigatorio == 1) || ($.trim(campo.val()) != '')) {
						if (!ValidaData(campo.val())) {
							MsgCampo(campo, true, 'Data inválida! Formato correto dd/mm/aaaa');
							valido = false;
							return false;				
						}
					}
					break;
				case 6: // hora
					if ((obrigatorio == 1) || ($.trim(campo.val()) != '')) {
						if (!ValidaHora(campo.val())) {
							MsgCampo(campo, true, 'Hora inválida! Formato correto hh/mm');
							valido = false;
							return false;				
						}
					}
					break;				
				case 8: // cep
					if ((obrigatorio == 1) || ($.trim(campo.val()) != '')) {
						if (!ValidaCep(campo.val())) {
							MsgCampo(campo, true, 'CEP inválido!');
							valido = false;
							return false;				
						}
					}
					break;
				case 9: // email
					if ((obrigatorio == 1) || ($.trim(campo.val()) != '')) {
						if (!ValidaEmail(campo.val())) {
							MsgCampo(campo, true, 'Email inválido!');
							valido = false;
							return false;				
						}
					}
					break;
				case 13: // valor
				case 14: // percentual
					if ($.trim(campo.val()) != '') {
						valor = campo.val().replace(/\./g,'').replace(/\,/g,'.');
					}
					break;
				case 17: // radio
					marcou = false;
					radio = $("#div_janela_"+formulario+" input[name='campo_"+campo.attr('id')+"']:checked");				
					radio1 = $("#div_janela_"+formulario+" input[name='campo_"+campo.attr('id')+"']:first");
					if ((obrigatorio == 1) && (radio.length == 0)) {
						MsgCampo(radio1, true, 'Marque uma das opções.');
						valido = false;
						return false;
					}
					if (radio.length == 1) {
						valor = radio.val();
					}
					break;
				case 18: // checkbox
					marcou = false;
					checks = $("#div_janela_"+formulario+" input[name='campo_"+campo.attr('id')+"']:checked");
					checks1 = $("#div_janela_"+formulario+" input[name='campo_"+campo.attr('id')+"']:first");
					if ((obrigatorio == 1) && (checks.length == 0)) {
						MsgCampo(checks1, true, 'Marque pelo menos uma das opções.');
						valido = false;
						return false;
					}
					checks.each(function(){					
						params += "&campo[]=" + campo.attr('id');
						params += "&tipo[]=" + tipo;
						params += "&valor[]=" + $(this).val();
					});
					break;				
				default: // demais campos			
					if (obrigatorio == 1) { // campo obrigatório
						if ($.trim(campo.val()) == '') {
							MsgCampo(campo, true, 'É obrigatório o preenchimento deste campo.');
							valido = false;
							return false;
						}
					}
					break;
			}
			// valor default
			if (valor == '') {
				valor = escape(campo.val());
			}
			
			// ID do Campo e o seu respectivo Tipo		
			if (tipo != 18) { // exceto checkbox (informado acima)
				params += "&campo[]=" + campo.attr('id');
				params += "&tipo[]=" + tipo;
				params += "&valor[]=" + valor;
			}
		});
	}
//alert(params);
	if (valido) {	
		Aguarde(true);		
		$.post('formulario_trata.php', params, function(r){
			var vet = r.split('|');
			Aguarde(false);	
			switch (vet[0]) {
				case 'limite':
					Alerta('Cadastros Esgotados!', 'Seu plano não permite efetuar mais cadastros este mês.<br><br>Para realizar novos cadastros será necessário excluir registros já existentes ou assinar um plano maior.', 'erro');
					break;
				case 'unico':
					campo = $("#p_campo_"+vet[1]+" input[name='campo']"); // campo duplicado
					MsgCampo(campo, true, 'Informação já cadastrada! Este campo não permite valores duplicados.');
					break;					
				case 'inserir':
					$('#form_'+formulario).each(function(){this.reset();}); // limpa form
					MsgForm(true, formulario, 'Dados cadastrados com sucesso!', 'sucesso');
					break;					
				case 'alterar':
					MsgForm(true, formulario, 'Dados alterados com sucesso!', 'sucesso');					
					break;
				case 'excluir':
					Novo(formulario);
					Alerta('Exclusão', 'Dados excluídos com sucesso!', 'sucesso');
					break;					
				default:
					//alert("ERRO AO RESPONDER! Contate o suporte do sistema!");
					break;
			}		
		});	
	}
}

/*********************************************************************************************************************************************************
--| Pesquisas
**********************************************************************************************************************************************************/	
function Pesquisar() {	
	var checks = $("fieldset.campos input.chk-campo:checked");
	var campo_busca = $('#sel_campo_pesquisa');
	var campo_detalhe = $('#sel_detalhe_pesquisa');
	var campo_valor = $('#sel_valor_pesquisa');
	var params = "formulario=" + $('#hdn_formulario_pesquisa').val();
	params += "&campo_busca=" + campo_busca.val();
	params += "&busca=" + escape($('#txt_pesquisa').val());
	if (Existe(campo_detalhe)) {params += "&detalhe=" + campo_detalhe.val();}
	if (Existe(campo_valor)) {params += "&valor=" + campo_valor.val();}
	
	if (campo_busca.val() == '') {
		Alerta('Pesquisa', 'Selecione o campo que deseja realizar a busca.', 'alerta', campo_busca);
		return;
	}
	if (checks.length == 0) {
		Alerta('Pesquisa', 'Marque pelo menos 1 campo que deseja visualizar na pesquisa.', 'alerta');
		return;
	}	
	checks.each(function(){
		params += '&campo[]=' + $(this).val();
	});

	Aguarde(true);		
	$.post('pesquisa_lista.php', params, function(r){
		Aguarde(false);			
		$('#div_lista_pesquisa').html(r);
	});		
}

// carrega os itens da pesquisa
function ComboItensPesquisa() {
	var campo_id = $('#sel_campo_pesquisa').val();
	// itens do campo
	$('#span_detalhe_pesquisa').load('pesquisa_combo_detalhe.php?campo=' + campo_id);
	// marca respectivo checkbox
	$('#chk_pesquisa_'+campo_id).attr("checked", "checked");
}

/*********************************************************************************************************************************************************
--| Relatórios
**********************************************************************************************************************************************************/	
function Relatorio() {
	var p, busca;	
	var relatorio = $('#hdn_relatorio').val();
	var checks = $("fieldset.campos input.chk-campo:checked");	
	var params = "formulario=" + $('#hdn_formulario_relatorio').val();	
	var filtros = $('select.filtro');
	var filtros2 = $('select.filtro2');
	var pagina = 'relatorio_lista1.php';
	params += "&relatorio=" + relatorio;
	
	if (relatorio == '') { // relatório default
		if (checks.length == 0) {
			Alerta('Relatório', 'Marque pelo menos um campo que deseja visualizar no relatório.', 'alerta');
			return;
		}	
		checks.each(function(){
			params += '&campo[]=' + $(this).val();
		});
	} else { // relatório personalizado
		pagina = 'relatorio_lista2.php';
		checks = $("fieldset.campos input.chk-coluna:checked");
		if (checks.length == 0) {
			Alerta('Relatório', 'Marque pelo menos uma coluna que deseja visualizar no relatório.', 'alerta');
			return;
		}		
		checks.each(function(){
			params += '&coluna[]=' + $(this).val();
		});		
	}
	
	// usuários e datas
	if ($('#chk_data_cad').is(':checked')) {params += '&data_cad=1'}
	if ($('#chk_usuario_cad').is(':checked')) {params += '&usuario_cad=1'}
	if ($('#chk_data_alt').is(':checked')) {params += '&data_alt=1'}
	if ($('#chk_usuario_alt').is(':checked')) {params += '&usuario_alt=1'}
	// exibir valores
	if ($('#chk_exibe_valor').is(':checked')) {params += '&exibe_valor=1'}
	// totais (linha e coluna)
	if ($('#chk_total_linha').is(':checked')) {params += '&totall=1'}
	if ($('#chk_total_coluna').is(':checked')) {params += '&totalc=1'}
	// médias (normal e ponderada)
	if ($('#chk_media').is(':checked')) {params += '&media=1'}
	if ($('#chk_media_ponderada').is(':checked')) {params += '&mediap=1'}	
	
	// filtros para busca	
	filtros.each(function(){
		if ($(this).val() != '') {
			p = $(this).parent();
			//busca = $.trim(p.children('.busca').val());
			busca = $.trim($(this).next('.busca').val());
			//if (busca != '') {
				params += '&filtro[]=' + $(this).val();
				params += '&campof[]=' + $(this).attr('campo');
				params += '&eou[]=' + p.children('select.eou').val();
				params += '&busca[]=' + escape(busca)
			//}
		}
	});	
	// filtros de usuários e data de cadastro
	filtros2.each(function(){
		if ($(this).val() != '') {			
			p = $(this).parent();
			busca = $(this).next('.busca2');			
			params += '&filtro2[]=' + $(this).val();
			params += '&campof2[]=' + busca.attr('id');
			params += '&busca2[]=' + escape(busca.val());
		}
	});	
	
	//alert(params);
	
	//$('#div_filtro').hide();
	Aguarde(true);		
	$.post(pagina, params, function(r){
		Aguarde(false);			
		$('#div_lista_relatorio').html(r);
	});		
}

/*********************************************************************************************************************************************************
--| Gráficos
**********************************************************************************************************************************************************/
function Grafico() {
	var p, busca;
	var checks = $("fieldset.campos input.chk-campo:checked");	
	var params = "formulario=" + $('#hdn_formulario_relatorio').val();	
	var filtros = $('select.filtro');
	var filtros2 = $('select.filtro2');
	
	if (checks.length == 0) {
		Alerta('Gráfico', 'Marque pelo menos um campo que deseja visualizar o gráfico.', 'alerta');
		return;
	}	
	checks.each(function(){
		params += '&campo[]=' + $(this).val();
	});
		
	// filtros para busca	
	filtros.each(function(){
		if ($(this).val() != '') {
			p = $(this).parent();
			//busca = $.trim(p.children('.busca').val());
			busca = $.trim($(this).next('.busca').val());
			//if (busca != '') {
				params += '&filtro[]=' + $(this).val();
				params += '&campof[]=' + $(this).attr('campo');
				params += '&eou[]=' + p.children('select.eou').val();
				params += '&busca[]=' + escape(busca)
			//}
		}
	});	
	// filtros de usuários e data de cadastro
	filtros2.each(function(){
		if ($(this).val() != '') {			
			p = $(this).parent();
			busca = $(this).next('.busca2');			
			params += '&filtro2[]=' + $(this).val();
			params += '&campof2[]=' + busca.attr('id');
			params += '&busca2[]=' + escape(busca.val());
		}
	});	
	
	//alert(params);
	
	//$('#div_filtro').hide();
	Aguarde(true);		
	$.post('grafico.php', params, function(r){
		Aguarde(false);			
		$('#div_lista_relatorio').html(r);
	});		
}

function GraficoPizza(div, titulo, dados) {
	var data = new google.visualization.DataTable();
	data.addColumn('string', 'Descricao');
	data.addColumn('number', 'Quantidade');
	eval("data.addRows(["+dados+"])");
	var chart1 = new google.visualization.PieChart(document.getElementById(div));
	chart1.draw(data, {
		width:370, 
		height:290, 
		title:titulo,
		backgroundColor:{stroke:'#CCC',strokeWidth:1}
	});		
}

function GraficoColuna(div, titulo, dados) {
	var data = new google.visualization.DataTable();
	data.addColumn('string', 'Descricao');
	data.addColumn('number', 'Quantidade');
	eval("data.addRows(["+dados+"])");
	var chart1 = new google.visualization.ColumnChart(document.getElementById(div));
	chart1.draw(data, {
		legend:'none',
		width:370, 
		height:290, 
		title:titulo,
		backgroundColor:{stroke:'#CCC',strokeWidth:1}
	});		
}


/*********************************************************************************************************************************************************
--| CSV
**********************************************************************************************************************************************************/	
function ExportarCSV(nome, id_tabela) {
	var form = $('#frm_csv');
	var tabela = $('#'+id_tabela);
		
	if (tabela.length <= 0) {
		Alerta('Exportar Dados', 'Nenhum dado disponível para exportação. Verifique se o relatório foi gerado corretamente.', 'alerta');
		return;
	}
		
	// caso o iframe exista, limpa
	if ($('#iframe_csv').length > 0) {
		form.html('');
		$('#iframe_csv').html('');
	}

	// criando hidden com o nome
	form.append("<input type='hidden' name='nome' value='"+nome+"'>");
	
	// criando hidden com o qts de colunas
	form.append("<input type='hidden' name='cols' value='"+tabela.find('th:visible').length+"'>");
	
	// cabeçalhos da tabela
	tabela.find('tr.cab:visible th:visible').each(function(){
		// criando hidden com o texto das <td>
		form.append("<input type='hidden' name='val[]' value='"+$(this).text()+"'>");			
	});
	
	// conteúdo da tabela
	tabela.find('tr.lin:visible td:visible').each(function(){
		// criando hidden com o texto das <td>
		form.append("<input type='hidden' name='val[]' value='"+$(this).text()+"'>");			
	});
	
	// criando iframe
	var iframe = $("<iframe id='iframe_csv' name='iframe_csv' width='0' height='0' border='0' style='display:none'></iframe>");
	
	// adicionando iframe a página
	form.parent().append(iframe);
	
	// enviando formulario
	form.attr('target', 'iframe_csv');
	form.attr('action', 'csv.php');
	form.attr('method','post');		
	form.submit();
}

/*********************************************************************************************************************************************************
--| Validações
**********************************************************************************************************************************************************/	
function ValidaData(data){
	var r = true;
    var exp = /\d{2}\/\d{2}\/\d{4}/;
    if (!exp.test(data)) {
		r = false;
	}
	return r;
}

function ValidaHora(hora){
    var r = true;
	var exp = /\d{2}\:\d{2}/;
    if (!exp.test(hora)) {
        r = false;
	}
	return r;
}

function ValidaCep(cep){
    var r = true;
	var exp = /\d{2}\.\d{3}\-\d{3}/;
    if (!exp.test(cep)) {
        r = false;
	}
	return r;
}

function ValidaEmail(email){
    var r = true;
	var exp = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
    if (!exp.test(email)) {
        r = false;
	}
	return r;
}

function ValidaCPF(cpf) {
   var digito = cpf.toString();
   if (cpf == '000.000.000-00'){
      return(false)
   }	
   if (cpf == '111.111.111-11'){
      return(false)
   }
   if (cpf == '222.222.222-22'){
      return(false)
   }	
   if (cpf == '333.333.333-33'){
      return(false)
   }	
   if (cpf == '444.444.444-44'){
      return(false)
   }	
   if (cpf == '555.555.555-55'){
      return(false)
   }	
   if (cpf == '666.666.666-66'){
      return(false)
   }	
   if (cpf == '777.777.777-777'){
      return(false)
   }	

   if (cpf == '888.888.888-88'){
      return(false)
   }
   if (cpf == '999.999.999-99'){      
      return(false)
   }

   // DIGITO 1
   var soma1 = 0
       soma1 = soma1 + 10 * digito.charAt(0);
       soma1 = soma1 +  9 * digito.charAt(1);
       soma1 = soma1 +  8 * digito.charAt(2);
       soma1 = soma1 +  7 * digito.charAt(4);
       soma1 = soma1 +  6 * digito.charAt(5);
       soma1 = soma1 +  5 * digito.charAt(6);
       soma1 = soma1 +  4 * digito.charAt(8);
       soma1 = soma1 +  3 * digito.charAt(9);
       soma1 = soma1 +  2 * digito.charAt(10);
   
   var divisao1    = soma1 / 11
   
   var multiplica1 = parseInt(divisao1,10) * 11
   
   var resto1      = soma1 - multiplica1
   
   if (resto1 <= 1){
      var digi1 = 0
   } else {
      var digi1 = 11 - resto1
   }
 

   // DIGITO 2
   var soma2 = 0
       soma2 = soma2 + 11 * digito.charAt(0);
       soma2 = soma2 + 10 * digito.charAt(1);
       soma2 = soma2 +  9 * digito.charAt(2);
       soma2 = soma2 +  8 * digito.charAt(4);
       soma2 = soma2 +  7 * digito.charAt(5);
       soma2 = soma2 +  6 * digito.charAt(6);
       soma2 = soma2 +  5 * digito.charAt(8);
       soma2 = soma2 +  4 * digito.charAt(9);
       soma2 = soma2 +  3 * digito.charAt(10);
       soma2 = soma2 +  2 * digi1       

   var divisao2    = soma2 / 11

   var multiplica2 = parseInt(divisao2,10) * 11

   var resto2      = soma2 - multiplica2

   if (resto2 <= 1){
      var digi2 = 0
   } else {
      var digi2 = 11 - resto2
   }  
   if (digito.charAt(12) == digi1.toString() & digito.charAt(13) == digi2.toString()) {
      return(true)
   } else {
      
      return(false)
   }
}

/* ERRO !!
function ValidaCPF(cpf) {    
    var r = true;
	var exp = /\.|\-/g;
    cpf = cpf.toString().replace( exp, "" ); 
    var digitoDigitado = eval(cpf.charAt(9)+cpf.charAt(10));
    var soma1=0, soma2=0;
    var vlr =11;    
    for (i=0;i<9;i++) {
        soma1+=eval(cpf.charAt(i)*(vlr-1));
        soma2+=eval(cpf.charAt(i)*vlr);
        vlr--;
    }    
    soma1 = (((soma1*10)%11)==10 ? 0:((soma1*10)%11));
    soma2 = (((soma2+(2*soma1))*10)%11);    
    var digitoGerado = (soma1*10) + soma2;
    if (digitoGerado != digitoDigitado) {
        r = false;
	}
	return r;
}
*/

function ValidaCNPJ(cnpj) {
    var r = true;
    var valida = new Array(6,5,4,3,2,9,8,7,6,5,4,3,2);
    var dig1 = new Number;
    var dig2 = new Number;    
    var exp = /\.|\-|\//g;
    cnpj = cnpj.toString().replace( exp, "" ); 
    var digito = new Number(eval(cnpj.charAt(12)+cnpj.charAt(13)));        
    for (i = 0; i<valida.length; i++) {
        dig1 += (i>0? (cnpj.charAt(i-1)*valida[i]):0);    
        dig2 += cnpj.charAt(i)*valida[i];    
    }
    dig1 = (((dig1%11)<2)? 0:(11-(dig1%11)));
    dig2 = (((dig2%11)<2)? 0:(11-(dig2%11)));    
    if (((dig1*10)+dig2) != digito) {
        return false;
	}
	return r;
}
