/*--------------------------------------------------------------------------------------------*/
// Funções da Index
/*--------------------------------------------------------------------------------------------*/
function Logon() {
	var params;
	if ($("txt_login_acesso").value == "") {
		alert("Informe o seu login");
		$("txt_login_acesso").focus();
		return;
	}
	if ($("txt_senha_acesso").value == "") {
		alert("Informe a sua senha");
		$("txt_senha_acesso").focus();
		return;
	}	
	params += "&login=" + escape($("txt_login_acesso").value);
	params += "&senha=" + escape($("txt_senha_acesso").value);
	
	// Desabilita o botão e exibe o aguarde
	AguardeBotaoImagem("bt_ok_acesso", "img_aguarde_acesso", true);
	
	var ajax = new AJAX();
	ajax.url = "login.php";	
	ajax.metodo = "POST";
	ajax.params = params;	
	ajax.retorno = function(retorno) {
		AguardeBotaoImagem("bt_ok_acesso", "img_aguarde_acesso", false); // Habilita o botão e oculta o aguarde
		switch(retorno) {
			case "erro_login":
				alert("Login inválido!");
				$("txt_login_acesso").focus();
				break;
			case "erro_senha":
				alert("Senha inválida!");
				$("txt_senha_acesso").focus();
				break;
			case "ok":
				$("txt_login_acesso").value = "";
				$("txt_senha_acesso").value = "";
				AjaxInclude("usuario_nome.php","lbl_usuario_nome"); // exibe o nome do usuario
				new Effect.Fade("div_acesso");
				new Effect.Appear("div_acesso_info");
				new Effect.Appear("ul_menu_index");
				Menu('meusforms');				
				break;
			default:
				alert("ERRO NO SISTEMA! Desculpe o transtorno.\n\nEste erro foi enviado a equipe de suporte para análise e logo será corrigido.\n\nQualquer dúvida entrar em contato: contato@formfacil.com");
				break;
		}
	}
	ajax.conectar();
}

function Logoff() {
	AguardeBotaoImagem("bt_sair", "img_aguarde_sair", true);
	var ajax = new AJAX();
	ajax.url = "logoff.php";	
	ajax.metodo = "POST";
	ajax.retorno = function() {		
		AguardeBotaoImagem("bt_sair", "img_aguarde_sair", false);
		new Effect.Fade("div_acesso_info");
		new Effect.Appear("div_acesso");		
		new Effect.Fade("ul_menu_index");
		Menu('inicial');
	}
	ajax.conectar();
}

/*--------------------------------------------------------------------------------------------*/
// Funções da Edição do Formulário
/*--------------------------------------------------------------------------------------------*/

// Adiciona o um novo campo ao formulário
function AdicionaCampo(tipo) {
	var id = $("hdn_id_campo").value; // ID atual do campo
	var ul = $("ul_formulario"); // lista
	var li = document.createElement('li'); // item da lista
	var html = "";
	var id = parseInt(id);
	
	// HTML do novo campo
	html += "<input type='hidden' id='tipo_"+id+"' value='"+tipo+"'>";
	html += "<input type='text' id='titulo_"+id+"' class='label' maxlength='100' value='Clique aqui e altere o título do campo' onfocus='this.select();' onkeyup='EditaTituloCampo("+id+",this.value)'>";
	html += "<img src='images/icones/excluir.gif' alt='Excluir Campo' onclick='RetiraCampo(this);'>";
	switch (tipo) {		
		case 1: // text			
			html += "<input id='campo_"+id+"' type='text' class='campo'>";
			break;		
		case 2: // textarea
			html += "<textarea id='campo_"+id+"'></textarea>";
			break;
		case 3: // data
			html += "<input id='campo_"+id+"' type='text' maxlength='10' class='data' onkeypress='return Data(event,this);' onblur='return Data(event,this);'> ";
			html += "<input id='botao_"+id+"' type='button' class='botao-data' title='Exibir Calendário'>";
			break;
		case 4: // numero
			html += "<input id='campo_"+id+"' type='text' maxlength='20' class='numero' onkeypress='return Numero(event);' onblur='return Numero(event);'>";
			break;
		case 5: // valor
			html += "<input id='campo_"+id+"' type='text' maxlength='11' class='valor' onkeypress='return Valor(event,this);' onblur='FormataValor(this);'>"
			break;
		case 6: // select
			html += "<select id='campo_"+id+"'>";
			for (i = 1; i <= 3; i++) {
				html += "<option>Opção "+i+"</option>";
			}
			html += "</select>";
			break;
		case 7: // checkbox
			html += "<table id='table_check_"+id+"' class='opcao' cellpading='0' cellspacing='0'>";
			for (i = 1; i <= 3; i++) {
				html += "<tr><td>";
				html += "<input name='campo_"+id+"' type='checkbox' class='checkbox' value=''><label>Opção "+i+"</label>";
				html += "</td></tr>";
			}
			html += "</table>";
			break;
		case 8: // radio
			html += "<table id='table_radio_"+id+"' class='opcao' cellpading='0' cellspacing='0'>";
			for (i = 1; i <= 3; i++) {
				html += "<tr><td>";
				html += "<input name='campo_"+id+"' type='radio' class='radio' value=''><label>Opção "+i+"</label>";
				html += "</td></tr>";
			}
			html += "</table>";
			break;
		case 10: // campo filho, vindo de outro formulário
			selectf = $("sel_formulario") // select com os outros formulários
			selectc = $("sel_campo") // select com campos do formulário selecionado
			if (selectc.value == "") {return;}
			hiddens = $N("hdn_resposta_"+selectc.value) // hiddens com as 5 primeiras repostas			
			html += "<select id='campo_"+id+"'>";
			for (i = 0; i < hiddens.length; i++) {
				html += "<option>"+hiddens[i].value+"</option>";
			}
			html += "</select>";
			html += "<input type='hidden' id='hdn_formulario_pai_"+id+"' value='"+selectf.value+"'>";
			html += "<input type='hidden' id='hdn_campo_pai_"+id+"' value='"+selectc.value+"'>";
			break;			
	}
	html += "<input type='hidden' id='instrucao_"+id+"' value=''>";
	html += "<input type='hidden' id='obrigatorio_"+id+"' value='1'>";
	html += "<h4>&nbsp;</h4>"

	li.id = id;
	li.innerHTML = html;	
	li.title = "Clique e Arraste os campos para mudar a ordem";
	li.onmouseover = function(){ LiFormHover(this,true); };
	li.onmouseout = function(){ LiFormHover(this,false); };
	li.onclick = function(){ LiFormClick(this); ExibePropriedades('campo', li, tipo); };
	ul.appendChild(li);
	
	// cria o calendario caso o campo seja de data
	if (tipo == 3) { Calendario("campo_"+id, "botao_"+id); }
	
	SortableListaForm(); // recria a ordenação da lista
	$("hdn_id_campo").value = (id + 1); // incrementa o ID do campo
}

