function get_texto_editor(){	
	return getTextoEditor('textoHidden');
}

function getTextoEditor(id) {
	var obj = $("#" + id).val();
	return (obj == undefined || obj == 'undefined') ? '' : obj;
}

jsonElements = new Array();

function enviar_arquivos_assinados_parcial(indice, indice_part, part_element) {
	if(jsonElements[indice] == undefined)
	{
		jsonElements[indice] = new Array();
	}
	jsonElements[indice][indice_part] = part_element;	
}

function envio_arquivos_bloquiar()
{
	bloquear_generico('Enviando arquivos, por favor aguarde...');	
}

function validar_campos_obrigatorios_applet()
{	
	codigo = document.mainForm.codDescricao.value;
	descricao = document.mainForm.descricao.value;	
	if(codigo != undefined){	
		if(codigo == -1) {			
			return false;	
		}
		if( (codigo == 1) && (descricao == '') ) {			
			return false;
		}		
	}
	return true;	
}

function avisar_campos_obrigatorios_applet()
{
	codigo = document.mainForm.codDescricao.value;
	descricao = document.mainForm.descricao.value;
	if(codigo != undefined){	
		if(codigo == -1) {			
			alert("É necessário informar a descrição do arquivo para digitar o texto.");	
		}
		if( (codigo == 1) && (descricao == '') ) {			
			alert("No caso da seleção de descrição de arquivo: 'Outros' é necessário digitar/informar uma descrição manualmente.");
		}		
	}
}

function processar_arquivos()
{
	bloquear_generico('Processando arquivos, por favor aguarde...');
	limparFormMultiPart();
}

function bloquear_generico(mensagem)
{			
	$.blockUI({	     
     message: '<h1>' + mensagem + '<img src=\'/projudi/imagens/loading_black.gif\'/></h1>',
     css: {
    	 font: 'italic bold 10px verdana, arial, sans-serif',    	 
    	 border: 'none',
         padding: '10px',
         backgroundColor: 'black', 
         '-webkit-border-radius': '10px', 
         '-moz-border-radius': '10px', opacity: .5,
         color: '#fff'
     }
	});	
}

function desbloquear_generico()
{	
	$.unblockUI();
	limparFormMultiPart();
}

function enviar_arquivo_editor_texto(link){
	var action = link;	
	removerAvisos();
	criarFormMultipart(action, jsonElements, true);	
	$('#formEnviarArquivo').ajaxSubmit( {
		iframe:true,
		success : function(data) {
			desbloquear_generico();
			data = filtrarSomenteJson(data);
			erro = avalia_condicao_erro(data);			
			if(!erro){
				$("[name=mainForm]").submit();
			}else{
				
			}
		}, 
		error : function(XMLHttpRequest, textStatus, errorThrown) {
			desbloquear_generico();	
			mostrarDialog(XMLHttpRequest.responseText);
		}
	});
}


/**
 * Códigos de Retorno: 1 - Processado completo 2 - Processado parcial 2.1 -
 * arquivos que deram problema 3 - Nada processado
 * 
 * ret: {opCode: 1, listaArquivo:[{nomeArquivo: 'yada'}]} envio:
 * {transmissaoArquivo: {}}
 */
function enviar_arquivos_assinados(link) {
	var action = link;	
	removerAvisos();
	criarFormMultipart(action, jsonElements, false);	
	$('#formEnviarArquivo').ajaxSubmit( {
		iframe:true,		
		success : function(data) {			
			desbloquear_generico();			
			data = filtrarSomenteJson(data);
			
			montarListaDinamicamente(data);
			reajustarIndices();
		}, 
		error : function(XMLHttpRequest, textStatus, errorThrown) {
			desbloquear_generico();			
			mostrarDialog(XMLHttpRequest.responseText);
		}
	});
}

/**
 * Códigos de Retorno: 1 - Processado completo 2 - Processado parcial 2.1 -
 * arquivos que deram problema 3 - Nada processado
 * 
 * ret: {opCode: 1, listaArquivo:[{nomeArquivo: 'yada'}]} envio:
 * {transmissaoArquivo: {}}
 */
