function gContactList()
{
}
gContactList.additionalCallback = false; 
gContactList.contact = new Object();
gContactList.searchString = '';
gContactList.updater = new Ajax('/common/addressbook.php');

gContactList.syncContactsCallback = function( sResponse )
{
  var objects;
  try
  {
    objects = eval( '(' + sResponse + ')' );
  }
  catch( ex )
  {
  }
  
  // remove existing entries.
  parent.gContactList.contact = [];
  

  // rebuild the entries
  if (objects){
	  for(var i=0; i < objects.length; i++)
	  {
		if (gContactList.additionalCallback == "displaySearchContacts")
		{
			// has to be parent.gC ... to apply to outer frame.
			if (objects[i]['description'].toLowerCase().indexOf(parent.gContactList.searchString.toLowerCase()) == 0) 
			{
				parent.gContactList.contact[objects[i]['contactid']] = objects[i];
			}
		}
		else
		{
			parent.gContactList.contact[objects[i]['contactid']] = objects[i];
		}
	  }
  }
	if (gContactList.additionalCallback == "displayContacts"
		|| gContactList.additionalCallback == "displaySearchContacts")
	{
            if( top.frames['mainContent'].Contact &&
                top.frames['mainContent'].Contact.paintList )
            {
				top.frames['mainContent'].Contact.paintList();
            }
	}
	parent.resizeIframe();

	// Now update the groups.
    gGroupList.syncGroups();

}

gContactList.syncContacts = function( completionCallback )
{

   if (completionCallback)
   {
		this.additionalCallback = completionCallback;
   }
   gContactList.updater.makeRequest(gContactList.syncContactsCallback, {'ajax':'1', 'list':'contact'})


}

function gGroupList()
{
}

gGroupList.updater = new Ajax('/common/addressbook.php');
gGroupList.group = new Object();

gContactList.syncGroupsCallback = function( sResponse )
{
  var objects;
  try
  {
    objects = eval( '(' + sResponse + ')' );
  }
  catch( ex )
  {
  }
  
  if (objects){
	  for(var i=0; i < objects.length; i++)
	  {
		// has to be parent.gC ... to apply to outer frame.
		parent.gGroupList.group[objects[i]['distribution_list_id']] = objects[i];
	  }
  }
}

gGroupList.syncGroups = function()
{
   gGroupList.updater.makeRequest(gContactList.syncGroupsCallback, {'ajax':'1', 'list':'group'})
}
