//***********************************************************************************************
// implements a class for administrating CMenue objects: CMenueList
//
//***********************************************************************************************

function CMenueList(nMaxMenues)
{
	this.m_nCurrent = -1;
	this.m_nMaxMenues = nMaxMenues;
	this.m_pMenues = 0;
	
				//------- methods -------
				
	this.Alloc   = CMenueList_Alloc;
	this.Create = CMenueList_Create;
	this.Print  = CMenueList_Print;
	this.AddMenue = CMenueList_AddMenue;	
	this.RegisterCreateFunc = CMenueList_RegisterCreateFunc;
	
				//------- additional initialization --------
				
	this.Alloc(nMaxMenues);
};


function CMenueList_Alloc(nSize)
{
	var tmp, nNewSize, i;

	if( this.m_nCurrent == -1 )
	{
		this.m_pMenues = new Array(nSize);
		this.m_nCurrent = 0;
		this.m_nMaxMenues = nSize;
		
		return(nSize);
	};
		
	nNewSize = this.m_nCurrent+1+nSize;
	tmp = new Array(nNewSize);
	
		// copy existing elements
		
	for( i = 0; i < this.m_nCurrent; i++ )
		tmp[i] = this.m_pMenues[i];
		
	this.m_pMenues = tmp;
		
	this.m_nMaxMenues = nNewSize;
	
	return(nNewSize);
};


function CMenueList_Create()
{
	var i, rc = "";
	
	for( i = 0; i < this.m_nCurrent; i++ )
		rc += this.m_pMenues[i].Create();
		
	return(rc);
};


function CMenueList_Print()
{
	alert(this.Create());
	alert("m_nCurent: "+this.m_nCurrent+"\n"+"m_nMaxMenues: "+this.m_nMaxMenues+"\n");
};


function CMenueList_AddMenue(Menue)
{
	if( this.m_nCurrent == this.m_nMaxMenues )
		this.Alloc(3);
		
	Menue.m_nMyIndex = this.m_nCurrent;
		
	this.m_pMenues[this.m_nCurrent] = Menue;
	this.m_nCurrent++;
};


function CMenueList_RegisterCreateFunc(pFunc)
{
	this.Create = pFunc;
};