var dgaID =  new Array();

function dbGrid(id){
	this.id = id;
	this.sOrd = null;
	this.sDir = null;
	this.sGrp = '';
	this.sGrpT = '';
	this.pIndex = null;
	this.pSize = null;
	this.ix = 0;
	this.sFields = new Array();
	this.sColumns = new Array();
	this.callAddr = '';
	this.selRows = new Array();
	this.isSubGrid = false;
	this.dbgForVal = 0;
	this.dbgParent = '';
	this.onBeforeRePage = '';
	this.onAfterRePage = '';
}

function addGrid(name,ord,dir,ix,ps,addr,grp,grpt){
	if(findGrid(name) == null){
		var g = new dbGrid(name)
		g.sOrd = ord;
		g.sDir = dir;
		g.pIndex = ix;
		g.pSize = ps;
		g.ix = dgaID.length;
		g.callAddr = addr;
		g.sGrp = grp;
		g.sGrpT = grpt;
		dgaID.push(g);
	}
}

function findGrid(name){
	for(var i = 0;i < dgaID.length;i++)
		if(dgaID[i].id == name)
			return dgaID[i];
	return null;
}

function dga_rmOver(value,row,grid){
	if(!dga_findRow(value,grid))
		row.className = 'dbgRowOver';
}

function dga_findRow(value,grid){
	var g = findGrid(grid);
	if(g)
		for(var i = 0;i < g.selRows.length;i++)
			if(value == g.selRows[i].value)
				return true;
	return false;
}

function dga_rmOut(value,row,css,grid){
	if(!dga_findRow(value,grid))
		row.className = css;
}

function dbgExport(formato,grid){
	status = 'EM TESTE';
}

function dga_DetShow(row,crow,css){
	if(bi.name != 'Netscape' && row)
		(row.style.display == 'block')?row.style.display = 'none':row.style.display = 'block';
}

function removeSelRow(or,valor){
	var n = new Array();
	for(var i = 0;i < or.length;i++)
		if(or[i].value != valor)
			n.push(or[i]);
	return n;
}

function dga_rClick(obj,row,css,grid){
	var g = findGrid(grid);
	var r = eval(row);
	var sel = false;
	for(var i = 0;i < g.selRows.length;i++){
		if(r[0].value == g.selRows[i].value){
			obj.className = css;
			sel = true;
		}
	}
	if(sel){
		g.selRows = removeSelRow(g.selRows,r[0].value);
	}else{
		g.selRows.push(r[0]);
		obj.className = 'dbgRowSelected';
	}
}

var tmrADS = null;
function dbgAdvanceSort(cmn,grid,ix,order,group,groupt){
	var g = findGrid(grid);
	if(g){
		var dsort = eval(grid+'GridHeadOptions');
		if(dsort){
			if(tmrADS)
				clearTimeout(tmrADS);
			dsort.style.left = moveXbySlicePos(cmn.clientWidth - 120,cmn);
			dsort.style.top = moveYbySlicePos(cmn.clientHeight,cmn);
			var inner = '<table width="100%" border="0" cellspacing="1" cellpadding="1" class="dbgADSortText">';
			if(order != '' || group != '')
				inner += '<tr><td colspan=2 style="height:25px;border-bottom:1px solid #333333;">';
			if(order != '')
				inner += '<a href="javascript:dbgCallBack(\'sort\','+ ix +',\''+ grid +'\');" style="float:left;">'+ order +'</a>';
			if(group != '')
				inner += '<a href="javascript:dbgCallBack(\'group\','+ ix +',\''+ grid +'\',\''+ groupt +'\');" style="float:right;">'+ group  +'</a>';
			if(order != '' || group != '')
				inner += '</td></tr>';
			//inner += '<tr><td colspan="2" style="height:5px;border-bottom:1px solid #333333;font-size:4px;">&nbsp;</td></tr>';
			var chk = '';
			for(var i = 0;i < g.sColumns.length;i++){
				if(g.sColumns[i].titulo != '&nbsp;'){
					(g.sColumns[i].show)?chk = 'checked':chk = '';
					(g.sColumns[i].fixed)?fix = 'disabled':fix = '';
					inner += '<tr><td width="15" valign="top"><input onClick="dbgChangeColumn(this,\''+ grid +'\','+ i +');" type="checkbox" name="'+grid+'campo" value="'+ i +'" '+ chk +' '+ fix +' /></td><td>'+ g.sColumns[i].titulo +'</td></tr>';
				}
			}
			inner += '</table>';

			dsort.innerHTML = inner;
			dsort.style.display = 'block';
			tmrADS = setTimeout('eval(\''+grid+'GridHeadOptions\').style.display = \'none\'',2500);
		}else{
			status = 'NO';
		}
	}
}

function dbgAddSearchField(campo,valor,grid){
	var g = findGrid(grid);
	var dados = eval('[{campo:\''+ campo +'\',valor:\''+ valor +'\'}]');
	g.sFields.push(dados[0]);
}

