function reloadgroup (txt, obj){
	listgroupbrowserefresh(0, 0);
}

function editlgroup(gid, bcount) {
	var obj = $('edit'+gid);
	var txt = selectingroup( 'listgroupbrowseinselect', bcount , gid );
	if (obj) {
		obj.innerHTML = txt;	
		resultform( null, obj );
		//buttonizeall( obj );
		formformat(obj);
	}
}

function noeditlgroup(gid, bcount){
	var txt = '&nbsp; <a href="javascript:editlgroup('+gid+', '+ bcount + ');"">' + TXT_EDIT_GRP + '</a>';
	var obj = $('edit'+gid);
	if (obj) obj.innerHTML = txt;
}


function addlgroup(bcount){
	var obj = $('searchlgroup'+ bcount);
	var txt = selectingroup( 'listgroupbrowseinselect', bcount, 0 );
	if (obj){
		obj.innerHTML = txt;	
		resultform( null, obj );
		//buttonizeall( obj );
		formformat(obj);
	}
}

function dellgroup(bcount){
	var txt = '<a href="javascript:addlgroup('+ bcount + ')">' + TXT_ADD_GRP + '</a><br />&nbsp;';
	var obj = $('searchlgroup'+bcount);
	if (obj) obj.innerHTML = txt;
}

// delete this group
function deletelistgroup( id, bcount){
	confirm_box=confirm(TXT_DEL_GRP_CONF);
	if (confirm_box==true){
		var urlget = 'register_groups.php?del=1&&gid='+id+'&&type=0&&bcount='+bcount+'&&atoken='+auth_token+'&mydomain='+appdomain;
		ajaxrequest( urlget, 'reloadgroup', $('doajax'+bcount), 1 );
		//listgroupbrowserefresh(bcount, 0);
	}
}

// add this group
function addlistgroup( name, bcount){
	var urlget = 'register_groups.php?gname='+name+'&&type=0&&bcount='+bcount+'&&atoken='+auth_token+'&mydomain='+appdomain;
	ajaxrequest( urlget, 'reloadgroup', $('doajax'+bcount), 0 );
	//listgroupbrowserefresh(bcount, 0);
}

// edit this group
function editlistgroup( name, gid, bcount){
	var urlget = 'register_groups.php?gname='+name+'&&gid='+gid+'&type=0&&bcount='+bcount+'&&atoken='+auth_token+'&mydomain='+appdomain;
	ajaxrequest( urlget, 'reloadgroup', $('doajax'+bcount), 0 );
	//listgroupbrowserefresh(bcount, 0);
}

// chamada qdo se passa o mouse sobre um registro
// basicamente so se muda a classe CSS
function listgroupbrowseover( div, bcount, idx )
{
	pinpoint( brecs[bcount][idx].cols[7] );
	var obj = $('listgroupbrowse'+bcount);
	div.className = obj.selected == idx ? 'item_selected' : 'item_over';
}

// chamada qdo se passa o mouse sobre um registro
// basicamente so se muda a classe CSS
function listgroupbrowseout( div, bcount, idx )
{
	pinpointout();
	var obj = $('listgroupbrowse'+bcount);
	div.className = obj.selected == idx ? 'item_selected' : 'item';
}


function listgroupbrowseclick( divx, id )
{
	div = $(divx);
	if( isdefined( div.show ) ) {
		if (div.show == 1) {
			div.innerHTML = '';
			div.show = 0;
			return;
		}
	}
	div.show = 1;
	groupbrowse(div, 'request_groups.php?type=1', id);
}

var detailrequest = null;

/* gets the product record vars */


function listgroupbrowserec( bcount, idx, nodelist )
{
	var i = 0, j;

	brecs[bcount][idx] = new Object;
	brecs[bcount][idx].id = nodelist[0].firstChild.nodeValue;
	brecs[bcount][idx].cols = new Array;	
	for( i = 0 ; i < nodelist.length ; i++ )
		brecs[bcount][idx].cols[i] = nodeval( nodelist[i] );
	
        //debug( brecs[bcount][idx].cols[2] , bcount, 'idx = ' + idx, 'id = ' + id );

}

