/*
 * FCKeditor - The text editor for internet
 * Copyright (C) 2003-2004 Frederico Caldeira Knabben
 * 
 * Licensed under the terms of the GNU Lesser General Public License:
 * http://www.opensource.org/licenses/lgpl-license.php
 * 
 * For further information visit:
 * http://www.fckeditor.net/
 * 
 * File Name: fckcontextmenugroup.js
 * FCKContextMenuGroup Class: represents a group of items in the context 
 * menu. Generaly a group of items is directly dependent of the same rules.
 * 
 * Version:  2.0 RC3
 * Modified: 2005-02-09 19:35:56
 * 
 * File Authors:
 * Frederico Caldeira Knabben (fredck@fckeditor.net)
 */

var FCKContextMenuGroup = function( addSeparator, contextMenu, firstItemCommand, firstItemLabel, hasIcon )
{
this.IsVisible = true ;

// Array with all available context menu items of this group.
this.Items = new Array() ;

if ( addSeparator )
this.Add( new FCKContextMenuSeparator() ) ;

if ( contextMenu && firstItemCommand && firstItemLabel )
this.Add( new FCKContextMenuItem( contextMenu, firstItemCommand, firstItemLabel, hasIcon ) ) ;

// This OPTIONAL function checks if the group must be shown.
this.ValidationFunction = null ;
}

// Adds an item to the group's items collecion.
FCKContextMenuGroup.prototype.Add = function( contextMenuItem )
{
this.Items[ this.Items.length ] = contextMenuItem ;
}

// Creates the <TR> elements that represent the item in a table (usually the rendered context menu).
FCKContextMenuGroup.prototype.CreateTableRows = function( table )
{
for ( var i = 0 ; i < this.Items.length ; i++ )
{
this.Items[i].CreateTableRow( table ) ;
}
}

FCKContextMenuGroup.prototype.SetVisible = function( isVisible )
{
for ( var i = 0 ; i < this.Items.length ; i++ )
{
this.Items[i].SetVisible( isVisible ) ;
}

this.IsVisible = isVisible ;
}

FCKContextMenuGroup.prototype.RefreshState = function()
{
if ( ! this.IsVisible ) return ;

for ( var i = 0 ; i < this.Items.length ; i++ )
{
this.Items[i].RefreshState() ;
}
}
