/***************************************************************************************
 * Copyright (c) 2001, NeoGrid S/A.  Todos os direitos reservados. 
 *
 * Os Programas desta Aplicação (que incluem tanto o software quanto a sua documentação) 
 * contém informações proprietárias da NeoGrid S/A; eles são licenciados de acordo   com 
 * um contrato de licença contendo restrições de uso e confidencialidade, e  são  também 
 * protegidos pela Lei 9609/98 e 9/610/98, respectivamente Lei do  Software  e  Lei  dos 
 * Direitos Autorais. Engenharia reversa, descompilação e desmontagem dos programas  são 
 * proibidos. Nenhuma parte destes  programas pode ser  reproduzida  ou  transmitida  de 
 * nenhuma forma e por nenhum meio, eletrônico ou mecânico,  por  motivo  algum,  sem  a 
 * permissão escrita da NeoGrid S/A.
 **************************************************************************************/
var NG_VERSION = "$PRODUCTVERSION$2.00$COMPONENTVERSION$0005$"
//-- ** início variáveis de config de interface
bname=navigator.appName
intervalPendencias = 2500; //milissegundos
colorOverSubMenuTr = '';
colorOverTr = '';
colorSelectedTr = '';
colorOver = '';
//-- ** fim variáveis de config de interface


function loadVars() {
	/*
	 * procura no arquivo de estilos de schema de cores os estilos correspondentes 
	 * ao evento para setá-los no JavaScript
	 * VARIÁVEL-JS            | ESTILO-CSS
	 *	colorOverSubMenuTr    |  td.submenuover
	 *	colorOverTr           |  tr.tablecontentover
	 *	colorSelectedTr       |  tr.tablecontentselected
	 */
	if (!document.styleSheets) return;
	var cssCollection = new Array();
	var idcss = 6;
	// mais sobre o objeto styleSheets em http://www.quirksmode.org/dom/changess.html	
	if (document.styleSheets.length > 2){
	if (document.styleSheets[idcss].cssRules)
		cssCollection = document.styleSheets[idcss].cssRules;
	else if (document.styleSheets[idcss].rules)
		cssCollection = document.styleSheets[idcss].rules;
	else return;
	//alert(cssCollection.length);
	for (var h=0; h<cssCollection.length; h++) {
		//alert(cssCollection[h].selectorText);
		cssRule = cssCollection[h].selectorText.toLowerCase();
		if (cssRule=='td.submenuover') {
			var bkg = cssCollection[h].style.backgroundColor;
			colorOverSubMenuTr = bkg.replace(" ","");
			continue;
		}
		if (cssRule=='tr.tablecontentover') {
			var bkg = cssCollection[h].style.backgroundColor;
			colorOverTr = bkg.replace(" ","");
			continue;
		}
		if (cssRule=='tr.tablecontentselected') {
			var bkg = cssCollection[h].style.backgroundColor;
			colorSelectedTr = bkg.replace(" ","");
			continue;
		}
		if (cssRule=='a:hover') {
			var bkg = cssCollection[h].style.color;
			colorOver = bkg.replace(" ","");
			colorOver = colorOver.replace(" ","");
			continue;
		}
	}//if
	}//if
}



//-- ** início criação de variável para lista de pendências
idpend=0;
arPend = new Array();
/*
 . carregar lista de pendencias - deve estar no HEAD de cada página. Exemplo:
 .	i=0;
 .	arPend[(i++)]="Existem 3 Pendências";
 .	arPend[(i++)]="5 Novos Contatos";
 .	arPend[(i++)]="10 tarefas em aberto";
 */
//-- ** fim criação de variável para lista de pendências


//-- ** início das funções de LOAD
window.onload=loadWindow;
function loadWindow() {
	/*
	 * função para chamar eventos de onload da window
	 */
	changePendenciasTxt();
	preloadAll();
	loadVars();
}
function changePendenciasTxt() {
	/*
	 * Faz a troca de mensagens na área de pendências no
	 * cabeçalho da central do usuário. Lista de Pendências 
	 * deve ser carregada na própria página, no array arPend[].
	 */
	div=document.getElementById("pendenciasTxt");
	if (arPend.length>0) {
		if (idpend>=arPend.length) {
			idpend=0;
		}
		div.innerHTML = '[<strong>'+(idpend+1)+'</strong>/'+arPend.length+'] '+arPend[idpend];
		idpend++;
		setTimeout("changePendenciasTxt()",intervalPendencias);
	} else {
		if (div != null) {
			div.innerHTML = readyMessage;
		}
	}
}

