/*
{
	pk: [pk]
	, Language: '[Language]'
	, Text: '[Text]'
	, DisplayBreadCrumb: '[DisplayBreadCrumb]'
	, Parent_FK: [Parent_FK]
	, Show_FK: [Show_FK]
	, NodeOrder: [NodeOrder]
	, NodeLevel: [NodeLevel]
	, Clickable: [Clickable]
	, NavigatorCode: '[NavigatorCode]'
	, UrlLink: '[UrlLink]'
	, UrlLinkTarget: '[UrlLinkTarget]'
	, MetaTags: '[MetaTags]'
	, SiteHeader: '[SiteHeader]'
	, UrlTag: '[UrlTag]'
	, UrlBreadCrumb: '[UrlBreadCrumb]'
	, Share: [Share]
	, Class: '[Class]'
	, MenuType : '[MenuType]'
	, Children: []
}
*/			
var Menus = new Array();
var COLUMN_COUNT = 1;

function dnm_MenuControl ( displaySection, contentSection, menu_items, show_items, menu_type )
{
	this._displaySection = displaySection;
	this._contentSection = contentSection;

	this._id = Menus.length;	
	this._menu_items = menu_items;
	this._root_items = new Array();
	
	this._to_open = null;
	this._show_items = show_items;
	this._menu_type = menu_type;
	
	this.ConstructRootMenu = dnm_MC_ConstructRootMenu;
	this.ConstructBlockMenu = dnm_MC_ConstructBlockMenu;
	this.ConstructChildMenu = dnm_MC_ConstructChildMenu;
	this.ConstructBlockMenuItem = dnm_MC_ConstructBlockMenuItem;
	this.ConstructMenuItem = dnm_MC_ConstructMenuItem;
	
	/*
	this.OpenMenuItem = dnm_MC_OpenMenuItem;
	this.DisplaySubMenu = dnm_MC_DisplaySubMenu;
	this.GetDisplayContent = dnm_MC_GetDisplayContent;
	this.UpdateCurrentSubMenu = dnm_MC_UpdateCurrentSubMenu;
	*/
	
	this.OrderByLevel = dnm_MC_OrderByLevel;
	this.GetMenuItem = dnm_MC_GetMenuItem;
	this.GetParent = dnm_MC_GetParent;
	
	this.InitMenu = dnm_MC_InitMenu;
	
	Menus[ this._id ] = this;
	
	this._current = null;
	this._columnCount = COLUMN_COUNT;
}//dnm_MenuControl

function dnm_MC_OrderByLevel()
{
	for ( var i = 0; i < this._menu_items.length; i++ )
	{
		var c = this._menu_items[i];
		var p = this.GetParent ( c.Parent_FK );

		if ( p === null )
			this._root_items[ this._root_items.length ] = c;
		else
			p.Children[ p.Children.length] = c;
	}//for
}//OrderByLevel

function dnm_MC_GetMenuItem ( pk )
{
	for ( var i = 0; i < this._menu_items.length; i++ )
		if ( this._menu_items[i].pk == pk ) 
			return this._menu_items[i];

	return null;
}//GetParent

function dnm_MC_GetParent ( fk )
{
	for ( var i = 0; i < this._menu_items.length; i++ )
		if ( this._menu_items[i].pk == fk ) 
			return this._menu_items[i];

	return null;
}//GetParent

function dnm_MC_ConstructRootMenu()
{
	var header = "";

	if ( this._show_items )
		this._to_open = new Array();
	
	var items = this._root_items;
	
	for ( var i = 0; i < items.length; i++ )
	{
		var rootItem = "";
		
		var ri = items[i];		
		var re = this.ConstructMenuItem( ri, 'h3' );
		
		var r_id = re.attributes['id'].value; //( 'menu_' + this._id + '_' + ri.pk );
		var rc_id = ( r_id + '_children' );
		
		this._displaySection.appendChild ( re );
		
		if ( this._menu_type == 'BLOCK' )
			this.ConstructBlockMenu( ri, rc_id, 3 );
		else
			this.ConstructChildMenu( ri, rc_id );
		
		//jkmegamenu.definemenu("anchorid", "menuid", "mouseover|click")
		jkmegamenu.definemenu( r_id, rc_id, "mouseover");
		
	}//for -- ROOT ITEMS
}//ConstructRootMenu