function listgroupbrowsesortby( bcount, idx )
{
	var obj = $('listgroupbrowse'+bcount);
	if( !isdefined(obj.sort) ) obj.sort = 1;
	if( obj.sort == idx ) idx *= -1;
	obj.sort = idx;
	listgroupbrowserefresh( bcount, 0 );
}

function listgroupbrowsesearch( o )
{
	var sval = o.search.value;
	//debug( sval, o.srchcateg.selectedIndex );
	if( sval == 'search' )
	{
		o.search.focus();
	}
	else if( sval == '' && o.srchcateg.selectedIndex == 0 )
	{
		alert( TXT_GRP_VENUE );
		return false;
	}
	else
	{
		var node = o;
		while( !isdefined( node.bcount ) && node != document.body )
		{
			node = node.parentNode;
		}
		var bcount = node.bcount;
		var obj = $('listgroupbrowse'+bcount);
		obj.place = o.search.value;
		obj.selected = -1;
		listgroupbrowserefresh( bcount, 0 );
	}
	return false;
}


function listgroupbrowseinselect( o , gid)
{
	$('listgroupbrowsesearcherr').innerHTML = '';
	$('listgroupbrowsesearcherr').style.display = 'none';
	var sval = o.search.value;
	//var ival = o.srchin.value;
	//var cval = o.srchcateg.value;
	var cval = 1;

	tval = sval.toUpperCase();

	if(tval == TXT_ENTER_GRP.toUpperCase)
	{
		o.search.focus();
		var eobj = $('listgroupbrowsesearcherr');
		eobj.innerHTML = TXT_ENTER_GRP;
		eobj.style.display = 'block';
		return false;
	}
	else if (tval == TXT_GRP_INV_NAME1.toUpperCase || tval == TXT_GRP_INV_NAME2.toUpperCase || tval == TXT_GRP_INV_NAME3.toUpperCase || tval == TXT_GRP_INV_NAME4.toUpperCase)
	{
		o.search.focus();
		var eobj = $('listgroupbrowsesearcherr');
		eobj.innerHTML = TXT_GRP_NAME_ERR;
		eobj.style.display = 'block';
		return false;	
	}
	else
	{
		var node = o;
		while( !isdefined( node.bcount ) && node != document.body )
		{
			node = node.parentNode;
		}
		var bcount = node.bcount;

		o.search.value = '';
		o.search.onblur();
		var obj = $('listgroupbrowse'+bcount);
		if (gid)
			editlistgroup(sval, gid, obj.bcount);
		else 
			addlistgroup(sval, obj.bcount);
	}
	return false;
}



function listgroupbrowserefresh( bcount, idx )
{
	dellgroup(bcount);

	$('listgroupbrowsecontent_'+bcount).innerHTML = '';
	//idx = brec[bcount];
	delete brecs[bcount];
	listgroupbrowseget( bcount, idx );
	/*
	var obj = $('listgroupbrowse' + bcount );
	var atoken = obj.atoken;

	refreshpage('home.php', atoken);
	*/
}

function listgroupbrowsesave( idx )
{
	var func = function() { ajaxrequest('save.php?ident=' + listgroupbrowseident + '&val=' + idx, '', null, 0); }
}