// retira o campo da tela de formulario
function RetiraCampo(img) {
	var ul = $("ul_formulario");
	var li = img.parentNode; // item da lista
	ul.removeChild(li);
}

// exclui o campo do formulario
function ExcluirCampo(campo_id, img) {	
	if (confirm("ATENÇÃO!\n\nCaso confirme a exclusão deste campo, o mesmo não ficará mais disponível em seu formulário, assim como suas respectivas repostas e valores.\n\nDeseja prosseguir com esta operação?")) {
		var params = "opcao=excluir_campo";
		var ul = $("ul_formulario");
		var li = img.parentNode; // item da lista
		params += "&campo=" + campo_id;
		var ajax = new AJAX();
		ajax.url = "form_trata.php";	
		ajax.metodo = "POST";
		ajax.params = params;	
		ajax.retorno = function(retorno) {
			switch(retorno) {
				case "relacionado":
					alert("Este campo está sendo utilizado em outro(s) formulário(s) e não pode ser excluído!");
					break;
				case "excluir_campo":
					ul.removeChild(li);
					return;
				default:
					alert("ERRO - Exclusão de Campo do Formulário!");
					break;
			}
		}
		ajax.conectar();
	}
}

// Exibe as propriedades do campo selecionado
// opcao: 'formulario' ou 'campo'
function ExibePropriedades(opcao, obj, tipo) {
	var id = obj.id;
	var top = GetTop(obj);
	var left = parseInt($("div_propriedades").style.left); // posição esquerda da caixa de propriedades
	var div1 = $("div_props_formulario");
	var div2 = $("div_props_campo");
	
	// exibe/oculta as divs de propriedades
	if (opcao == "formulario") {
		div2.style.display = "none";
		div1.style.display = "block";
		$("h2_propriedades").innerHTML = "Propriedades do Formulário";
	} else {
		div1.style.display = "none";
		div2.style.display = "block";
		$("h2_propriedades").innerHTML = "Propriedades do Campo"
	}
	
	// propriedades do select
	if (tipo == 6) {
		ExibeOpcaoSelect(id); // exibe as propriedades do option
		$("table_props_select").style.display = "block";
	} else {
		$("table_props_select").style.display = "none";
	}

	// propriedades do checkbox
	if (tipo == 7) {
		ExibeOpcaoCheck(id); // exibe as propriedades do option
		$("table_props_check").style.display = "block";
	} else {
		$("table_props_check").style.display = "none";
	}

	// propriedades do radio
	if (tipo == 8) {
		ExibeOpcaoRadio(id); // exibe as propriedades do option
		$("table_props_radio").style.display = "block";
	} else {
		$("table_props_radio").style.display = "none";
	}
	
	// armazena o id do objeto selecionado
	$("hdn_id_selecionado").value = id;
	
	// Atualiza os campos do formulário
	if (tipo == 0) { // formulario
		EditaTituloForm($("txt_titulo_form").value);
	} else { // campo
		EditaTituloCampo(id, $("titulo_"+id).value);
		EditaInstrucaoCampo(id, $("instrucao_"+id).value);
		EditaObrigatorioCampo(id, $("obrigatorio_"+id).value);
	}

	// move a caixa de propriedades para o lado do campo
	new Effect.Move($('div_propriedades'), {x:left, y:top, mode: 'absolute'});
}

// Replica o texto no formulario e nas propriedades
function EditaTituloForm(texto) {
	$("txt_titulo_form").value = texto;
	$("txt_prop_tituloform").value = texto;
}

// Replica o texto no formulario e nas propriedades
function EditaTituloCampo(id, texto) {
	if (id == 0) {
		id = $("hdn_id_selecionado").value;
	}
	$("titulo_"+id).value = texto;
	$("txt_prop_titulo").value = texto;
}

// Replica o texto no formulario e nas propriedades
function EditaInstrucaoCampo(id, texto) {
	if (id == 0) {
		id = $("hdn_id_selecionado").value;
	}
	$("instrucao_"+id).value = texto;
	$("txt_prop_instrucao").value = texto;
}

// Replica o texto no formulario e nas propriedades
function EditaObrigatorioCampo(id, texto) {
	if (id == 0) {
		id = $("hdn_id_selecionado").value;
	}
	$("obrigatorio_"+id).value = texto;
	$("sel_prop_obrigatorio").selectedIndex = texto;
}

//----------------------------------------------------------------------------------------------------------------------------------------
// Funções para editar as propriedades as opções dos campos de múltipla escolha
//----------------------------------------------------------------------------------------------------------------------------------------