function dbgAddColumn(titulo,visible,fixed,grid,groupt){
	var g = findGrid(grid);
	if(g){
		var dados = eval('[{titulo:\''+ titulo +'\',ix:'+ g.sColumns.length +',show:false,fixed:false,groupt:\''+ groupt +'\'}]');
		dados[0].show = visible;
		dados[0].fixed = fixed
		g.sColumns.push(dados[0]);
	}
}

function dbgChangeColumn(obj,grid,ix){
	var g = findGrid(grid);
	if(g){
		var dsort = eval(grid+'GridHeadOptions');
		g.sColumns[ix].show = obj.checked;
		dbgCallBack('','',grid);
		dsort.style.display = 'none';
	}
}

function dbgSetSearchValue(campo,valor,grid){
	var g = findGrid(grid);
	for(var i = 0;i < g.sFields.length;i++)
		if(g.sFields[i].campo == campo)
			g.sFields[i].valor = valor;
}

function dbgCallBack(acao,valor,grid,valora){
	try{
		var params = '';
		var g = findGrid(grid);
		switch(acao){
			case 'pag':
				if(isNaN(valor)){
					if(valor == 'prev')
						g.pIndex = parseInt(g.pIndex) - 1;
					else if(valor == 'next')
						g.pIndex = parseInt(g.pIndex) + 1;
				}else{
					g.pIndex = parseInt(valor);
				}
				break;
			case 'rows':
				g.pIndex = 1;
				g.pSize = parseInt(valor);
				break;
			case 'sort':
				if(parseInt(g.sOrd) == parseInt(valor)){
					if(parseInt(g.sDir) == 0)
						g.sDir = 1;
					else
						g.sDir = 0;
				}else{
					g.sDir = 1;
				}
				g.sOrd = valor;
				break;
			case 'group':
				(g.sGrp == valor)?valor = '':valor = valor;
				g.sGrp = valor;
				g.sGrpT = valora;
				break;
		}
		
		var dsort = document.getElementById(grid+'GridHeadOptions');
		if(dsort)
			dsort.style.display = 'none';
		
		params += 'IsDBGCallBack=OK';
		params += '&dbgIX='+g.ix;
		params += '&dbgID='+g.id;
		params += '&sOrd='+g.sOrd;
		params += '&sDir='+g.sDir;
		params += '&sGrp='+g.sGrp;
		params += '&sGrpT='+g.sGrpT;
		params += '&pIndex=' + g.pIndex;
		params += '&pSize=' + g.pSize;
		for(var i = 0;i < g.selRows.length;i++)
			params += '&opv_selRow=opv_'+g.selRows[i].value;
		for(var i = 0;i < g.selRows.length;i++)
			params += '&selRow='+g.selRows[i].value;
		for(var i = 0;i < g.sFields.length;i++)
			params += '&' + g.sFields[i].campo + '=' + g.sFields[i].valor;
		for(var i = 0;i < g.sColumns.length;i++)
			if(g.sColumns[i].show)
				params += '&sClm=' + i;
		if(g.isSubGrid)
			params += '&dbgForVal='+g.dbgForVal;
		htcGet(g.callAddr,document.getElementById(g.id + 'Content'),true,params,'dbgRePage(result,\''+ g.id +'\');',false);
	}catch(e){
		status = 'erro DGCB:'+e.description;
	}
	
}

function dbgRePage(valores,grid){
	var g = findGrid(grid);
	if(g != null){
		if(g.onBeforeRePage != '')
			eval(g.onBeforeRePage);
		var gd = document.getElementById(g.id + 'Content');
		if(gd)
			gd.innerHTML = valores;
		if(g.onAfterRePage != '')
			eval(g.onAfterRePage);
	}
}

function dga_DetailGrid(id,sgid,kv,add){
	var g = dgaID[0];
	var params = '';
	var td = Obj('dbgtd'+id+''+kv+''+sgid);
	var tr = Obj('dbgtr'+id+''+kv+''+sgid);
	var call = Obj('dbgcall'+id+''+kv+''+sgid);
	if(call.innerHTML == '-'){
		tr.style.display = 'none';
		call.innerHTML = '+';
	}else{
		tr.style.display = '';
		params += 'dbgID='+sgid;
		params += '&dbgForVal='+kv;
		for(var i = 0;i < g.sFields.length;i++)
			params += '&' + g.sFields[i].campo + '=' + g.sFields[i].valor;
		eval(add);
		var g = findGrid(sgid);
		try{
			g.isSubGrid = true;
			g.dbgForVal = kv;
			g.dbgParent = id;
		}catch(e){
			status = '';
		}
		htcGet(g.callAddr,td,true,params,'dga_DetailGridShow(\''+id+''+kv+''+sgid+'\',result,'+add+')','default');
	}
}

function dga_DetailGridShow(def,result,add){
	var td = Obj('dbgtd'+def);
	var tr = Obj('dbgtr'+def);
	var call = Obj('dbgcall'+def);
	if(result.length > 0){
		td.innerHTML = result;
		call.innerHTML = '-';
	}else{
		tr.onclick = null;
		tr.style.display = 'none';
		call.innerHTML = '&nbsp';
	}
}



function renewAllGrids(){
	for(var i = 0;i < dgaID.length;i++){
		dbgCallBack(null,null,dgaID[i].id);
	}
	//closehtcPopUp();
}

