//---------------------------------------------------------------------
// Posicao
// Rotinas de uso geral em javascript.
//
//---------------------------------------------------------------------
var __AtualizarJanelaDeCadastro = false; 
var myimages = new Array();


/* 
 * Exibe a tela de Help redimensionando a tela 
 * de acordo ao valor 'largura' passado na chamada.
 * A tela ExibirHelp.aspx já esta configurada para ao fechar
 * voltar o tamanho normal da pagina que a chamou.
 * OBS: É necessario ter uma pasta 'ajuda/ onde a pagina irá
 * buscar os arquivos html de ajuda.
 * Danilo Souza, 28-12-2006 
 */
function exibirHelp(largura){				
	var paramUrl = 'ajuda/' + window.location.pathname.replace('/','').replace('.aspx','.html').replace(/[/]/g,'_');						
	var eixoX = (screen.width - largura);
	var parametros = 'toolbar=no, scrollbars=no, top=0px, left=' + (eixoX-10) + ', width=' + largura + ', height=' + screen.height;
			
	resizeTo(eixoX, screen.height);																									
	window.open('../Console/ExibirHelp.aspx?url=' + paramUrl, 'Ajuda', parametros);				
}


//inverte a propriedade display
function alteraDisplayDoDIV(divId) {				
	var div = document.getElementById(divId);				
	if(div.style.display=='none') {
		div.style.display='';
	}
	else {
		div.style.display='none';
	}
}

//Habilita todos os controles do formulário para edição.
function enableControls(form){
	for(var i=0; i < form.elements.length ; i++){
		var controle = form.elements[i];
		var tipo = controle.type.toUpperCase();
		if(!(tipo=="HIDDEN" || tipo=="BUTTON" || tipo=="SUBMIT"))
			controle.readOnly = false;	
	}
}

//Desabilita todos os controles da página para edição.		
function disableControls(form){
	for(var i=0; i < form.elements.length ; i++){
		var controle = form.elements[i];
		var tipo = controle.type.toUpperCase();
		if(!(tipo=="HIDDEN" || tipo=="BUTTON" || tipo=="SUBMIT"))
			controle.readOnly = true;	
	}
}