// Exibe a quantidade de campos de options de acordo com o select
function ExibeOpcaoSelect(id) {
	var select = $("campo_"+id);
	$("ul_opcoes_select").innerHTML = ""; // limpa a lista	
	for (i = 0; i < select.length; i++) {
		AdicionaOpcaoSelect(id, i, select.options[i].text);
	}
}

// Exibe a quantidade de campos de acordo com os checkbox
function ExibeOpcaoCheck(id) {
	var checks = $N("campo_"+id);
	var labels = $("table_check_"+id).getElementsByTagName("label"); // pra funcionar no IE e FF
	$("ul_opcoes_check").innerHTML = ""; // limpa a lista
	for (i = 0; i < checks.length; i++) {
		AdicionaOpcaoCheck(id, i, labels[i].innerHTML);
	}
}

// Exibe a quantidade de campos de acordo com os radios
function ExibeOpcaoRadio(id) {
	var radios = $N("campo_"+id);
	var labels = $("table_radio_"+id).getElementsByTagName("label"); // pra funcionar no IE e FF
	$("ul_opcoes_radio").innerHTML = ""; // limpa a lista
	for (i = 0; i < radios.length; i++) {
		AdicionaOpcaoRadio(id, i, labels[i].innerHTML);
	}
}

// Adiciona uma nova opcao para o select
function AdicionaOpcaoSelect(id, indice, valor) {
	var ul = $("ul_opcoes_select"); // lista
	var li = document.createElement('li'); // item da lista
	var select = "campo_"+id;
	var html = "";

	html += "<input type='text' value='"+valor+"' onclick='this.select();' maxlength='200' style='width:138px;' onfocus='this.onkeyup()' onkeyup='EditaTextoSelect("+indice+", this.value);'> ";
	html += "<img src='images/icones/adicionar.gif' class='botao' onclick=\"AdicionaOpcaoSelect("+id+", "+(indice+1)+", '')\"> ";
	html += "<img src='images/icones/excluir.gif' class='botao' onclick='RetiraOpcaoSelect("+id+", "+indice+", this)'>";

	li.id = "li_option_"+id+"_"+indice;
	li.innerHTML = html;
	ul.appendChild(li);
	
	// verifica se a quantidade de campos é maior que a quantidade de options do select e adiciona mais um
	var qtd1 = ul.getElementsByTagName("li").length;
	var qtd2 = $(select).length;
	if (qtd1 > qtd2) {
		// params: obj, value, descrição
		AddOption(select, qtd1, '', '', '');
		ExibeOpcaoSelect(id) // recarrega lista de opções para reordenar os indices
	}
}

// Adiciona uma nova opcao para o checkbox
function AdicionaOpcaoCheck(id, indice, valor) {
	var ul = $("ul_opcoes_check"); // lista
	var li = document.createElement('li'); // item da lista
	var checks = "campo_"+id;
	var html = "";

	html += "<input type='text' value='"+valor+"' onclick='this.select();' maxlength='200' style='width:138px;' onfocus='this.onkeyup()' onkeyup='EditaTextoCheck("+indice+", this.value);'> ";
	html += "<img src='images/icones/adicionar.gif' class='botao' onclick=\"AdicionaOpcaoCheck("+id+", "+(indice+1)+", '')\"> ";
	html += "<img src='images/icones/excluir.gif' class='botao' onclick='RetiraOpcaoCheck("+id+", "+indice+", this)'>";

	li.id = "li_option_"+id+"_"+indice;
	li.innerHTML = html;
	ul.appendChild(li);
	
	// verifica se a quantidade de campos é maior que a quantidade de options do select e adiciona mais um
	var qtd1 = ul.getElementsByTagName("li").length;
	var qtd2 = $N(checks).length;
	if (qtd1 > qtd2) {
		// adiciona novo checkbox na tabela
		var tabela = $("table_check_"+id).getElementsByTagName("tbody")[0];	// pra funcionar no IE e FF
		var tr = document.createElement('tr');
		var td = document.createElement('td');
		td.innerHTML = "<input name='campo_"+id+"' type='checkbox' class='checkbox' value=''><label>Nova Opção</label>";
		tr.appendChild(td);	
		tabela.appendChild(tr);		
		
		// recarrega lista de opções para reordenar os indices
		ExibeOpcaoCheck(id) 
	}
}

// Adiciona uma nova opcao para o radio
function AdicionaOpcaoRadio(id, indice, valor) {
	var ul = $("ul_opcoes_radio"); // lista
	var li = document.createElement('li'); // item da lista
	var radios = "campo_"+id;
	var html = "";

	html += "<input type='text' value='"+valor+"' onclick='this.select();' maxlength='200' style='width:138px;' onfocus='this.onkeyup()' onkeyup='EditaTextoRadio("+indice+", this.value);'> ";
	html += "<img src='images/icones/adicionar.gif' class='botao' onclick=\"AdicionaOpcaoRadio("+id+", "+(indice+1)+", '')\"> ";
	html += "<img src='images/icones/excluir.gif' class='botao' onclick='RetiraOpcaoRadio("+id+", "+indice+", this)'>";

	li.id = "li_option_"+id+"_"+indice;
	li.innerHTML = html;
	ul.appendChild(li);
	
	// verifica se a quantidade de campos é maior que a quantidade de options do select e adiciona mais um
	var qtd1 = ul.getElementsByTagName("li").length;
	var qtd2 = $N(radios).length;
	if (qtd1 > qtd2) {
		// adiciona novo radio na tabela
		var tabela = $("table_radio_"+id).getElementsByTagName("tbody")[0];	// pra funcionar no IE e FF
		var tr = document.createElement('tr');
		var td = document.createElement('td');
		td.innerHTML = "<input name='campo_"+id+"' type='radio' class='radio' value=''><label>Nova Opção</label>";
		tr.appendChild(td);	
		tabela.appendChild(tr);		
		
		// recarrega lista de opções para reordenar os indices
		ExibeOpcaoRadio(id) 
	}
}

