
/*
REGRAS PARA A UTILIZAÇÃO DE BOTÕES
- NOME DO CHECKBOX DEVE SER IGUAL AO NOME DO FORMULARIO. EX. Nome do Formulario: formCliente, nome do check: fIdCliente[]

*/

function alteraImagem(sForm,sBotao,nStatus){
	var form = document.getElementById(sForm);
	var nChecados = retornaChecados(form,sForm.replace('form',''));
	var oBotao = document.getElementById(sBotao);
	var oAjuda = document.getElementById(sForm.replace('form','ajuda'));
	var nTipo = oBotao.id.substr(oBotao.id.length-1,1);

	// ALTERA OS ÍCONES (ATIVO/INATIVO) DE ACORDO COM O TIPO
	// CASO O TIPO FOR 1 SÓ DESTACARÁ O ÍCONE CASO SÓ HAJA UM CHECK MARCADO
	// CASO O TIPO FOR 2 SÓ DESTACARÁ O ÍCONE CASO HAJA ALGUM CHECK MARCADO
	if(((nTipo == 1) && (nChecados != 1)) || ((nTipo == 2) && (nChecados == 0)) || ((nTipo == 0) && (nChecados != 0)))
		oBotao.src = oBotao.src.replace(/_\d.gif/,'_0.gif');
	else
		oBotao.src = oBotao.src.replace(/_\d.gif/,'_'+nStatus+'.gif');

// ESCREVE O TEXTO DE AJUDA
	if(oAjuda != null)
		oAjuda.innerHTML = '&nbsp;&nbsp;&nbsp;'+recuperaAjuda(oBotao.id,nStatus);
	return;
}

function retornaChecados(form,sCategoria){
	var nChecados = 0;

	// RETORNA O NÚMERO DE CHECK'S MARCADOS
	for(var i = 0; i < form.elements.length; i++) {
		if(form.elements[i].name.indexOf(sCategoria) > 0) 
			if(form.elements[i].checked)
				nChecados++;
	}
	return nChecados;
}

function atualizaImagens(sForm,sCategoria){
	var form = document.getElementById(sForm);
	var tabelaIcones = document.getElementById(sForm.replace('form','icones'));
	var imagens = tabelaIcones.getElementsByTagName('img');
	var nChecados = retornaChecados(form,sCategoria);
	
	for(var i = 0; i < imagens.length; i++) {
		var nTipo = imagens[i].id.substr(imagens[i].id.length-1,1);
		
		// ALTERA OS ÍCONES (ATIVO/INATIVO) DE ACORDO COM O TIPO
		// CASO O TIPO FOR 1 SÓ DESTACARÁ O ÍCONE CASO SÓ HAJA UM CHECK MARCADO
		// CASO O TIPO FOR 2 SÓ DESTACARÁ O ÍCONE CASO HAJA ALGUM CHECK MARCADO
		if(((nTipo == 1) && (nChecados  != 1)) || ((nTipo == 2) && (nChecados  == 0)) || ((nTipo == 0) && (nChecados  != 0)))
			imagens[i].src = imagens[i].src.replace(/_\d.gif/,'_0.gif');
		else
			imagens[i].src = imagens[i].src.replace(/_\d.gif/,'_1.gif');

}
	return;
}

function alteraTodos(sForm){
	var form = document.getElementById(sForm);
	var nQtd = nQtdChecados = 0;
	// CONTA O NÚMERO DE CHECK'S MARCADOS
	for(var i = 0; i < form.elements.length; i++) {
		if(form.elements[i].type == 'checkbox')
			nQtd++;
			if(form.elements[i].checked)
				nQtdChecados++;
	}
	// CASO HAJA CHECK(S) DESMARCADO(S) MARCA TODOS, CASO CONTRÁRIO DESMARCA TODOS
	for(var i = 0; i < form.elements.length; i++) {
			form.elements[i].checked = (form.elements.length != nQtdChecados) ? true : false;
	}
	return;
}

function submeteForm(sForm,sBotao,sDestino){
	var form = document.getElementById(sForm);
	var oBotao = document.getElementById(sBotao);

// SUBMETE O FORMULÁRIO CASO O ÍCONE ESTEJA ATIVO
	if(oBotao.src.match(/_\d.gif/) != '_0.gif'){
		form.action = sDestino;
		form.target = '_self';
		form.submit();
	}
	return;	
}