function enviar_arquivos_assinados_mode_download(link) {
	var action = link;
	criarFormMultipartModeDownload(action, jsonElements);	
	$('#formEnviarArquivo').ajaxSubmit( {
		iframe:true, 
		success : function(data) {
			desbloquear_generico();
			data = filtrarSomenteJson(data);			
			if(data == 'OK')
			{
				alert("Arquivos assinados com sucesso.");
				fechar();
			}
			else
			{
				montarListaDinamicamenteModeDownload(data);
			}
		}, 
		error : function(XMLHttpRequest, textStatus, errorThrown) {
			desbloquear_generico();			
			mostrarDialog(XMLHttpRequest.responseText);
		}
	});
}

function filtrarSomenteJson(data) // gato
{	
	inicio = data.indexOf("<body>");
	fim = data.indexOf("</body>");	
	if(inicio == -1) {
		inicio = data.indexOf("<BODY>");
	}	
	if(fim == -1) {
		fim = data.indexOf("</BODY>");
	}	
	return data.substring(inicio+6, fim);	
}

function criarFormMultipart(url_action, jsonElements, isEditor) {
	$('body').appendDom( [ {
		tagName : 'form',
		id : 'formEnviarArquivo',
		method : 'POST',
		action : url_action,
		enctype : 'multipart/form-data',
		childNodes : [ {
			tagName : 'input',
			type : 'text',
			name : 'codDescricao',
			id : 'codDescricao',
			style : 'display: none',
			value : document.mainForm.codDescricao.value
		}, {
			tagName : 'input',
			type : 'text',
			name : 'descricao',
			id : 'descricao',
			style : 'display: none',
			value : document.mainForm.descricao.value
		} ]
	} ]);
	
	if(isEditor)
	{
		$('#formEnviarArquivo').appendDom( [ {
			tagName : 'input',
			type : 'text',
			name : 'arquivoEditado',
			id : 'arquivoEditado',
			style : 'display: none',
			value : 'true'
		} ]);
	}
	
	for (i = 0; i < jsonElements.length; i++) {
		var elemento_completo = '';
		for (j = 0; j < jsonElements[i].length; j++) {
			elemento_completo += jsonElements[i][j]; 
		}				
		$('#formEnviarArquivo').appendDom( [ {
			tagName : 'textarea',			
			name : 'transmissaoArquivo',
			id : 'transmissaoArquivo',
			style : 'display: none',
			value : elemento_completo
		} ]);
	}

}

function criarFormMultipartModeDownload(url_action, jsonElements) {
	$('body').appendDom( [ {
		tagName : 'form',
		id : 'formEnviarArquivo',
		method : 'POST',
		action : url_action,
		enctype : 'multipart/form-data'		
	} ]);	
		
	for (i = 0; i < jsonElements.length; i++) {
		var elemento_completo = '';
		for (j = 0; j < jsonElements[i].length; j++) {
			elemento_completo += jsonElements[i][j]; 
		}				
		$('#formEnviarArquivo').appendDom( [ {
			tagName : 'input',
			type : 'hidden',
			name : 'transmissaoArquivo',
			id : 'transmissaoArquivo',
			value : elemento_completo
		} ]);
	}
}

function limparFormMultiPart() {
	$("#formEnviarArquivo").remove();
	jsonElements = new Array();
}

function excluir_arquivo_assinado_selecionado(indice) {
	var action = '/projudi/assinatura/ManipularArquivosAssinados';
	removerAvisos();
	bloquear_generico('Excluindo arquivo, por favor aguarde...');		
	$.ajax({
        type: "POST",
        async: false,
        dataType: "json",
        url: action,
        data: "exclusao=true" + "&indice=" + indice,
        success: function(retorno){
			removerTr('trIndice' + indice);	
			desbloquear_generico();				
			if(retorno == 0 || retorno == null){
				esconderDivFinalizacao();
			}
        },
        error : function(XMLHttpRequest, textStatus, errorThrown) {
        	desbloquear_generico();			
			mostrarDialog("Erro ao excluir o arquivo.");
		}
      });		
}