// remove a opção do select
function RetiraOpcaoSelect(id, indice, img) {
	var ul = $("ul_opcoes_select");
	var li = img.parentNode; // item da lista
	var select = "campo_"+id;
	// não permite excluir todos
	if (indice == 0) {
		alert("A lista tem que possuir pelo menos 1 opção.");
		return;
	}
	DelOption(select, indice) // remove option do select
	ul.removeChild(li); // retira item da lista de propriedades
	ExibeOpcaoSelect(id) // recarrega lista de opções para reordenar os indices
}

// remove a opção do checkbox
function RetiraOpcaoCheck(id, indice, img) {
	var ul = $("ul_opcoes_check");
	var li = img.parentNode; // item da lista
	var select = "campo_"+id;
	var tabela = $("table_check_"+id).getElementsByTagName("tbody")[0];	// pra funcionar no IE e FF
	var tr = tabela.getElementsByTagName('tr')[indice];		
	// não permite excluir todos
	if (indice == 0) {
		alert("A lista tem que possuir pelo menos 1 opção.");
		return;
	}
	tabela.removeChild(tr); // retira tr da tabela
	ul.removeChild(li); // retira item da lista de propriedades
	ExibeOpcaoCheck(id) // recarrega lista de opções para reordenar os indices
}

// remove a opção do radio
function RetiraOpcaoRadio(id, indice, img) {
	var ul = $("ul_opcoes_radio");
	var li = img.parentNode; // item da lista
	var select = "campo_"+id;
	var tabela = $("table_radio_"+id).getElementsByTagName("tbody")[0];	// pra funcionar no IE e FF
	var tr = tabela.getElementsByTagName('tr')[indice];
	// não permite excluir todos
	if (indice == 0) {
		alert("A lista tem que possuir pelo menos 1 opção.");
		return;
	}	
	tabela.removeChild(tr); // retira tr da tabela
	ul.removeChild(li); // retira item da lista de propriedades
	ExibeOpcaoRadio(id) // recarrega lista de opções para reordenar os indices
}

// edita o texto da opção do select
function EditaTextoSelect(indice, texto) {
	var id = $("hdn_id_selecionado").value;
	var select = $("campo_"+id);
	select.selectedIndex = indice;
	select.options[indice].text = texto;
}

// edita o texto da opção do checkbox
function EditaTextoCheck(indice, texto) {
	var id = $("hdn_id_selecionado").value;
	var labels = $("table_check_"+id).getElementsByTagName("label"); // pra funcionar no IE e FF
	labels[indice].innerHTML = texto;
}

// edita o texto da opção do radio
function EditaTextoRadio(indice, texto) {
	var id = $("hdn_id_selecionado").value;
	var labels = $("table_radio_"+id).getElementsByTagName("label"); // pra funcionar no IE e FF
	labels[indice].innerHTML = texto;
}
//----------------------------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------------------------

function ValidaFormulario(opcao) {
	var params = "opcao=" + opcao;
	var lista = $("ul_formulario").getElementsByTagName("li");

	if ($("txt_prop_url").value == "") {
		alert("Informe a url que vai acessar este formulário, conforme o modelo abaixo:\n\nhttp://www.formfacil.com/seu_login/URL\n\nBasta digitar a URL final, o caminho completo é gravado automaticamente.");
		ExibePropriedades('formulario', $('div_cabecalho_form'), 0); // propriedades do formulário
		$("txt_prop_url").focus();
		return;
	}
	if ($("txt_titulo_form").value == "Clique aqui e altere o título do formulário") {
		alert("Informe um título para o seu formulário.");
		$("txt_titulo_form").focus();
		return;
	}
	if (lista.length < 1) {
		alert("Adicione pelo menos um campo ao seu formulário");
		return;
	}
	
	params += "&url=" + $("txt_prop_url").value;
	params += "&titulo_form=" + escape($("txt_prop_tituloform").value);
	params += "&descricao_form=" + escape($("text_prop_descricao").value);
	params += "&publico=" + $("sel_prop_publico").value;
	params += "&email_resposta=" + $("sel_prop_email_resposta").value;	
	for (j = 1; j <= 4; j++) { // cores
		params += "&cor"+j+"=" + $("cp_value_"+j).value;
	}

	for (i = 0; i < lista.length; i++) {
		campo_id = lista[i].id;
		//campo = $("campo_"+campo_id); // campo contido na <li>
		tipo = lista[i].getElementsByTagName("input")[0].value;
		params += "&tipo[]=" + tipo; // tipo do campo
		params += "&titulo[]=" + escape(lista[i].getElementsByTagName("input")[1].value);
		params += "&id[]=" + campo_id;
		params += "&instrucao[]=" + escape($("instrucao_"+campo_id).value);
		params += "&obrigatorio[]=" + $("obrigatorio_"+campo_id).value;

		// se o campo for de outro formulario envia os ids do form e campo pai
		if (tipo != 10) {
			params += "&formulario_pai_id[]=";
			params += "&campo_pai_id[]=";
		} else {
			params += "&formulario_pai_id[]=" + $("hdn_formulario_pai_"+campo_id).value;
			params += "&campo_pai_id[]=" + $("hdn_campo_pai_"+campo_id).value;
		}

		switch (parseInt(tipo)) {
			case 1: // text
				break;
			case 2: // textarea
				break;
			case 3: // data
				break;
			case 4: // numero
				break;
			case 5: // valor
				break;
			case 6: // select
				select = $("campo_"+campo_id);
				for (j = 0; j < select.length; j++) {
					params += "&detalhe"+campo_id+"_id[]=" + select.options[j].value; // id do detalhe para alteração
					params += "&detalhe"+campo_id+"[]=" + escape(select.options[j].text); // textos dos options do select
				}
				break;
			case 7: // checkbox
				labels = $("table_check_"+campo_id).getElementsByTagName("label"); // pra funcionar no IE e FF
				checks = $N("campo_"+campo_id);
				for (j = 0; j < labels.length; j++) {			
					params += "&detalhe"+campo_id+"_id[]=" + checks[j].value; // id do detalhe para alteração
					params += "&detalhe"+campo_id+"[]=" + escape(labels[j].innerHTML); // textos dos checkboxs
				}			
				break;
			case 8: // radio
				labels = $("table_radio_"+campo_id).getElementsByTagName("label"); // pra funcionar no IE e FF
				radios = $N("campo_"+campo_id);
				for (j = 0; j < labels.length; j++) {
					params += "&detalhe"+campo_id+"_id[]=" + radios[j].value; // id do detalhe para alteração
					params += "&detalhe"+campo_id+"[]=" + escape(labels[j].innerHTML); // textos dos radios
				}				
				break;			
		}
	}
	
	if (opcao == "alterar") {
		if (!confirm("Confirmar a alteração deste formulário?")) { return; }
		params += "&formulario=" + $("hdn_id_formulario").value;
	}
	
	AguardeBotaoImagem("bt_gravar", "img_aguarde_form", true);
	var ajax = new AJAX();
	ajax.url = "form_trata.php";
	ajax.metodo = "POST";
	ajax.params = params;
	ajax.retorno = function(retorno) {
		switch(retorno) {
			case "url_existe":
				AguardeBotaoImagem("bt_gravar", "img_aguarde_form", false);
				alert("Você já cadastrou um formulário com a URL \'"+$("txt_prop_url").value+"\'.\nNão é permitido cadastrar 2 URLs iguais, escolha outra.");
				ExibePropriedades('formulario', $('div_cabecalho_form'), 0); // propriedades do formulário
				$("txt_prop_url").focus();
				break;
			case "inserir":
				Menu("meusforms");
				break;
			case "alterar":
				//AguardeBotaoImagem("bt_gravar", "img_aguarde_form", false);
				Menu("meusforms");
				alert("Formulário alterado com sucesso!");
				return;
			default:
				alert("ERRO - Validação de Formulário!");
				break;
		}			
	}
	ajax.conectar();
}

