var obj_basecbname;
var obj_recsperpage;
var prevpage;
var obj_elearray=new Array(1);
var cbarray=new Array(1);
var obj_curpage;
var obj_maxrows;
function InitStates(basecbname,recsperpage,elementarray,curpage,rows)
{
   // elementarray defines all the element names in cbarray
   obj_basecbname=basecbname;
   obj_recsperpage=recsperpage;
   obj_elearray=elementarray.split(',');
   obj_curpage=curpage;
   obj_maxrows=rows;
}

function SerializefromStates()
{
   var sdata='';
   var x,tmp,y;
   for (x=1;x<cbarray.length;x++)
   {
      tmp='';
      for (y=0;y<obj_elearray.length;y++)
	  {
	     tmp=tmp + '&' + cbarray[x][obj_elearray[y]];
	  }
	  sdata=sdata + '&' + escape(tmp.substring(1));
   }
   if (sdata!='') sdata=sdata.substring(1);
   return sdata;
}

function DeserializetoStates(srcdata)
{
   var sdata=srcdata.split('&');
   var x,y;
   var tmp;
   cbarray=new Array(1);
   for (x=0;x<sdata.length;x++)
   {
      tmp=unescape(sdata[x]);
	  var edata=tmp.split('&');
	  cbarray[x+1]=new Array(obj_elearray.length);
      for (y=0;y<obj_elearray.length;y++)
	  {
		 cbarray[x+1][obj_elearray[y]]=edata[y];
	  }
   }
}

function setStatefromDisplay()
{
  if (obj_curpage<1) return;
  var x;
  var startr=(obj_curpage-1)*obj_recsperpage+1;
  var endr=startr+obj_recsperpage-1;
  if (endr>obj_maxrows) endr=obj_maxrows;
  for (x=startr;x<=endr;x++)
  {
    theobj=eval(obj_basecbname+x);
    if (theobj) cbarray[x]['checked']=theobj.checked;
  }
}

function SetDisplayfromState()
{
  if (obj_curpage<1) return;
  var startr=(obj_curpage-1)*obj_recsperpage+1;
  var endr=startr+obj_recsperpage-1;
  if (endr>obj_maxrows) endr=obj_maxrows;
  var x;
  for (x=startr;x<=endr;x++)
  {
	theobj=eval(obj_basecbname+x);
    if (theobj) theobj.checked=eval(cbarray[x]['checked']);
  }
}

function GetChecked(retelelist,delim)
{
	  retarray=retelelist.split(',');
	  setStatefromDisplay(obj_curpage);
	  var chglist='';
	  var x,y,tmp;
	  for (x=1;x<cbarray.length;x++)
	  {
	         if (cbarray[x]['checked']==true || cbarray[x]['checked']=='true')
	         {
			     tmp='';
	             for (y=0;y<retarray.length;y++)
				 {
				     tmp=tmp + delim + cbarray[x][retarray[y]];
				 } 
				 chglist=chglist + delim + escape(tmp.substring(1));
	         }  
	  }
      if (chglist !='') chglist=chglist.substring(1);

	  return chglist;
}  

function setClearAll()
{
  var x;
  for (x=1;x<cbarray.length;x++)
  {
      if (cbarray[x]['checked']!=false)
      {
      	cbarray[x]['checked']=false;
      }  
  }
  SetDisplayfromState();
}

function setCheckAll()
{
  var x;
  for (x=1;x<cbarray.length;x++)
  {
      if (cbarray[x]['checked']!=true)
      {
      	cbarray[x]['checked']=true;
      }  
  }
  SetDisplayfromState();
}