//abre janela de cadastro.
function abrirJanelaDeCadastro( url, nome, width, height ) {
	ft = 'width=$w$, height=$h$, toolbar=no, scrollbars=no, status=yes';
	ft = ft.replace( '$w$', width );
	ft = ft.replace( '$h$', height );
	nome = nome.replace( /-/g, '');
	nome = nome.replace( /{/g, '');			

	// centralizando janela na tela
	var centroW = (screen.availWidth/2) - (width/2);
	var centroY = (screen.availHeight/2) - (height/2);
	ft = ft + ',left=' + centroW + ', top=' + centroY;

	w = window.open( url, 'popcad' + nome, ft );
}


//Utilizado como função trim em outras linguagens
///Remove espaços da esquerda e da direita.
function removerEspacos(valor) {
	return valor.replace(/(^\s*)|(\s*$)/g,''); 
}




///Retorna se o controle está ok.
///Utiliza os validadores do DOTNET
function validarControle(controle) {
	
	if(!controle.Validators) return true;
	
	//valido campo
	for (var i=controle.Validators.length-1;i>=0; i--){
		var val = controle.Validators[i];
		ValidatorValidate(val);
		if(!val.isvalid)
			return false;	
	}

	return true;
}

// atualiza a página quando o usuário pressiona CTRL+T ou CTRL+t
function eventoAtualizarConsulta() {
	if (window.event.ctrlKey && (window.event.keyCode == 20 || window.event.keyCode == 84))
		__doPostBack('lnkAtualizar','');
}


// simula o pressionamento do botao 'Aplicar', quando o usuario pressiona F12
// F12 só é pega no onkeydown (não funciona no onkeypress)
function eventoBotaoAplicar() {
	if (window.event.keyCode == 123) {
		if (typeof(Page_ClientValidate) == 'function') {
			Page_ClientValidate();	
		}
	}
}


// retorna true se o valor digitado for um número
function ehNumero() {
	// um número é definido como o código ASCii de 48 a 57
	var numero = (window.event.keyCode >= 48 && window.event.keyCode <= 57);

	if (numero)
		return true;
	return false;
}


// Se elemento visível, esconde; se escondido, exibe
function MostrarEsconderElemento(id) {
	var elemento = document.getElementById(id)
	if(elemento.style.display == 'none' || elemento.style.display == '')
		elemento.style.display = 'inline';
	else
		elemento.style.display = 'none';
}

// coloca o foco no primeiro item do formulário.
function focoNoPrimeiroItemDoForm() {
	// o campo nao estiver visivel, dá erro
	try {
		var f = document.forms[0];
		for (i=0;i<f.length;i++) {
			if (f[i].type == "text" || f[i].type == "textarea" || f[i].type.toString().charAt(0) == 's') {
				f[i].focus();
				break;
			}
		}
	} catch(er) {}
}

/* desabilita botao, se a validação não detectar erros
 * usado para impedir que o usuário clique várias vezes no botao de 
 * submit enquanto o formulário é postado.
 * As funções e variáveis externas aqui usadas estão definidas no arquivo:
 *		\aspnet_client\system_web\1_1_4322\WebUIValidation.js
 *		e neste arquivo.
 *
 * Daniel Medeiros, 04-05-2004 
 */
function DesabilitaBotaoSubmit() {
	try {
		// varre todos os validadores da página
		for (var i = 0; i < Page_Validators.length; i++) {
			// verifica a validade de cada um, setando um booleano 
			// (true/false) na propriedade isvalid 
			ValidatorValidate(Page_Validators[i]);
		}

		// varre os validadores, verificando algum deles não é valido 
		// (pela propriedade isvalid de cada um).
		// por fim, seta Page_IsValid com o valor dessa verificação (true/false)
		ValidatorUpdateIsValid();

		// desabilita botão se formulário foi preenchido corretamente
		if (Page_IsValid) {
			desabilitarBotoes();
		}
	} catch(er) {
		// se a pagina nao tiver validador
		desabilitarBotoes();
	}
}

// desabilita os botoes do formulário
function desabilitarBotoes() {
	for (i=0;i<document.forms[0].length;i++) {
		if(document.forms[0][i].type=="button") {
			document.forms[0][i].disabled=true;
		}
	}
}


// faz preload das imagens passadas por parametro
// usa variavel global: myimagems
function preloadimages(){
	for (i=0;i<preloadimages.arguments.length;i++){
		myimages[i]=new Image();
		myimages[i].src=preloadimages.arguments[i];
	}
}

// Altera imagem de Salvar (disquete), no evento onchange de um campo, ou 
// quando um pop-up retorna um valor para a janela-pai
function Alterou() {
	try {
		var janela, alterado
		if (this.window.name == 'myDialog') {
			alterado = window.opener.document.forms[0].elements["__Alterado"];
			janela = window.opener;
		} else {
			alterado = window.document.forms[0].elements["__Alterado"];
			janela = window;
		}

		if(alterado){
			alterado.value = 1;
			var imgAlterado = janela.document.getElementById('imgDadosAlterados');
			imgAlterado.src = '../../Images/Console/popup/icdadosAlterados.gif';
			imgAlterado.alt = janela.mensagemDadosAlterados;
		}
	} catch(er) {}
}


// Limpa os controles do form, um a um
function limpar() {
	frm = document.forms[0];
	for (i=0;i<frm.length;i++) {
		switch(frm[i].type) {
			case "text":
				frm[i].value="";
				break;
			case "checkbox":
				frm[i].checked=0;
				break;
			case "select-one":
				frm[i].options.selectedIndex = 0;
				break;
			case "textarea":
				frm[i].value = "";
				break;
			case "radio":
				if (frm[i].value == "")
					frm[i].checked = true;
				else
					frm[i].checked = false;
				break;
		}
	}
}

// formata um campo texto para possuir valores entre 0 e 100
function validarPorcentagem(field) {
	if (isNaN(field.value))
		field.value = 0;
	else
		if (field.value > 100)
			field.value = 100;
}


/* retorna a posicao de uma janela de dado tamanho na tela, 
para ficar alinhada no centro (eixos x ou y) */
function centro(size, eixo) {
	switch(eixo) {
		case 'y':
			if (size==null)	size=211;
			return ((screen.availHeight/2) - (size/2));
		case 'x':
			if (size==null)	size=450;
			return ((screen.availWidth/2) - (size/2));
		default:
			return -1;
	}
}


/* addOption
 * se o option ainda não existir no combo, adiciona-o
 * combo -- objeto <SELECT> que terá o <OPTION> a ser inserido
 * val -- valor do <OPTION>
 * text -- texto do <OPTION>
 ******************************************************************/
function addOption(combo, val, text) {
	if (!optionExists(combo, val, text)) {
		combo.options[combo.options.length] = new Option(text, val);
	}
}

/* optionExists
 * verifica se um option existe no combo
 * combo -- objeto <SELECT> cujos options serão verificados
 * val -- valor do <OPTION> a procurar
 * text -- texto do <OPTION> a procurar
 * retorna -- true se o option for encontrado; false se não for
 ****************************************************************************/
function optionExists(combo, val, text) {
	for(var i=0; i<combo.length; i++) {
		if (combo.options[i].text == text && combo.options[i].value == val) {
			return true;
		}
	}
	return false;
}

/* removeOption
 * remove o option selecionado do combo (somente exclui um selecionado por vez)
 ******************************************************************************/
function removeOption(combo) {
	// i é o indice do option selecionado; -1 se não
	var i = combo.selectedIndex;

	if (i > -1) {
		combo.options[i] = null;	// remove combo
		// seleciona novo option
		while (i > -1) {
			/* uso while e este if para o caso de o ultimo option do combo 
			 ter sido apagado */
			if (combo.options[i]) {
				combo.options.selectedIndex = i;
				break;
			}
			i--;
		}
	}
}

// Determine browser and version.

function Browser() {

  var ua, s, i;

  this.isIE    = false;
  this.isNS    = false;
  this.version = null;

  ua = navigator.userAgent;

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  // Treat any other "Gecko" browser as NS 6.1.

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }
}