// desenha os primeiros listgroupbrowsepag registros a partir do indice idx
function listgroupbrowseshow( bcount, idx )
{
//	debug ('show', idx);
	var l, c, i, out = '', rec, max1, max2, nav, items;
	var sr, er;
	var obj = $('listgroupbrowse' + bcount );
	var td;
	var content = $('listgroupbrowsecontent_'+bcount);

	if( !isdefined( obj.selected ) ) obj.selected = -1;

	nopopup();

	// acerta idx se tiver fora dos limites
	l = c = i = 0;
	if( idx < 1 ) idx = 0;
	if( idx >= btotrecs[bcount] ) idx = btotrecs[bcount]-1;
	// seta o registro base sendo visualizado atual
	brec[bcount] = idx;

	r = brec[bcount];


	//monta o html para o navegador de paginas
	sr = r + 1;
	se = r + listgroupbrowsepag;
	if( se > btotrecs[bcount] ) se = btotrecs[bcount];

	if( sr > 1 )
		prev = '<td class="browseprev" onmousedown="listgroupbrowseshow(' + bcount + ', ' + (brec[bcount]-listgroupbrowsepag) + ')"></td>';
	else
		prev = '<td class="browseprev_off"></td>';

	if( se < btotrecs[bcount] )
		next = '<td class="browsenext" onmousedown="listgroupbrowseshow(' + bcount + ', ' + (brec[bcount]+listgroupbrowsepag) + ')"></td>';
	else
		next = '<td class="browsenext_off"></td>';

	if (listgroupbrowsepag < btotrecs[bcount])	{
		nav = '<table cellpadding=0 cellspacing=0 border=0><tr>' + prev + '<td class=browsepos>' + sr + ' - ' + se + ' ' + TXT_NAV_OF + ' ' +btotrecs[bcount] + '</td>' + next + '</tr></table>';
	} else {
		nav = '';

	}

	var items = '';

	// desenha as linhas com cada registro
	for( i = idx ; i < se ; i++ )
	{
		rec = brecs[bcount][i];
		if( isdefined( rec ) )
		{
			if(!( isdefined(rec.cols[6] ))) rec.cols[6] = 0;
			if (rec.cols[6] == '') rec.cols[6] = 0;

			if (rec.cols[7] == 0) {
				items += '<tr><td><div id="tr' + bcount + '_' + i + '" valign=top class="item">'
					+ '<div class=name><a href="javascript:listgroupbrowseclick(\'groupcontent_' + rec.cols[0] + '\', ' + rec.cols[0] + ')">' + rec.cols[3] + '</a> '
					+ '(<span id="count'+rec.cols[0]+'">' + rec.cols[6] + '</span>) '
					+ '<a href="javascript:deletelistgroup(' + rec.cols[0] + ', ' + bcount + ')">x</a>'
					+ '<span id="edit'+rec.cols[0]+'">'
					+ '&nbsp; <a href="javascript:editlgroup('+rec.cols[0]+', '+ bcount + ');"">' + TXT_EDIT_GRP + '</a>'
					+ '</span></div><div id="groupcontent_'+rec.cols[0]+'"></div></div></td></tr>';
			} else {
				items += '<tr><td><div id="tr' + bcount + '_' + i + '" valign=top class="item">'
					+ '<div class=name><a style="color:red;" href="javascript:listgroupbrowseclick(\'groupcontent_' + rec.cols[0] + '\', ' + rec.cols[0] + ')">' + rec.cols[3] + '</a> (<span id="count'+rec.cols[0]+'">' + rec.cols[6] + '</span>) </div>'
					+ '<div id="groupcontent_'+rec.cols[0]+'"></div>'
					+ '</div></td></tr>';
			}
		}
		else
		{
			// se nao existe no buffer, faz um get para pegar a pagina do registro
			// a propria listgroupbrowseget vai desenhar qdo chegar o resultado
			$('listgroupbrowsecontent_'+bcount).innerHTML = '<div class=loading>' + TXT_LOADING + '</div>';
			listgroupbrowseget( bcount, Math.floor(i/listgroupbrowsepag)*listgroupbrowsepag );
			return;
		}
	}

	// insere o conteudo gerado no div content do componente
	content.innerHTML = '<table border="0" cellspacing="0" cellpadding="0" width=100% id="listgroupbrowsecontent_tab'+bcount+'"><tr><td align=right class=navigator>' + nav + items + '</table>';

	// decora os botoes
	buttonizeall( content );
}