function montarListaDinamicamente(data) {
	var tokens = data.split("#");	
	var array;
	try{
		if($.trim(data)) { // em caso de os dados não existirem (nem mensagem de
							// erro nem resultados)
			if(tokens.length  == 1)
			{
				array = eval('(' + tokens[0] + ')');
			}
			else if(tokens.length == 2)
			{
				array = eval('(' + tokens[0] + ')'); // primeiro vem sucesso
			} 
		} else { 
			array = {};
		}
	}
	catch(erroScript)
	{		
		mostrarDialog(data);
	}
	var tr_ultima = pega_class_ultima_tr();
	var tr_branca = 'tBranca';
	var tr_cinza = 'tCinza';
	var lista_erros = '';
	if (tr_ultima == '') {
		tr_ultima = tr_branca;
	} else {
		if (tr_ultima == tr_branca) {
			tr_ultima = tr_cinza;
		} else {
			tr_ultima = tr_branca;
		}
	}
			
	if (array.arquivosJson != undefined && array.arquivosJson.length != 0) {
		mostrarDivFinalizacao();
		$.each(array.arquivosJson, function(i_arquivo, val_arquivo) {			
			adiciona_linha_arquivo(val_arquivo.descricao, val_arquivo.tipo,
					val_arquivo.nome, val_arquivo.indice, tr_ultima);
			if (tr_ultima == tr_branca) {
				tr_ultima = tr_cinza;
			} else {
				tr_ultima = tr_branca;
			}
		});
	}
	avalia_condicao_erro(data);
}

function avalia_condicao_erro(data)
{
	var tr_branca = 'tBranca';
	var tr_cinza = 'tCinza';
	var tr_ultima;
	var tokens = data.split("#");	
	var array;	
	if($.trim(data)) { // em caso de os dados não existirem (nem mensagem de
						// erro nem resultados)
		if(tokens.length  == 1)
		{
			array = eval('(' + tokens[0] + ')'); // se tiver só um pode ser
													// erro
		}
		else if(tokens.length == 2)
		{
			array = eval('(' + tokens[1] + ')'); // segundo sempre é erro
		}
	} else { 
		array = {};
	}
	
	
	if (array != undefined && array.erros != undefined) {
		var tipoIndividual = 1; // <%=ErroJson.INDIVIDUAL%>;
		var tipoGenerico = 2;// <%=ErroJson.GENERICO%>;
		var tem_tipo_individual = false;
		var tem_tipo_generico = false;
		tr_ultima = tr_branca;
		var estruturaHtmlErroIndividual = ''
				+ '<h3 style="color: red;"><strong>Verifique os seguintes erros</strong><h3>'
				+ '<table border="1" align="center" cellspacing="0">'
				+ '<tr class="primeiraLinha">' + '<td>Nome do arquivo</td>'
				+ '<td>Descrição do erro</td>' + '</tr>';
		var estruturaHtmlErroGenerico = ''
				+ '<h3 style="color: red;"><strong>Verifique os seguintes erros</strong><h3>'
				+ '<table border="1" align="center" cellspacing="0">'
				+ '<tr class="primeiraLinha">' + '<td>Descrição do erro</td>'
				+ '</tr>';
		$.each(array.erros, function(i_erro, val_erro) {
			if (val_erro.tipo == tipoIndividual) {
				tem_tipo_individual = true;
				linha = adicionar_linha_erro_individual(val_erro.erro,
						val_erro.nomeArquivo, tr_ultima);
				estruturaHtmlErroIndividual += linha;
			}
			if (tr_ultima == tr_cinza) {
				tr_ultima = tr_branca;
			} else {
				tr_ultima = tr_cinza;
			}
		});
		tr_ultima = tr_branca;
		$.each(array.erros,
				function(i_erro, val_erro) {
					if (val_erro.tipo == tipoGenerico) {
						tem_tipo_generico = true;
						linha = adicionar_linha_erro_generico(val_erro.erro,
								tr_ultima);
						estruturaHtmlErroGenerico += linha;
					}
					if (tr_ultima == tr_cinza) {
						tr_ultima = tr_branca;
					} else {
						tr_ultima = tr_cinza;
					}
				});
		estruturaHtmlErroIndividual += '</table>';
		estruturaHtmlErroGenerico += '</table>';
		if (tem_tipo_generico && tem_tipo_individual) {
			mostrarDialog(estruturaHtmlErroGenerico
					+ estruturaHtmlErroIndividual);
		} else if (tem_tipo_generico && !tem_tipo_individual) {
			mostrarDialog(estruturaHtmlErroGenerico);
		} else if (!tem_tipo_generico && tem_tipo_individual) {
			mostrarDialog(estruturaHtmlErroIndividual);
		}		
	}	
	if(array != undefined && array.erros != undefined)
	{
		if(array.erros != '')
			return true;
		else
		{
			return false;
		}
	}
	else
	{
		return false;
	}	
}