// Abre o formulário para criar
function CriarFormulario() {
	var params = "?opcao=inserir";
	AguardeBotaoImagem("", "li_aguarde_menu", true);
	AjaxInclude('form_edita.php'+params,'div_sistema');
}

// Abre o formulário para editar
function AlterarFormulario() {
	var params = "?opcao=alterar";
	var lista = $N("a_form");
	var id = "";
	for (i = 0; i < lista.length; i++) { 
		if (lista[i].className == "click") {
			id = lista[i].id;
		}
	}
	if (id == "") {
		alert("Selecione ao lado direito o formulário que deseja alterar.");
		return;
	}
	params += "&formulario="+id;
	AguardeBotaoImagem("", "li_aguarde_menu", true);
	AjaxInclude('form_edita.php'+params,'div_sistema');
}

// Exclui o formulário selecionado
function ExcluirFormulario() {
	var params = "opcao=excluir";
	var lista = $N("a_form");
	var id = "";
	var nome;
	for (i = 0; i < lista.length; i++) { 
		if (lista[i].className == "click") {
			id = lista[i].id;
			nome = lista[i].innerHTML;
		}
	}
	if (id == "") {
		alert("Selecione ao lado direito o formulário que deseja excluir.");
		return;
	}
	if (!confirm("ATENÇÃO!\n\nCaso este formulário possua respostas, todas serão excluídas.\n\nConfirma a exclusão do formulário '"+nome+"'?")) {
		return;
	}
	params += "&formulario="+id;
	
	AguardeBotaoImagem("", "li_aguarde_menu", true);
	var ajax = new AJAX();
	ajax.url = "form_trata.php";
	ajax.metodo = "POST";
	ajax.params = params;
	ajax.retorno = function(retorno) {
		switch(retorno) {
			case "relacionado":
				AguardeBotaoImagem("", "li_aguarde_menu", false);
				alert("Este formulário possui campo(s) utilizado(s) em outro(s) formulário(s) e não pode ser excluído!");
				break;
			case "excluir":
				Menu("meusforms");
				return;
			default:
				alert("ERRO - Exclusão do Formulário!");
				break;
		}		
	}
	ajax.conectar();
}

// Abre o formulário para utilização
function VisualizarFormulario(usuario) {
	var params = "";
	var lista = $N("a_form");
	var id = "";
	var url;
	for (i = 0; i < lista.length; i++) { 
		if (lista[i].className == "click") {
			id = lista[i].id;
			url = $N("hdn_url")[i].value;
		}
	}
	if (id == "") {
		alert("Selecione ao lado direito o formulário que deseja visualizar.");
		return;
	}
	// o mesmo que www.formfacil.com/usuario/url
	pagina = usuario+"/"+url;
	pagina = pagina.toLowerCase();
	janela = usuario+url;
	Janela(pagina, 'http://www.formfacil.com/'+pagina);
	//TelaCheia(pagina, janela);
}

// Abre a tela pra envio de e-mail do forumlario
function EmailFormulario(sim) {
	var div = "div_enviar_email";
	var lista = $N("a_form");
	var marcou = false;
	for (i = 0; i < lista.length; i++) { 
		if (lista[i].className == "click") {
			marcou = true;
			// coloca os valores do formulario na div
			$("span_email_titulo").innerHTML = $N("hdn_titulo")[i].value;
			url = "http://www.formfacil.com/" + $N("hdn_usuario")[i].value + "/" + $N("hdn_url")[i].value;
			url = url.toLowerCase()
			$("text_pub").value = "OK!";
			// armazena o ID fo formulario selecionado pra enviar o email
			$("hdn_form_envia_email").value = lista[i].id;
		}
	}
	if (!marcou) {
		alert("Selecione ao lado direito o formulário que deseja enviar por e-mail.");
		return;
	}	
	if (sim) {
		Effect.SlideDown(div);
	} else {
		Effect.Fold(div);
	}
}