function submeteFormPopup(sForm,sBotao,sDestino){
	var form = document.getElementById(sForm);
	var oBotao = document.getElementById(sBotao);
	
	// SUBMETE O FORMULÁRIO CASO O ÍCONE ESTEJA ATIVO
	if(oBotao.src.match(/_\d.gif/) != '_0.gif'){
		form.action = sDestino;
		form.target = '_blank';
		form.submit();
	}
	return;	
}

function recuperaAjuda(sImagem,nStatus){
	if(nStatus == 1)
		return '';
	if(sImagem.indexOf('Frete') > 0)
		return "Gerenciar dados do Orçamento";
	if(sImagem.indexOf('Inativo') > 0)
		return "Cancelar Pedido";
	if(sImagem.indexOf('CadastrarEmpresa') > 0)
		return "Cadastrar empresa";
	if(sImagem.indexOf('Cadastrar') > 0)
		return "Cadastrar";
	if(sImagem.indexOf('Detalhe') > 0)
		return "Visualizar Detalhe";
	if(sImagem.indexOf('Editar') > 0)
		return "Editar"; 
	if(sImagem.indexOf('Excluir') > 0)
		return "Excluir";
	if(sImagem.indexOf('Permissao') > 0)
		return "Gerenciar Permissões";
	if(sImagem.indexOf('Bloquear') > 0)
		return "Bloquear e-mail";
	return;
}