function montarListaDinamicamenteModeDownload(data) {	
	var tr_branca = 'tBranca';
	var tr_cinza = 'tCinza';
	var tr_ultima;
	var tokens = data.split("#");	
	var array;	
	if(tokens.length  == 1)
	{
		array = eval('(' + tokens[0] + ')');
	}
	else if(tokens.length == 2)
	{
		array = eval('(' + tokens[1] + ')'); // depois vem erro
	}
	
	if (array.erros != undefined) {
		var tipoIndividual = 1; // <%=ErroJson.INDIVIDUAL%>;
		var tipoGenerico = 2;// <%=ErroJson.GENERICO%>;
		var tem_tipo_individual = false;
		var tem_tipo_generico = false;
		tr_ultima = tr_branca;
		var estruturaHtmlErroIndividual = ''
				+ '<h3 style="color: red;"><strong>Verifique os seguintes erros</strong><h3>'
				+ '<table border="1" align="center" cellspacing="0">'
				+ '<tr class="primeiraLinha">' + '<td>Nome do arquivo</td>'
				+ '<td>Descrição do erro</td>' + '</tr>';
		var estruturaHtmlErroGenerico = ''
				+ '<h3 style="color: red;"><strong>Verifique os seguintes erros</strong><h3>'
				+ '<table border="1" align="center" cellspacing="0">'
				+ '<tr class="primeiraLinha">' + '<td>Descrição do erro</td>'
				+ '</tr>';
		$.each(array.erros, function(i_erro, val_erro) {
			if (val_erro.tipo == tipoIndividual) {
				tem_tipo_individual = true;
				linha = adicionar_linha_erro_individual(val_erro.erro,
						val_erro.nomeArquivo, tr_ultima);
				estruturaHtmlErroIndividual += linha;
			}
			if (tr_ultima == tr_cinza) {
				tr_ultima = tr_branca;
			} else {
				tr_ultima = tr_cinza;
			}
		});
		tr_ultima = tr_branca;
		$.each(array.erros,
				function(i_erro, val_erro) {
					if (val_erro.tipo == tipoGenerico) {
						tem_tipo_generico = true;
						linha = adicionar_linha_erro_generico(val_erro.erro,
								tr_ultima);
						estruturaHtmlErroGenerico += linha;
					}
					if (tr_ultima == tr_cinza) {
						tr_ultima = tr_branca;
					} else {
						tr_ultima = tr_cinza;
					}
				});
		estruturaHtmlErroIndividual += '</table>';
		estruturaHtmlErroGenerico += '</table>';
		if (tem_tipo_generico && tem_tipo_individual) {
			mostrarDialog(estruturaHtmlErroGenerico	+ estruturaHtmlErroIndividual);
		} else if (tem_tipo_generico && !tem_tipo_individual) {
			mostrarDialog(estruturaHtmlErroGenerico);
		} else if (!tem_tipo_generico && tem_tipo_individual) {
			mostrarDialog(estruturaHtmlErroIndividual);
		}		
	}
}

function mostrarDialog(html) {
	$(document).ready(function() {
		var $dialog = $('<div></div>').html(html).dialog( {
			autoOpen : false,
			title : 'Aviso',					
			modal: true,
			buttons: {
				Ok: function(){
					$(this).dialog("close");
				}
			}
		});
		$dialog.dialog('open');
		return false;
	});
}

function pega_class_ultima_tr() {
	var ultima = '';
	$("#pontoEntradaJquery tr").each(function() {
		ultima = $(this).attr("class");
	});
	return ultima;
}

function removerTr(nomeTr) {
	$("#" + nomeTr).remove();
	reajustarIndices();
}

function removerAvisos() {
	div = $("#idAvisos");
	if(div != undefined)
	{
		div.remove();
	}
}