// Abre a tela pra envio de e-mail do forumlario
function EnviaEmailConvite() {	
	var vetor, emails, e;
	var text = $("text_emails");
	var params = "opcao=email_convite";
	params += "&formulario=" + $("hdn_form_envia_email").value;
	
	if (Trim(text.value) == "") {
		alert("Informe o(s) e-mail(s) que deseja enviar o convite para responder o seu formulário.");
		text.focus();
		return;
	}
	// emails separados por ";"
	emails = text.value.split(";");	
	for (i = 0; i < emails.length; i++) {
		e = Trim(emails[i])
		if (e != "") {
			if (!EmailValido(e)) {
				alert("O e-mail \'"+e+"\' não é um e-mail válido.");
				text.focus();
				return;
			}
			params += "&email[]=" + e;
		}
	}

	AguardeBotaoImagem("bt_envia_email", "img_aguarde_envia_email", true);
	
	// envia email de resposta
	var ajax = new AJAX();
	ajax.url = "form_trata.php";
	ajax.metodo = "POST";
	ajax.params = params;
	ajax.retorno = function(retorno) {
		AguardeBotaoImagem("bt_envia_email", "img_aguarde_envia_email", false);
		alert("E-mail enviado com sucesso!");
		EmailFormulario(false);
	}
	ajax.conectar();
}

// Abre as informações de publicação do site
function PublicarFormulario(sim) {
	var div = "div_publicar";
	var lista = $N("a_form");
	var marcou = false;
	for (i = 0; i < lista.length; i++) { 
		if (lista[i].className == "click") {
			marcou = true;
			// coloca os valores do formulario na div
			$("span_pub_titulo").innerHTML = $N("hdn_titulo")[i].value;
			url = "http://www.formfacil.com/" + $N("hdn_usuario")[i].value + "/" + $N("hdn_url")[i].value;
			url = url.toLowerCase()
			$("a_pub_url").href = url;
			$("span_pub_url").innerHTML = url;
			$("text_pub").value = "<iframe src=\"" + url + "?width=500\" width=\"500\" height=\"500\" frameborder=\"0\" scrolling=\"no\"></iframe>";
		}
	}
	if (!marcou) {
		alert("Selecione ao lado direito o formulário que deseja publicar.");
		return;
	}	
	if (sim) {
		Effect.SlideDown(div);
	} else {
		Effect.Fold(div);
	}
}

// Lista de formulários na página inicial
// pagina: primeira, anterior, proxima, ultima - caixa: 1 ou 2
function ListaFormularios(pagina, caixa) {
	var numero = 0;	
	var imagem = "img_aguarde_caixa_form" + caixa;
	var div = "div_form_lista" + caixa;
	if (pagina != "") {
		numero = $("hdn1_"+pagina).value;		
	}
	AguardeBotaoImagem("", imagem, true);
	AjaxInclude('formulario_lista.php?pagina='+numero+"&caixa="+caixa, div);
}

// Abre a tela para criação de relatório
function CriarRelatorio() {
	var params;
	var lista = $N("a_form");
	var id = "";
	for (i = 0; i < lista.length; i++) { 
		if (lista[i].className == "click") {
			id = lista[i].id;
		}
	}
	if (id == "") {
		alert("Selecione ao lado direito o formulário que deseja criar um relatório.");
		return;
	}
	params = "?formulario="+id;
	AguardeBotaoImagem("", "li_aguarde_menu", true);
	AjaxInclude('relatorio.php'+params,'div_sistema');
}

// Abre a tela com o relatório
function GerarRelatorio(formulario_id, titulo) {
	params = "?formulario="+formulario_id;
	checks = $N("chk_campo");
	marcou = false;
	for (i = 0; i < checks.length; i++) {
		if (checks[i].checked) {
			marcou = true;
			params += "&campo[]="+checks[i].value;
		}
	}
	if (!marcou) {
		alert("Marque pelo menos 1 campo para poder gerar o relatório.");
		return;
	}
	Janela('relatorio_grid.php'+params, titulo);
}

/*--------------------------------------------------------------------------------------------*/
// Cadastro de Novos Usuários
/*--------------------------------------------------------------------------------------------*/
function ValidaUsuario(opcao) {
	var params = "opcao=" + opcao;
		
	if ($("txt_nome").value == "") {
		$("txt_nome").focus();
		LiFocus($("txt_nome"), "erro", "Informe o seu nome");
		return;
	}
	if ($("txt_login").value == "") {			
		$("txt_login").focus();
		LiFocus($("txt_login"), "erro", "Informe o seu login para acesso o sistema");
		return;
	}
	if ($("txt_senha").value == "") {			
		$("txt_senha").focus();
		LiFocus($("txt_senha"), "erro", "Informe a sua senha para acesso o sistema");
		return;
	}
	
	params += "&nome=" + escape($("txt_nome").value);
	params += "&login=" + escape($("txt_login").value);
	params += "&senha=" + escape($("txt_senha").value);
	params += "&email=" + escape($("txt_email").value);
	
	if (opcao == "alterar") {
		if (!confirm("Confirma a alteração dos seus dados?")) {return;}
		params += "&usuario=" + $("hdn_usuario_id").value;
	}

	AguardeBotaoImagem("bt_gravar", "img_aguarde_usuario", true);	
	var ajax = new AJAX();
	ajax.url = "usuario_trata.php";	
	ajax.metodo = "POST";
	ajax.params = params;	
	ajax.retorno = function(retorno) {
		AguardeBotaoImagem("bt_gravar", "img_aguarde_usuario", false);
		switch(retorno) {
			case "login_ja_cadastrado":		
				$("txt_login").focus();
				LiFocus($("txt_login"), "erro", "Este login já está cadastrado, escolha outro");
				break;
			case "inserir":
				ExibeFormUsuario(false);
				alert($("txt_nome").value+", o seu cadastro no FormFacil.com foi realizado com sucesso!\nA partir de agora você está logado no sistema e pode utilizar todos os nossos serviços.\n\nEquipe FormFacil.com");
				$("txt_login_acesso").value = $("txt_login").value;
				$("txt_senha_acesso").value = $("txt_senha").value;
				Logon();
				break;
			case "alterar":
				alert("Dados cadastrais alterados com sucesso!\n\nPara sair desta tela clique no \'Fechar\' no lado direito superior.");
				break;
		}
	}
	ajax.conectar();
}