function addFileSize(){
	div=document.getElementById("pendenciasTxt");
	if (div !=null){
		if (calculateFileSize() > -1){ 
			div.innerHTML += " (";
			div.innerHTML += formatKbSize(calculateFileSize());
			div.innerHTML += ") ";			
		}//if	
	}//if
}

function preloadAll() {
	/*
	 * loop no collection images[] para fazer preload das imagens
	 * e setar ações de over nas imagens que possuem a propriedade
	 * image.srcOver
	 */
	var imgs=document.images;
	var p=0;

	if (!document.imgPreloads)
		document.imgPreloads=new Array();
	if (imgs) {
		for (k=0; k<imgs.length;k++) {
			if (imgs[k].srcOver != null) {
				document.imgPreloads[p] = new Image;
				document.imgPreloads[p].src = imgs[k].srcOver;
				imgs[k].onmouseover = img_mouse_over;
				imgs[k].onmouseout = img_mouse_out;
				p++;
			}
		}
	}
}
//-- ** fim das funções de LOAD


//-- ** início das funções de over
function img_mouse_over() {
	objImg = this;
	objImg.srcRegular = objImg.src;
	objImg.src = objImg.srcOver;
}
function img_mouse_out() {
	objImg = this;
	objImg.src = objImg.srcRegular;
}
//-- ** fim das funções de over

var mTdAberto = false;
var mTd = new Array(6);
for (var xi = 0; xi < mTd.length; xi++){
  mTd[xi] = false;
}//for

function mostrarQuandoAberto(index){
  if (mTdAberto){
    mostrar("td_"+index);
  }//if
}

function mostrarTd(index){
  mTd[index] = !mTd[index];
  if (mTd[index]) {
    mostrar("td_"+index);
    mTdAberto = true;
  } else {
    ocultar();
  }//if  
}

//-- ** início das funções para exibir/ocultar submenu
/*
 * Função que exibe o menu conforme o ID passado por parâmetro
 * Ex.: chamada de função mostrar("div_3_3_1");
 * Serão exibidos os objetos com os seguintes IDs div_3, div_3_3 e div_3_3_1
 * Por isso é necessário uma ter lógica na nomenclatura dos IDs, levando em conta o nível e ordem.
 * A função também chama outras três funções:
   - ocultar();
   - mostrarSubs(divname,tdname);
   - ocultarSelect(par);
*/
function mostrar(id)
{
	ocultar();
	divname = "div";
	tdname = "td";
	id = id.split("_");
	divname = divname + "_" + id[1];
	tdname = tdname + "_" + id[1];
	div = document.getElementById(divname);
	if (div){
  	dim = getDimension(document.getElementById(tdname));
  	div.style.visibility = "visible";
  	div.style.left = dim.esq;
  	div.style.top = dim.topo;
  	// Variável que armazena os parâmetros que que serão passados para a função ocultarSelect();
  	par = dim.topo + ";" + dim.esq + ";" + div.offsetWidth + ";" + div.offsetHeight;
  	for (i=2;i<id.length;i++) {
  		tdname = tdname + "_" + id[i];
  		divname = divname + "_" + id[i];
  		if (document.getElementById(tdname) && document.getElementById(divname)){
  		  par = par + "|" + mostrarSubs(divname,tdname);
  		}//if
  	}
	tags = document.getElementsByTagName("select"); 
	for (i=0;i<tags.length;i++) {
		tags[i].style.visibility = "hidden";
	}  	
  	//ocultarSelect(par);
  }
}

function getDimension(cElement)
{
	topo = cElement.offsetHeight;
	esq = 0;
	while ((cElement != null) && (cElement.tagName.toLowerCase() != "html")) {
		topo += cElement.offsetTop;
		esq += cElement.offsetLeft;
		cElement = cElement.offsetParent;
	}
	return new Dimension(topo,esq);
}

function Dimension(topo,esq)
{
	this.topo = topo;
	this.esq = esq;
}