function adiciona_linha_arquivo(descricao, tipo, nome, indice, class_tr) {	
	$("#pontoEntradaJquery").appendDom(
		[{
			tagName : 'tr',
			'class' : class_tr,
			id : 'trIndice' + indice,
			childNodes : [
					{
						tagName : 'td',
						align : 'center',
						innerHTML : descricao
					},
					{
						tagName : 'td',
						align : 'center',
						innerHTML : tipo
					},
					{
						tagName : 'td',
						align : 'center',
						id: 'idNomeArquivo',
						innerHTML : nome
					},
					{
						tagName : 'td',
						align : 'center',
						style : 'text-align:center',
						childNodes : [												
						     {
				            	  tagName : 'a',
				            	  href: 'javascript:excluirIndice(\'' + indice + '\',\'' +nome + '\')',
				            	  id: 'linkAcao',				            	  
				            	  childNodes : [												
									     {
									    	 tagName : 'img',
									    	 alt: 'Excluir',
									    	 border: '0',
									    	 src: '/projudi/imagens/botoes/delete.png'
									     }]														     
				             } ]									
					} ]
		} ]);
}

function excluirIndice(idx, nome) {
	if (confirm('Confirma exclusao do arquivo: ' + nome + '?')) {
		excluir_arquivo_assinado_selecionado(idx);
	}
}

function reajustarIndices() {
	var indice = 0;
	$("#pontoEntradaJquery tr").each(function() {		
		link = $(this).find("#linkAcao");		
		nomeArquivo = $(this).find("#idNomeArquivo").text();
		nomeArquivo = $.trim(nomeArquivo);
		funcao = new String(link.attr("href"));		
		if (funcao != 'undefined') {
			link.removeAttr("href");			
			link.attr("href", "javascript:excluirIndice('" + indice + "','" + nomeArquivo + "');");
			$(this).attr("id", "trIndice" + indice);			
			indice++;
		}
	});
}

function adicionar_linha_erro_individual(erro, nome_arquivo, class_tr) {
	return '<tr class="' + class_tr + '">' + '<td>' + nome_arquivo + '</td>'
			+ '<td>' + erro + '</td>' + '</tr>';
}

function adicionar_linha_erro_generico(erro, class_tr) {
	return '<tr class="' + class_tr + '">' + '<td>' + erro + '</td>' + '</tr>';
}

function esconderDivFinalizacao(){
	if($("#conteudoFinalizacao") != undefined){
		$("#conteudoFinalizacao").hide();
		$("#id_urgencia").hide();
	}
	if($("#botaoFinalizacao") != undefined){
		$("#botaoFinalizacao").hide();
	}
}

function mostrarDivFinalizacao(){
	if($("#conteudoFinalizacao") != undefined){
		$("#conteudoFinalizacao").show();
		$("#id_urgencia").show();		
	}
	if($("#botaoFinalizacao") != undefined){
		$("#botaoFinalizacao").show();
	}
}

function enviar_arquivo_ja_assinado(classForm)
{	
	nomeArquivo = $('#filename').val();
	tokens = nomeArquivo.split('.');
	if(tokens[tokens.length-1] != 'p7s'){
		alert('Somente arquivos com a extensão p7s(assinados) podem ser enviados.');
		return false
	}		
	codigo = document.mainForm.codDescricao.value;
	descricao = document.mainForm.descricao.value;
				
	var form = $('.' + classForm);	
	if($(":input[id=filename]").val() == '')
	{
		alert('Por favor, selecione o arquivo antes.');
		return false;
	}
	
	if(codigo != undefined){	
		if(codigo == -1) {			
			alert("É necessário informar a descrição do arquivo para digitar o texto.");
			return false;
		}
		if( (codigo == 1) && (descricao == '') ) {			
			alert("No caso da seleção de descrição de arquivo: 'Outros' é necessário digitar/informar uma descrição manualmente.");
			return false;
		}
	}
	
	bloquear_generico('Enviando arquivo, por favor aguarde...');	
	$(form).attr('action', '/projudi/assinatura/ManipularArquivosAssinados');
	$(":input[id=arquivoJaAssinado]").val('true');
	removerAvisos();
	$(form).ajaxSubmit( {
		iframe:true,
		success : function(data) {
			desbloquear_generico();			
			data = filtrarSomenteJson(data);			
			montarListaDinamicamente(data);
			reajustarIndices();
		}, 
		error : function(XMLHttpRequest, textStatus, errorThrown) {
			desbloquear_generico();			
			mostrarDialog(XMLHttpRequest.responseText);
		}
	});	
	return false;
}