// Exibe o formulario de cadastro de novos usuários
function ExibeFormUsuario(sim) {
	var div = "div_form_usuario";
	if (sim) {
		AguardeBotaoImagem("", "img_aguarde_sobre", true);
		AjaxInclude('usuario_form.php',div);
		Effect.Appear(div);
	} else {
		Effect.Fade(div);
		div.innerHTML = "";
	}
}

// Lista de usuários na página inicial
// pagina: primeira, anterior, proxima, ultima - caixa: 1 ou 2
function ListaUsuarios(pagina, caixa) {
	var numero = 0;	
	var imagem = "img_aguarde_caixa_usu" + caixa;
	var div = "div_usuario_lista" + caixa;
	if (pagina != "") {
		numero = $("hdn2_"+pagina).value;		
	}
	AguardeBotaoImagem("", imagem, true);
	AjaxInclude('usuario_lista.php?pagina='+numero+"&caixa="+caixa, div);
}

/*--------------------------------------------------------------------------------------------*/
// Esqueci a Senha
/*--------------------------------------------------------------------------------------------*/
function ValidaEsqueciSenha() {
	var params = "opcao=senha";
		
	if (($("txt_email").value == "") && ($("txt_login").value == "")) {
		$("txt_email").focus();
		LiFocus($("txt_email"), "erro", "Informe o E-mail ou o Login para receber sua senha.");
		return;
	}
	
	params += "&email=" + escape($("txt_email").value);
	params += "&login=" + escape($("txt_login").value);

	AguardeBotaoImagem("bt_gravar", "img_aguarde_senha", true);	
	var ajax = new AJAX();
	ajax.url = "usuario_trata.php";
	ajax.metodo = "POST";
	ajax.params = params;	
	ajax.retorno = function(retorno) {
		AguardeBotaoImagem("bt_gravar", "img_aguarde_senha", false);
		switch(retorno) {
			case "email_invalido":
				$("txt_email").focus();
				LiFocus($("txt_email"), "erro", "Este e-mail não está cadastrado no sistema.");
				break;
			case "login_invalido":
				$("txt_login").focus();
				LiFocus($("txt_login"), "erro", "Este login não está cadastrado no sistema.");
				break;				
			case "OK":
				EsqueciSenha(false);
				alert("Sua senha foi enviada com sucesso! Aguarde um instante e verifique sua caixa de e-mail.");
				break;
			default:
				alert("ERRO NO ENVIO!");
				break;
		}
	}
	ajax.conectar();
}

// Exibe a tela pra receber a senha
function EsqueciSenha(sim) {
	var div = "div_form_usuario";
	if (sim) {
		AjaxInclude('usuario_senha.php',div);
		Effect.Appear(div);
	} else {
		Effect.Fade(div);
		div.innerHTML = "";
	}
}

/*--------------------------------------------------------------------------------------------*/
// Cadastro de Mensagens
/*--------------------------------------------------------------------------------------------*/
function ValidaMensagem(opcao) {
	var params = "opcao=" + opcao;

	if ($("txt_nome_msg").value == "") {
		$("txt_nome_msg").focus();
		LiFocus($("txt_nome_msg"), "erro", "Informe o seu nome");
		return;
	}
	if ($("text_msg").value == "") {			
		$("text_msg").focus();
		LiFocus($("text_msg"), "erro", "Escreva a sua mensagem");
		return;
	}
	
	params += "&nome=" + escape($("txt_nome_msg").value);
	params += "&mensagem=" + escape($("text_msg").value);
	
	AguardeBotaoImagem("bt_enviar_msg", "img_aguarde_msg", true);
	var ajax = new AJAX();
	ajax.url = "msg_trata.php";
	ajax.metodo = "POST";
	ajax.params = params;	
	ajax.retorno = function(retorno) {
		AguardeBotaoImagem("bt_enviar_msg", "img_aguarde_msg", false);
		ExibeFormMensagem(false);
		ListaMensagens('');
	}
	ajax.conectar();
}

// Exibe o formulário para envio de mensagens
function ExibeFormMensagem(sim) {
	var div = "div_form_mensagem";
	if (sim) {
		AguardeBotaoImagem("", "img_aguarde_caixa5", true);
		AjaxInclude('msg_form.php',div);
		Effect.Grow(div);
	} else {		
		Effect.Fade(div);
		div.innerHTML = "";
	}
}

// lista de mensagens na página inicial
// pagina: primeira, anterior, proxima, ultima
function ListaMensagens(pagina) {
	var numero = 0;	
	if (pagina != "") {
		numero = $("hdn3_"+pagina).value;
		
	}
	AguardeBotaoImagem("", "img_aguarde_caixa5", true);
	AjaxInclude('msg_lista.php?pagina='+numero, 'div_mensagem_lista');
}