function resultlistgroupbrowse( xml, obj, txt )
{
//   	if( myuid == '563559771' || myuid == '591323352' || myuid == '2306' ) debug ( '<textarea style="width: 300px; height: 300px">' + txt + '</textarea>' );
	if( checkreload( xml ) ) return;

	var labels, frec, lrec, trec, recfunc, i, j, cols;
	var reclist = ntag( xml, 'rec' );
	var bcount = obj.bcount;
	var detailscript = obj.detailscript;
	var url = obj.url;
	//obj = $(obj.id);
	obj.bcount = bcount;
	obj.detailscript = detailscript;
	obj.url = url;

//	debug( '<textarea style="width: 400px; height: 500px;">' + txt + '</textarea>' );

	if( !isdefined( brecs[bcount] ) )
	{
		brecs[bcount] = new Array;
		btotrecs[bcount] = 0;
		if( !isdefined(brec[bcount]) ) brec[bcount] = 0;
	}
	frec = vtag( xml, 'firstrec' ) * 1;
	lrec = vtag( xml, 'lastrec' ) * 1;
	trec = vtag( xml, 'totrec' ) * 1;
	obj.frec = frec;
	obj.lrec = lrec;
	obj.trec = trec;
	//debug (trec, frec, lrec);
	if( trec > 0)
	{
		labels = ntag( xml, 'labels' );
		if( labels != null && labels.length )
		{
			cols = ntag( labels[0], 'c' )
			obj.labels = new Array;
			for( i = 0 ; i < cols.length ; i++ )
			{
				obj.labels[i] = cols[i].firstChild.nodeValue;
			}
		}
		//debug( frec, lrec, trec );

		btotrecs[bcount] = trec;

		for( j = 0, i = frec ; i <= lrec ; i++, j++ )
		{
			var cols = ntag( reclist[j], 'c' );
			listgroupbrowserec( bcount, i, cols );
		}
		listgroupbrowseshow( obj.bcount, brec[bcount] );
	}
	else
	{
		var addnew = '';
		$('listgroupbrowsecontent_'+bcount).innerHTML = '<div class=noresult><br>' + TXT_NO_GRP + '</div>';
		//$('search' + bcount).select();
		//debug( obj.qry );
		buttonizeall( $('listgroupbrowsecontent_'+bcount) );
	}
}

function listgroupbrowseget( bcount, idx )
{
	var id = 'listgroupbrowse' + bcount;
	var obj = $(id);
	var url = obj.url;
	var jpar = url.match( /\?/ ) ? '&' : '?';
	var params = '';
	params += '&atoken=' + auth_token;
	params += '&mydomain=' + appdomain;
	params += '&noblock=1';
	if( idx < 0 ) idx = 0;
	var urlget = url + jpar + 's=' + idx + '&m=' + listgroupbrowseqrysize + params + '&bcount=' + bcount + '&r=' + rpar();
	if( $('listgroupbrowsecontent_'+bcount).innerHTML == '' ) 
		$('listgroupbrowsecontent_'+bcount).innerHTML = '<div class=loading2>' + TXT_SEARCHING_USERS + '</div>';
	obj.qry = urlget;
	//debug ( 'listgroupbrowse <a target="_blank" href="' + urlget + '">'+urlget+'</a>' );
	ajaxrequest( urlget, 'resultlistgroupbrowse', obj, 1 );
}


function listgroupbrowse( hang, url)
{
	var i, rb, b, bcount, search;
	
	hang.innerHTML = '';
	bcount = browserct++;
	id = 'listgroupbrowse' + bcount;
	var div = ce( 'DIV' );
	div.className = 'listgroupbrowse';
	div.id = id;
	hang.appendChild( div );
	div.bcount = bcount;
	div.detailscript = '';
	div.url = url;
	div.formdiv = true;
	div.className = 'listgroupbrowse';
	div.search = '';
	var title = title != '' ? '<h1>' + title + '</h1>' : '';

	var search = '<a href="javascript:addlgroup('+ bcount + ')">' + TXT_ADD_GRP + '</a><br />&nbsp;';
	//var search = selectingroup( 'listgroupbrowseinselect', bcount );

	div.innerHTML = '<div class="generalhead" style="border: 0px solid red" id="head' + bcount + '"><div id="searchlgroup' + bcount + '">' + search + '</div></div><div id="doajax' + bcount + '" style="display: none"></div><table cellpadding=0 cellspacing=0 ><tr><td valign=top><div id="listgroupbrowsecontent_' + bcount + '" cclass="content"></div></td></tr></table>';

	brec[bcount] = 0;
	listgroupbrowseget( bcount, 0 );
	buttonizeall( div );
}