/*
 * Função que oculta todos os menus e submenus
 * Lembrando que os IDs receberão uma nomenclatura especial
 * Pois só serão ocultados os DIVs que tiverem o ID começado em "div_"
*/
function ocultar(where)
{
	tags = document.getElementsByTagName("select"); 
	for (i=0;i<tags.length;i++) {
		tags[i].style.visibility = "visible";
	}
	div = document.getElementsByTagName("div");
	for (i=0;i<div.length;i++) {
		if (div[i].id.substr(0,4) == "div_") {
			document.getElementById(div[i].id).style.visibility = "hidden";
		}
	}
  if (where == "body"){
    mTdAberto = false;		
  }//if  
}

/*
 * Função que oculta os SELECTs que sobrepõem o menu
 * É executado somente quando o browser for IE
*/
function ocultarSelect(par)
{
	if (document.all) {
		par = par.split("|");
		ponto_x = new Array(0,0,0,0);
		ponto_y = new Array(0,0,0,0);
		for (i=0;i<par.length;i++) {
			dim = par[i].split(";");
			x1 = dim[1];
			xn = parseInt(dim[1]) + parseInt(dim[2]);
			y1 = dim[0];
			yn = parseInt(dim[0]) + parseInt(dim[3]);
			tags = document.getElementsByTagName("select");
			for (j=0;j<tags.length;j++) {
				ponto_x[0] = tags[j].offsetLeft;
				ponto_x[1] = tags[j].offsetLeft + tags[j].offsetWidth;
				ponto_x[2] = tags[j].offsetLeft;
				ponto_x[3] = tags[j].offsetLeft + tags[j].offsetWidth;
				ponto_y[0] = tags[j].offsetTop;
				ponto_y[1] = tags[j].offsetTop;
				ponto_y[2] = tags[j].offsetTop + tags[j].offsetHeight;
				ponto_y[3] = tags[j].offsetTop + tags[j].offsetHeight;
				for (k=0;k<4;k++) {
					if ((ponto_y[k] >= y1) && (ponto_y[k] <= yn) && (ponto_x[k] >= x1) && (ponto_x[k] <= xn)) {
						tags[j].style.visibility = "hidden";
						break;
					}
				}
			}
		}
	}
}

/*
 * Função que exibe o submenu conforme o ID e o TD passado por parâmetro
 * A função calcula o posicionamento do submenu conforme o parâmetro TD
 * Retorna o posicionamento e a dimensão do submenu exibido separados por ";"
*/
function mostrarSubs(divname,tdname)
{
	topo = 0;
	esq = 0;
	td = document.getElementById(tdname);
	while(td.tagName.toLowerCase() != "html") {
		topo += td.offsetTop;
		esq += td.offsetLeft;
		if (td.offsetParent) td = td.offsetParent;
		else break;
	}
	esq += document.getElementById(tdname).offsetWidth + 2
	div = document.getElementById(divname);
	div.style.visibility = "visible";
	div.style.left = esq;
	div.style.top = topo;
	return topo + ";" + esq + ";" + div.offsetWidth + ";" + div.offsetHeight;
}
//-- ** fim das funções para exibir/ocultar submenu


function tasksFiltroHideShow() {
	/*
	 * Central do usuário: oculta Filtro das tarefas ou exibe caso ela já esteja oculta
	 */
	divFiltro = document.getElementById("tasksFiltro");
	btnHideShow = document.getElementById("btnTasksFiltroHideShow");
	if (divFiltro.style.display=='none') {
		divFiltro.style.display='inline';
		btnHideShow.value='Ocultar Filtro';
	} else {
		divFiltro.style.display='none';
		btnHideShow.value='Mostrar Filtro';
	}
}