// ORDENA A TABELA
/*function ordenaTabela(sIdTabela,sCampoId,nPosicaoId,nTitulo,vTabela,nColuna,sTipoOrdenamento,sHrefLink) {
	// CONFIGURAÇÃO ESPECÍFICA
	var sDiretorioImagens = '/si/imagens/';
	var sEstiloTrPadrao = 'destaque2';
	var sEstiloTrDestaque = 'destaque1';
	var sEstiloTituloPadrao = 'th';
	var sEstiloTituloDestaque = 'thDestaque';
	var sEstiloTrDestaque = 'destaque1';
	var sEstiloCheck = 'check';
	
	var oTabela = document.getElementById(sIdTabela);
	var oImagem = document.getElementById(sIdTabela.replace('tabela','imagemOrdenacao')+nColuna);
	var oColunaTitulo = document.getElementById(sIdTabela.replace('tabela','coluna')+nColuna);
	var vSrc = oImagem.src.split('/');
	var sOrdenacao = '';
	
	// LIMPA A TABELA QUE SERÁ REORDENADA
	reiniciaTabela(oTabela,nTitulo);
	
	// DESTACA O TÍTULO DA COLUNA A SER ORDENADA ALTERANDO O FUNDO DA COLUNA
	oColunaTitulo.className = sEstiloTituloDestaque;
	
	// ALTERA A IMAGEM QUE INDICA A ORDENAÇÃO DA COLUNA
	switch(vSrc[vSrc.length-1]) {
		case 'desordenado.gif':
			sOrdenacao = 'decrescente';
			oImagem.src = sDiretorioImagens + 'ordenado_decr.gif';
		break;
		case 'ordenado_decr.gif':
			sOrdenacao = 'crescente';
			oImagem.src = sDiretorioImagens + 'ordenado_cres.gif';
		break;
		case 'ordenado_cres.gif':
			sOrdenacao = 'decrescente';
			oImagem.src = sDiretorioImagens + 'ordenado_decr.gif';
		break;
	}

	// CHAMA O MÉTODO ADEQUADO DE ORDENAÇÃO, DE ACORDO COM O TIPO DE DADO DA COLUNA
	switch(sTipoOrdenamento) {
		case 'numerico':
			vTabela = ordenaVetorNumerico(vTabela,nColuna,sOrdenacao);
		break;
		case 'string':
			vTabela = ordenaVetorString(vTabela,nColuna,sOrdenacao);
		break;
		case 'data':
			vTabela = ordenaVetorData(vTabela,nColuna,sOrdenacao);
		break;
	}
	
	// CRIA AS LINHAS DA TABELA
	for(var nLinha = 0; nLinha < vTabela.length; nLinha++) {
		var nQtdColunas = vTabela[nLinha].length;
		var oTr = oTabela.insertRow(nTitulo);
		
		oTr.className = sEstiloTrPadrao;
		
		oTr.onmouseover = function() {
			destacaLinha(this,sEstiloTrDestaque); 
		}
		oTr.onmouseout = function() {
			destacaLinha(this,sEstiloTrPadrao);
		}
		
		// CASO TENHA CHECKBOX
		if(nPosicaoId >= 0) {
			var oCheck = document.createElement("input");
			oCheck.type = "checkbox";
			oCheck.name = sCampoId;
			oCheck.value = vTabela[nLinha][nPosicaoId];
			oCheck.className = sEstiloCheck;
			oCheck.onclick = function() {
				atualizaImagens(sIdTabela.replace('tabela','form'),sIdTabela.replace('tabela',''));
			}
		}
		
		// INSERE AS COLUNAS
		for(var nNovaColuna = nQtdColunas-1; nNovaColuna > 0; nNovaColuna--) {
			var oTd = oTr.insertCell(0);
			
			if(nNovaColuna == 1 && nPosicaoId >= 0)
				oTd.appendChild(oCheck);
			else {
				
				//INSERE O LINK NAS COLUNAS
				if(sHrefLink != ''){
					var oLink = document.createElement("a");
					var sLink = '?';
					var vVariaveis = vTabela[nLinha][nQtdColunas-1].split('&');
					for(var nVariavel = 0; nVariavel < vVariaveis.length; nVariavel++) {
						var vVariavel = vVariaveis[nVariavel].split('=');
						sLink += vVariavel[0]+ '=' +vVariavel[1];
						sLink += '&';
					}
					oLink.href = sHrefLink + sLink;
					oLink.appendChild(document.createTextNode(vTabela[nLinha][nNovaColuna-1].replace('&nbsp;','')));
					oTd.appendChild(oLink);
				} else
					oTd.appendChild(document.createTextNode(vTabela[nLinha][nNovaColuna-1].replace('&nbsp;','')));
			}
		}
	}
	
	// OCULTA AS IMAGENS DAS COLUNAS QUE NÃO ESTÃO SENDO USADAS PARA ORDERNAR
	ocultaImagemOrdenacao('imagemOrdenacao'+sIdTabela.replace('tabela',''),nColuna,nQtdColunas,sDiretorioImagens);
	
	// RETIRA O DESTAQUE DAS COLUNAS QUE NÃO ESTÃO SENDO USADAS PARA ORDERNAR
	retiraDestaqueTitulo(sIdTabela.replace('tabela',''),nColuna,nQtdColunas,sEstiloTituloPadrao);	
	return;
}*/
//FUNÇÃO RESPONSÁVEL POR VERIFICAR SE OS LINKS DENTRO DA TABELA SÃO POPUP
function verificaPopup(sIdTabela,nTitulo){
	var oTabela = document.getElementById(sIdTabela);
	//COMEÇANDO A PERCORRER AS LINHAS
	for(nLinha = nTitulo; nLinha < oTabela.rows.length; nLinha++){
		//PERCORRENDO COLUNAS DE CADA LINHA
		for(nCol = 0 ; nCol < oTabela.rows[nLinha].cells.length ; nCol++){
			//PARA CADA ELEMENTO HTML DENTRO DA COLUNA
			for(nFilho = 0 ; nFilho < oTabela.rows[nLinha].cells[nCol].childNodes.length; nFilho++){
				//SE FOR INPUT PEGA O VALOR, SE FOR O UM LINK, TRATA-SE ESTE LINK
				if(oTabela.rows[nLinha].cells[nCol].childNodes[nFilho].tagName == 'A') {
					if(oTabela.rows[nLinha].cells[nCol].childNodes[nFilho].target == "_blank")
						return true;
					else
						return false;
				}
			}
		}
	}
}
//FUNÇÃO RESPONSÁVEL POR CRIAR UM ARRAY COM TODO O CONTEÚDO DA TABELA Q SE VAI ORDENAR
function criaArrayDados(sIdTabela,nTitulo){
	var oTabela = document.getElementById(sIdTabela);
	var vTabela = new Array();
	var sVariavelLink = " ";
	//COMEÇANDO A PERCORRER AS LINHAS
	for(nLinha = nTitulo; nLinha < oTabela.rows.length; nLinha++){
		var vArray = new Array;
		//PERCORRENDO COLUNAS DE CADA LINHA
		for(nCol = 0 ; nCol < oTabela.rows[nLinha].cells.length ; nCol++){
			//PARA CADA ELEMENTO HTML DENTRO DA COLUNA
			for(nFilho = 0 ; nFilho < oTabela.rows[nLinha].cells[nCol].childNodes.length; nFilho++){
				//SE FOR INPUT PEGA O VALOR, SE FOR O UM LINK, TRATA-SE ESTE LINK
				if(oTabela.rows[nLinha].cells[nCol].childNodes[nFilho].tagName == 'INPUT'){
					vArray.push(oTabela.rows[nLinha].cells[nCol].childNodes[nFilho].value);
				} else if(oTabela.rows[nLinha].cells[nCol].childNodes[nFilho].tagName == 'A') {
					vVariavelLink = oTabela.rows[nLinha].cells[nCol].childNodes[nFilho].href.split('?');
					sVariavelLink = vVariavelLink[1];
					vArray.push(oTabela.rows[nLinha].cells[nCol].childNodes[nFilho].innerHTML);
				} else {
					vArray.push(oTabela.rows[nLinha].cells[nCol].innerHTML);
				}
			}
		}
		vArray.push(sVariavelLink);
		vTabela.push(vArray);
	}
	return vTabela;
}
// ORDENA A TABELA
function ordenaTabela(sIdTabela,sCampoId,nPosicaoId,nTitulo,nColuna,sTipoOrdenamento,sHrefLink) {
	var vTabela = criaArrayDados(sIdTabela,nTitulo);
	var bPopup = verificaPopup(sIdTabela,nTitulo);
	// CONFIGURAÇÃO ESPECÍFICA
	var sDiretorioImagens = '/controle/imagens/';
	var sEstiloTrPadrao = 'destaque2';
	var sEstiloTrDestaque = 'destaque1';
	var sEstiloTituloPadrao = 'th';
	var sEstiloTituloDestaque = 'thDestaque';
	var sEstiloTrDestaque = 'destaque1';
	var sEstiloCheck = 'check';
	
	var oTabela = document.getElementById(sIdTabela);
	var oImagem = document.getElementById(sIdTabela.replace('tabela','imagemOrdenacao')+nColuna);
	var oColunaTitulo = document.getElementById(sIdTabela.replace('tabela','coluna')+nColuna);
	var vSrc = oImagem.src.split('/');
	var sOrdenacao = '';
	
	// LIMPA A TABELA QUE SERÁ REORDENADA
	reiniciaTabela(oTabela,nTitulo);
	
	// DESTACA O TÍTULO DA COLUNA A SER ORDENADA ALTERANDO O FUNDO DA COLUNA
	oColunaTitulo.className = sEstiloTituloDestaque;
	
	// ALTERA A IMAGEM QUE INDICA A ORDENAÇÃO DA COLUNA
	switch(vSrc[vSrc.length-1]) {
		case 'desordenado.gif':
			sOrdenacao = 'decrescente';
			oImagem.src = sDiretorioImagens + 'ordenado_decr.gif';
		break;
		case 'ordenado_decr.gif':
			sOrdenacao = 'crescente';
			oImagem.src = sDiretorioImagens + 'ordenado_cres.gif';
		break;
		case 'ordenado_cres.gif':
			sOrdenacao = 'decrescente';
			oImagem.src = sDiretorioImagens + 'ordenado_decr.gif';
		break;
	}

	// CHAMA O MÉTODO ADEQUADO DE ORDENAÇÃO, DE ACORDO COM O TIPO DE DADO DA COLUNA
	switch(sTipoOrdenamento) {
		case 'numerico':
			vTabela = ordenaVetorNumerico(vTabela,nColuna,sOrdenacao);
		break;
		case 'string':
			vTabela = ordenaVetorString(vTabela,nColuna,sOrdenacao);
		break;
		case 'data':
			vTabela = ordenaVetorData(vTabela,nColuna,sOrdenacao);
		break;
	}
	
	// CRIA AS LINHAS DA TABELA
	for(var nLinha = 0; nLinha < vTabela.length; nLinha++) {
		var nQtdColunas = vTabela[nLinha].length;
		var oTr = oTabela.insertRow(nTitulo);
		
		oTr.className = sEstiloTrPadrao;
		
		oTr.onmouseover = function() {
			destacaLinha(this,sEstiloTrDestaque); 
		}
		oTr.onmouseout = function() {
			destacaLinha(this,sEstiloTrPadrao);
		}
		
		// CASO TENHA CHECKBOX
		if(nPosicaoId >= 0) {
			var oCheck = document.createElement("input");
			oCheck.type = "checkbox";
			oCheck.name = sCampoId;
			oCheck.value = vTabela[nLinha][nPosicaoId];
			oCheck.className = sEstiloCheck;
			oCheck.onclick = function() {
				atualizaImagens(sIdTabela.replace('tabela','form'),sIdTabela.replace('tabela',''));
			}
		}
		
		// INSERE AS COLUNAS
		for(var nNovaColuna = nQtdColunas-1; nNovaColuna > 0; nNovaColuna--) {
			var oTd = oTr.insertCell(0);
			
			if(nNovaColuna == 1 && nPosicaoId >= 0)
				oTd.appendChild(oCheck);
			else {
				
				//INSERE O LINK NAS COLUNAS
				if(sHrefLink != ''){
					var oLink = document.createElement("a");
					sVariaveis = vTabela[nLinha][nQtdColunas-1];
					oLink.href = sHrefLink + '?' + sVariaveis;
					if(bPopup)
						oLink.target = '_blank';
					oLink.appendChild(document.createTextNode(vTabela[nLinha][nNovaColuna-1].replace('&nbsp;','')));
					oTd.appendChild(oLink);
				} else
					oTd.appendChild(document.createTextNode(vTabela[nLinha][nNovaColuna-1].replace('&nbsp;','')));
			}
		}
	}
	
	// OCULTA AS IMAGENS DAS COLUNAS QUE NÃO ESTÃO SENDO USADAS PARA ORDERNAR
	ocultaImagemOrdenacao('imagemOrdenacao'+sIdTabela.replace('tabela',''),nColuna,nQtdColunas,sDiretorioImagens);
	
	// RETIRA O DESTAQUE DAS COLUNAS QUE NÃO ESTÃO SENDO USADAS PARA ORDERNAR
	retiraDestaqueTitulo(sIdTabela.replace('tabela',''),nColuna,nQtdColunas,sEstiloTituloPadrao);	
	return;
}