// Exibe o <select> de campos dos formulários do usuário
function SelectMeusCampos(formulario_id) {
	var div = "div_sel_campo";
	if (formulario_id == "") {
		$(div).innerHTML = "<select><option>&nbsp;</option></select>";
	} else {
		AguardeBotaoImagem("bt_gravar", "img_aguarde_form", true);
		AjaxInclude("select_campos.php?formulario="+formulario_id, div);
	}
}

// seleciona a linha quando o checkbox for marcado
// NÃO ESTÁ SENDO USADA
function MarcaLinha() {
	for (j = 0; j < grid.getRowsNum(); j++){
		marcado = grid.cells2(j,0).isChecked();
		grid.selectRow(j, marcado, true);
	}
}

// Função para excluir registros do banco de dados
function ExcluiRegistro() {	
	var conta = 0;
	var marcados = new Array();
	var hiddens;	
	var checks = $N("chk_resposta");
	var marcou = false;
	var params = "opcao=excluir_resposta";
	params += "&formulario=" + $("hdn_formulario_id").value;
	for (i = 0; i < checks.length; i++) {
		if (checks[i].checked) {
			marcou = true;
			hiddens = $N("hdn_resposta_"+checks[i].value);
			for (j = 0; j < hiddens.length; j++) {
				params += "&resposta[]=" + hiddens[j].value;
			}
			marcados[conta] = checks[i].parentNode.parentNode;;
			conta++;
		}
	}
	
	if (!marcou) {
		alert("Marque o(s) registro(s) que deseja excluir.");
		return;
	}
	if (!confirm("Confirma a exclusão dos registros marcados?")) {return;}
	
	AguardeBotaoImagem("bt_excluir_reg", "img_aguarde_reg", true);
	var ajax = new AJAX();
	ajax.url = "form_trata.php";
	ajax.metodo = "POST";
	ajax.params = params;	
	ajax.retorno = function(retorno) {
		AguardeBotaoImagem("bt_excluir_reg", "img_aguarde_reg", false);		
		// retira linhas excluídas da tabela
		for (i = 0; i < marcados.length; i++) {
			$('table_relatorio').deleteRow(marcados[i].rowIndex);
		}		
		alert("Registro(s) excluído(s) com sucesso!");
	}
	ajax.conectar();	
}


// Exporta relatório para CSV
function ExportarCSV(nome, id_tabela) {
	var tabela, trs, tds, cols, val, params;	
	var form = $('frm_csv');
	
	if ($(id_tabela) == undefined) {
		alert('Nenhum dado disponível para exportação. Verifique se o relatório foi gerado corretamente.');
	} else {
		tabela = $(id_tabela).getElementsByTagName("tbody")[0]; // pra funcionar no IE e FF
		trs = tabela.getElementsByTagName('tr');
		tam = trs[0].getElementsByTagName('td').length; // qtd de colunas
		
		// não considerar colunas ocultas
		cols = -1; // começa em -1 para evitar a coluna do checkbox
		for (i = 0; i < tam; i++) {
			if (trs[0].getElementsByTagName('td')[i].style.display != 'none') {
				cols++
			}
		}	
		//params = "?nome="+nome+"&cols="+cols;		
				
		// criando iframe e os campos
		if ($('iframe_csv') == undefined) {

			// criando hidden com o nome
			var h = document.createElement("input");
			h.setAttribute("type","hidden");
			h.setAttribute("name","nome");
			h.setAttribute("value",nome);
			form.appendChild(h);
		
			// criando hidden com o qts de colunas
			var h = document.createElement("input");
			h.setAttribute("type","hidden");
			h.setAttribute("name","cols");
			h.setAttribute("value",cols);
			form.appendChild(h);		

			// linhas da tabela
			for (i = 0; i < trs.length; i++) {
				tds = trs[i].getElementsByTagName('td');
				for (j = 1; j < tds.length; j++) { // começa em 1 para evitar a coluna do checkbox
					if (tds[j].style.display != 'none') { // não considerar td ocultas
						if (tds[j].innerText) {// IE
							val = tds[j].innerText;
						} else {// FF
							val = tds[j].textContent;
						}
						if (val == undefined) {val = '';}
						//params += "&val[]="+val;
						// criando hidden com o texto das <td>
						var h = document.createElement("input");
						h.setAttribute("type","hidden");
						h.setAttribute("name","val[]");
						h.setAttribute("value",val);
						form.appendChild(h);
					}
				}
			}

			// criando iframe
			var iframe = document.createElement("iframe");
			iframe.setAttribute("id","iframe_csv");
			iframe.setAttribute("name","iframe_csv");
			iframe.setAttribute("width","0");
			iframe.setAttribute("height","0");
			iframe.setAttribute("border","0");
			iframe.setAttribute("style","display:none; width:0; height:0; background-color:white; border:none;");

			// adicionando ao formulário
			form.parentNode.appendChild(iframe);
			window.frames['iframe_csv'].name = "iframe_csv"; //seta o nome pra funcionar no ie			

			// enviando o formulario
			form.setAttribute("target", "iframe_csv");
			form.setAttribute("action", "exporta_csv.php");
			form.setAttribute("method","post");
		}
		form.submit();
	}
}

//--------------------------------------------------------------------------------------------------------------------------------------------------------------------
// ColorPicker
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------
function ColorPickerAdd(id) {
	new Control.ColorPicker("cp_value_"+id, { "swatch":"cp_botao_"+id, IMAGE_BASE:"images/colorpicker/", onClose:function(){AlteraCor(id);} });
}

function AlteraCor(id) {
	var obj = $("cp_obj_"+id).value;
	var cor = "#" + $("cp_value_"+id).value;
	var style = $("cp_style_"+id).value;
	switch(style) {
		case "background":
			$(obj).style.backgroundColor = cor;
			break;
		case "color":
			$(obj).style.color = cor;
			break;
		case "borda":
			$(obj).style.borderColor = cor;
			break;			
	}	
}