function dnm_MC_ConstructBlockMenu( parent, p_id, block_level )
{
	var p_elem = document.createElement ( 'div' );
	
	p_elem.setAttribute ( 'id' , p_id );
	p_elem.setAttribute ( 'class' , 'megamenu' );
	
	for ( var i = 0; i < parent.Children.length; i++ )
	{
		/*
		var c_elem = document.createElement ( 'div' );
		
		var c = parent.Children[i];
		var ce = this.ConstructMenuItem ( c , 'h3' );
		
		c_elem.attribute ( 'id' , ce.attributes['id'].value + '_div' );
		c_elem.attribute ( 'class' , 'column' );
		
		c_elem.appendChild ( ce );
		
		if ( c.Children.length > 0 )
		{
			var c_id = ce.attributes['id'].value;
			var cc_id = ( c_id + '_children' );
			
			this.ConstructChildMenu ( c, cc_id );
			
			//jkmegamenu.definemenu( c_id, cc_id, "mouseover");
		}//if
		*/
		var c_elem = this.ConstructBlockMenuItem( parent.Children[i], ( block_level + 1 ) );
		p_elem.appendChild ( c_elem );
	}//for
	
	this._contentSection.appendChild ( p_elem );
	
}//ConstructBlockMenu

function dnm_MC_ConstructChildMenu( parent, p_id )
{
	var p_elem = document.createElement ( 'div' );
	
	p_elem.setAttribute ( 'id' , p_id );
	p_elem.setAttribute ( 'class' , 'megamenu' );
	
	for ( var i = 0; i < parent.Children.length; i++ )
	{
		var c = parent.Children[i];
		var ce = this.ConstructMenuItem ( c , 'div' );
		
		p_elem.appendChild ( ce );
		
		if ( c.Children.length > 0 )
		{
			var c_id = ce.attributes['id'].value;
			var cc_id = ( c_id + '_children' );
			
			this.ConstructChildMenu ( c, cc_id );
			
			jkmegamenu.definemenu( c_id, cc_id, "mouseover");
		}//if
	}//for
	
	this._contentSection.appendChild ( p_elem );
	
}//ConstructChildMenu

function dnm_MC_ConstructBlockMenuItem ( c, block_level )
{
	var h_level = ( 'h' + block_level );
	
	var c_elem = document.createElement ( 'div' );
		
	//var c = parent.Children[i];
	var ce = this.ConstructMenuItem ( c , h_level );
	
	c_elem.setAttribute ( 'id' , ce.attributes['id'].value + '_div' );
	c_elem.setAttribute('class', 'column'); //_' + ce.attributes['id'].value );
	
	c_elem.appendChild ( ce );
	
	for ( var i = 0; i < c.Children.length; i++ )
		c_elem.appendChild ( this.ConstructBlockMenuItem( c.Children[i] , ( block_level + 1 ) ) ); 
	
	return c_elem;
}//ConstructBlockMenuItem

function dnm_MC_ConstructMenuItem ( ci, tag )
{
	var c_id = ( 'menu_' + this._id + '_' + ci.pk );
	var cc_id = ( c_id + '_children' );
	
	var c_elem = document.createElement ( tag );
	c_elem.setAttribute ( 'id' , c_id );

	if ((ci.NavigatorCode == 'URL') && ci.Clickable) 
	{
	    var a_elem = document.createElement('a');
	    a_elem.setAttribute('href', ci.UrlLink);
	    a_elem.setAttribute('target', ci.UrlLinkTarget);
	    a_elem.innerHTML = ci.Text;

	    c_elem.appendChild(a_elem);
	} //if
	else 
	{
	    var s_elem = document.createElement('span');
	    s_elem.innerHTML = ci.Text;

	    c_elem.appendChild(s_elem);
	    //c_elem.innerHTML = ci.Text;
	} //else
		
	return c_elem;
}//ConstructMenuItem

function dnm_MC_InitMenu( displaySection, contentSection )
{
	this.OrderByLevel();
	this.ConstructRootMenu();

	/*
	if ( this._to_open !== null )
		for ( var i = 0; i < this._to_open.length; i++ )
			this.OpenMenuItem ( this._to_open[i] );	
	*/
	
	jkmegamenu.definemenu( displaySection, contentSection, "mouseover");
}//InitMenu

function jkm_Highlight(){}