// ORDENA VETOR DE DATAS
function ordenaVetorData(vTabela,nColuna,sOrdenacao) {
	var vAux = Array();
	var vAux2 = Array();
	var vResultado = Array();
	var sCondicao = (sOrdenacao == 'crescente') ? "nDiaAnterior > nDiaPosterior" : "nDiaAnterior < nDiaPosterior";
	var nAux = 0;
	var nCount = 0;

	for(var i = 0; i < vTabela.length; i++){
		vAux.push(vTabela[i][nColuna]);
	}

	for(var i = 0; i < vAux.length; i++) {
		for(var j = vAux.length-1; j > i; j--) {
			var vDataHoraAnterior  = vAux[j-1].split(' ');
			var vDataHoraPosterior = vAux[j].split(' ');
			if(vDataHoraAnterior.length == 2) {
				var vDataAnterior  = vDataHoraAnterior[0].split('/');
				var vDataPosterior = vDataHoraPosterior[0].split('/');
				var vHoraAnterior  = vDataHoraAnterior[1].split(':');
				var vHoraPosterior = vDataHoraPosterior[1].split(':');
				var oDiaAnterior  = new Date(vDataAnterior[2],vDataAnterior[1],vDataAnterior[0],vHoraAnterior[0],vHoraAnterior[1],vHoraAnterior[2]);
				var oDiaPosterior = new Date(vDataPosterior[2],vDataPosterior[1],vDataPosterior[0],vHoraPosterior[0],vHoraPosterior[1],vHoraPosterior[2]);
			} else {
				var vDataAnterior  = vAux[j-1].split('/');
				var vDataPosterior = vAux[j].split('/');
				var oDiaAnterior  = new Date(vDataAnterior[2],vDataAnterior[1],vDataAnterior[0]);
				var oDiaPosterior = new Date(vDataPosterior[2],vDataPosterior[1],vDataPosterior[0]);
			}
			var nDiaAnterior  = oDiaAnterior.getTime();
			var nDiaPosterior = oDiaPosterior.getTime();

			if(eval(sCondicao)) {
				nAux = vAux[j];
				vAux[j] = vAux[j-1];
				vAux[j-1] = nAux;
			}				   
		}
	}

	for(var j = 0; j < vAux.length; j++) {
		for(var i = 0; i < vTabela.length; i++) {
			if(vTabela[i][nColuna] == vAux[j] && !in_array(i,vAux2)) {
				vResultado[nCount++] = vTabela[i];
				vAux2.unshift(i);
			}
		}
	}
	
	return vResultado;
}