//-- ** início das funções de over para a tabela
function overTr(obj_tr) {
	/*
	 * destaca a TR informada caso sua cor não seja a cor igual à <colorSelectedTr>
	 */
	if (colorSelectedTr != "") {
		var bkg = obj_tr.style.backgroundColor;
		if (bkg.replace(" ","") != colorSelectedTr) {
			obj_tr.style.backgroundColor = colorOverTr;
			for (var i=0; i<obj_tr.parentNode.childNodes.length; i++){
				var node = obj_tr.parentNode.childNodes[i];							
				if (node != null) if (node.style != null) node.style.backgroundColor = colorOverTr;
			}//for
		}
	}
	/*
	 * função para exibir TollTip - detalhamento da tarefa
	 */
	linha=obj_tr.childNodes;
	for (var i=0; i<linha.length; i++) {
		if (linha[i].nodeName.toLowerCase()=='td') {
			if (linha[i].hasChildNodes()) {
				celula = linha[i].childNodes;
				for (var j=0; j<celula.length; j++) {
					if (celula[j].nodeName.toLowerCase()=='div') {
						celula[j].style.visibility='visible';
						celula[j].style.display='inline';
						break;
					}
				}
			}
		}
	}
}
function outTr(obj_tr) {
	/*
	 * retira o destaque do objeto TR informado
	 */
	if (colorSelectedTr != "") {
		var bkg = obj_tr.style.backgroundColor;
		obj_tr.styleName = 'odd';
		if (bkg.replace(" ","") != colorSelectedTr) {
			obj_tr.style.backgroundColor = '';
			for (var i=0; i<obj_tr.parentNode.childNodes.length; i++){
				var node = obj_tr.parentNode.childNodes[i];											
				if (node != null) if (node.style != null) node.style.backgroundColor = '';
			}//for
		}
	}

	/*
	 * oculta o ToolTip - detalhamento da tarefa
	 */
	for (var i=0; i<linha.length; i++) {
		if (linha[i].nodeName.toLowerCase()=='td') {
			if (linha[i].hasChildNodes()) {
				celula = linha[i].childNodes;
				for (var j=0; j<celula.length; j++) {
					if (celula[j].nodeName.toLowerCase()=='div') {
						celula[j].style.visibility='hidden';
						celula[j].style.display='none';
						break;
					}
				}
			}
		}
	}
}
//-- ** fim das funções de over para a tabela


function selectTr(obj_check) {
	/*
	 * função para destacar a TR que possui o CHECKBOX informado
	 */
	if (colorSelectedTr != "") {
		if (obj_check.checked == true) {
			//colorir tr
			for (var i=0; i<obj_check.parentNode.parentNode.childNodes.length; i++){
				var node = obj_check.parentNode.parentNode.childNodes[i];							
				node.style.originalColor = node.style.backgroundColor;
				node.style.backgroundColor = colorSelectedTr;
			}//for
		} else {
			//descolorir tr
			for (var i=0; i<obj_check.parentNode.parentNode.childNodes.length; i++){
				var node = obj_check.parentNode.parentNode.childNodes[i];									
				node.style.backgroundColor = node.style.originalColor;
			}//for
		}
	}
}

//-- ** início das funções do submenu

// Função que altera a cor da fonte, recebendo o ID do objeto como parâmetro
function overColor(id)
{
  var idelem = document.getElementById(id);
  if (idelem){
    var style = idelem.style;
    if (style){
      style.color = colorOver;
    }//if
  }//if
  //document.getElementById(id).style.color = colorOver;
}

// Função que altera a cor da fonte, recebendo o ID do objeto como parâmetro
function outColor(id)
{
  var idelem = document.getElementById(id);
  if (idelem){
    var style = idelem.style;
    if (style){
      style.color =  "#000000";
    }//if
  }//if
  //document.getElementById(id).style.color = "#000000";
}

// Função que redireciona a página conforme HREF e TARGET do objeto que tem o ID passado por parâmetro
function onLink(id)
{
	// O TARGET não está funcionando - está sendo estudada uma solução
	var idelem = document.getElementById(id);
	if (idelem){
		if (idelem.target) window.location.target = idelem.target;
		if (idelem.href) window.location.href = idelem.href;
	}//if	
}

// Função que altera a TITLE de uma TD conforme TITLE do objeto A passado por parâmetro
function onAlt(objeto,id)
{
  var idelem = document.getElementById(id);
  if (idelem){
  	if (document.getElementById(id).title != "" && document.getElementById(id).title != "undefined") {
  		objeto.title = document.getElementById(id).title;
  	}//if
  }//if
}

function overSubMenuTr(obj_tr) {
	obj_tr.style.backgroundColor = 	colorOverSubMenuTr;
}

function outSubMenuTr(obj_tr) {
	obj_tr.style.backgroundColor = 'transparent';
}

//-- ** fim das funções do submenu