var BrowserAtual = new Browser();

// Converte caracteres $#xxx; para caracteres legíveis para seres humanos
// Fabio Nascimento Brandão (13/11/2006)
function converterUtf8(texto) {
	var textoarray = texto.split('&#');
	var textoarray2;
	var textofinal = '';
	var textoconvertido;
	var i;
	var j;
	var inicio = 0;

	// Se o texto não começa com '&#', então a primeira posição do array não é uma letra que deve ser convertida
	if (texto.indexOf('&#') >= 1 || texto.indexOf('&#') == -1) {
		// Não parseia a letra
		textofinal = textoarray[0];
		// Começa da segunda posição
		inicio = 1;
	}
	
	// Para cada parte de texto separado por '&#'
	for (i = inicio; i < textoarray.length; i++) {
		// Separa por ';'
		textoarray2 = textoarray[i].split(';');

		// Se foi quebrado em duas partes ou mais, parseia
		if (textoarray2.length >= 2) {
			textoconvertido = String.fromCharCode(textoarray2[0]);
			
			// Se conseguiu converter o texto
			if (textoconvertido.charCodeAt(0) != 0) {
				textofinal = textofinal + textoconvertido;
			} else {
				// Senão, joga o texto devolta para a string final
				textofinal = textofinal + '&#' + textoarray2[0] + ';';
			}
			
			// Varre o resto, jogando no final da string
			for (j = 1; j < textoarray2.length; j++) {
				textofinal = textofinal + textoarray2[j];
			}
		} else if (textoarray[i] != 0) {
			// Senão e se não for 'nulo', não tem ponto e vírgula
			textofinal = textofinal + '&#' + textoarray[i];
		}
	}

	return textofinal;	
}

function alerta(texto) {
	alert(converterUtf8(texto));
}