// ORDENA VETOR DE STRINGS
function ordenaVetorString(vTabela,nColuna,sOrdenacao) {
	var vAux = Array(); 
	var vAux2 = Array();
	var vResultado = Array();
	var nCount = 0;
	for(var i = 0; i < vTabela.length; i++)
		vAux.push(vTabela[i][nColuna].toLowerCase());
	
	vAux.sort();
	
	if(sOrdenacao == 'decrescente')
		vAux.reverse();
	
	for(var j = 0; j < vAux.length; j++) {
		for(var i = 0; i < vTabela.length; i++) {
			if(vTabela[i][nColuna].toLowerCase() == vAux[j] && !in_array(i,vAux2)) {
				vResultado[nCount++] = vTabela[i];
				vAux2.unshift(i);
			}
		}
	}
	
	return vResultado;
}

// ORDENA VETOR DE NÚMEROS
function ordenaVetorNumerico(vTabela,nColuna,sOrdenacao) {
	var nAux = 0;
	var sCondicao = (sOrdenacao == 'crescente') ? "Number(vTabela[j-1][nColuna].replace('.','').replace(',','.').replace('&nbsp;','')) > Number(vTabela[j][nColuna].replace('.','').replace(',','.').replace('&nbsp;',''))" : "Number(vTabela[j-1][nColuna].replace('.','').replace(',','.')) < Number(vTabela[j][nColuna].replace('.','').replace(',','.'))";
	for(var i = 0; i < vTabela.length; i++) {
		for(var j = vTabela.length-1; j > i; j--) {
			if(eval(sCondicao)) {
				nAux = vTabela[j];
				vTabela[j] = vTabela[j-1];
				vTabela[j-1] = nAux;
			}
		}
	}
	return vTabela;
}

function in_array(xValor,vVetor) {
  var sTexto = "¬" + vVetor.join("¬") + "¬";
  var oReg = new RegExp ("¬" + xValor + "¬", "gim");
  return (sTexto.match(oReg)) ? true : false;
}

// LIMPA A TABELA QUE SERÁ REORDENADA
function reiniciaTabela(oTabela,nLinhaInicial) {
	var nLinhas = oTabela.rows.length - nLinhaInicial;

	for(var i = 0; i < nLinhas; i++) {
		oTabela.deleteRow(nLinhaInicial);
	}
	return;
}

// OCULTA AS IMAGENS DAS COLUNAS QUE NÃO ESTÃO SENDO USADAS PARA ORDERNAR
function ocultaImagemOrdenacao(sIdImagem,nColunaSelecionada,nQtdColunas,sDiretorioImagens) {
	for(var nCount = 0; nCount <= nQtdColunas; nCount++) {
		if(nCount != nColunaSelecionada) {
			var oImagem = document.getElementById(sIdImagem+nCount);
			if(oImagem != null)
				oImagem.src = sDiretorioImagens + 'desordenado.gif';
		}
	}
	return;
}

// RETIRA O DESTAQUE DAS COLUNAS QUE NÃO ESTÃO SENDO USADAS PARA ORDERNAR
function retiraDestaqueTitulo(sNomeColuna,nColunaSelecionada,nQtdColunas,sFundoPadrao) {
	for(var nCount = 0; nCount <= nQtdColunas; nCount++) {
		if(nCount != nColunaSelecionada) {
			var oColunaTitulo = document.getElementById('coluna'+sNomeColuna+nCount);
			if(oColunaTitulo != null)
				oColunaTitulo.className = sFundoPadrao;
		}
	}
	return;
}

function destacaLinha(oLinha,sEstilo){
	oLinha.className = sEstilo;
}


