defaultItemLevelOnePosition	= [];

defaultItemLevelOneSize = [];

defaultItemLevelOneItemOff = [];

defaultItemLevelOneStyle = [];

defaultItemLevelOneUrl = [];

defaultItemLevelSecondSize = [];

defaultItemLevelSecondItemOff = [];

defaultItemLevelSecondLevelOff = [];

defaultItemLevelSecondStyle = [];

defaultItemLevelSecondUrl = [];



//Main function

function JBMenu(menuItems)

{

	//default values for first item level

	defaultItemLevelOnePosition = menuItems[0].itemPosition;

	defaultItemLevelOneSize = menuItems[0].itemSize;

	defaultItemLevelOneItemOff = menuItems[0].itemOff;

	defaultItemLevelOneStyle = menuItems[0].itemStyle;

	defaultItemLevelOneUrl = menuItems[0].itemUrl;



	//defining actual position for first level

	actualPosition = [];

	actualPosition[0] = defaultItemLevelOnePosition[0];

	actualPosition[1] = defaultItemLevelOnePosition[1];

	

	//creating element for printing tags

	element = document.createElement("Span");

	element.id = "MainMenuSpan";



	//loop for menuItems.length items

	// : create new menuItem

	stringHtmlTags = "";

	i = 1;

	for (i; i < menuItems.length; i++)

	{

		//setting position for current item

		currentItemPosition = (menuItems[i].itemPosition == null) ? actualPosition : menuItems[i].itemPosition;

		//setting other values for current item

		currentItemName = (menuItems[i].itemName == null) ? "undefined" : menuItems[i].itemName;

		currentItemSize = [];

		currentItemSize[0] = (menuItems[i].itemSize == null) ? defaultItemLevelOneSize[0] : menuItems[i].itemSize[0];

		currentItemSize[1] = (menuItems[i].itemSize == null) ? defaultItemLevelOneSize[1] : menuItems[i].itemSize[1];

		currentItemStyle = (menuItems[i].itemStyle == null) ? defaultItemLevelOneStyle : menuItems[i].itemStyle;

		currentItemUrl = (menuItems[i].itemUrl == null) ? defaultItemLevelOneUrl : menuItems[i].itemUrl;

		currentItemDescription = (menuItems[i].itemDescription == null) ? "" : menuItems[i].itemDescription;

		currentItemOff = [];

		currentItemOff[0] = (menuItems[i].itemOff == null) ? defaultItemLevelOneItemOff[0] : menuItems[i].itemOff[0];

		currentItemOff[1] = (menuItems[i].itemOff == null) ? defaultItemLevelOneItemOff[1] : menuItems[i].itemOff[1];

		currentItemSubMenu = (menuItems[i].itemSubMenu == null) ? [] : menuItems[i].itemSubMenu;

		

		//string with html tags

		stringHtmlTags += JBMenuItem(i, currentItemName, currentItemPosition, currentItemSize, currentItemStyle, currentItemUrl, currentItemDescription, currentItemSubMenu);



		//setting actual position as enter for next item

		actualPosition[0] += currentItemOff[0];

		actualPosition[1] += currentItemOff[1];

	}



	//writing html tags into element and writing to document

	element.innerHTML = stringHtmlTags;

	//joining element with body element

	document.body.appendChild(element);

}



//Definition for one first level item

function JBMenuItem(itemLevelOneId, itemName, itemPosition, itemSize, itemStyle, itemUrl, itemDescription, itemSubMenu)

{

	//number of members menu second level

	subMenuItemLength = itemSubMenu.length;

	//event onClick ( go on url or nothing)

	actionOnClick = (itemUrl == "none") ? '' : ' onclick="location.href=\'' + itemUrl + '\';"';

	//text in status bar

	actionStatusBar = (itemDescription == "") ? '' : ' self.status = \'' + itemDescription + '\';';

	//creating output string

	outputStringHtmlTags = "";

	outputStringHtmlTags += '<table height="' + itemSize[0] + '" width="' + itemSize[1] + '" cellspacing="0" cellpadding="0" border="0" style="position: absolute; z-index: 100; left: ' + itemPosition[0] + 'px; top: ' + itemPosition[1] + 'px">';

	outputStringHtmlTags += '<tr><td id="levelOne_' + itemLevelOneId + '" width="100%" height="100%" class="' + itemStyle[0] + '" onmouseover="ShowHideSubMenu(\'visible\',' +  itemLevelOneId + '); this.className=\'' + itemStyle[1] + '\'; ' + actionStatusBar + '" onmouseout="this.className=\'' + itemStyle[0] + '\'; ShowHideSubMenu(\'hidden\',' +  itemLevelOneId + ');"' + actionOnClick + '>' + itemName + '</td></tr></table>';

	outputStringHtmlTags += JBSubMenuItem(itemLevelOneId, itemPosition, itemStyle, itemSubMenu);

	return outputStringHtmlTags;

}



//Definition for second level items

function JBSubMenuItem(itemLevelOneId, itemLevelOnePosition, itemLevelOneStyle, subMenuItems)

{

	//default values for second item level

	defaultItemLevelSecondSize[0] = subMenuItems[0].itemSize[0];

	defaultItemLevelSecondSize[1] = subMenuItems[0].itemSize[1];

	defaultItemLevelSecondItemOff[0] = subMenuItems[0].itemOff[0];

	defaultItemLevelSecondItemOff[1] = subMenuItems[0].itemOff[1];

	defaultItemLevelSecondLevelOff[0] = subMenuItems[0].itemLevelOff[0];

	defaultItemLevelSecondLevelOff[1] = subMenuItems[0].itemLevelOff[1];

	defaultItemLevelSecondStyle = subMenuItems[0].itemStyle;

	defaultItemLevelSecondUrl = subMenuItems[0].itemUrl;

	//enter position for sub menu

	itemSubMenuActualPosition = [];

	itemSubMenuActualPosition[0] = itemLevelOnePosition[0];

	itemSubMenuActualPosition[1] = itemLevelOnePosition[1];

	//setting position for table

	itemSubMenuPosition = [];

	itemSubMenuPosition[0] = itemSubMenuActualPosition[0] + defaultItemLevelSecondLevelOff[0];

	itemSubMenuPosition[1] = itemSubMenuActualPosition[1] + defaultItemLevelSecondLevelOff[1];

	//creating table

	stringSubMenuHtmlTags = "";

	stringSubMenuHtmlTags += '<table id="levelSecond_' + itemLevelOneId + '" height="' + defaultItemLevelSecondSize[0] + '" width="' + defaultItemLevelSecondSize[1] + '" cellspacing="0" cellpadding="0" border="0" style="visibility: hidden; position: absolute; z-index: 100; left: ' + itemSubMenuPosition[0] + 'px; top: ' + itemSubMenuPosition[1] + 'px">';



	//creating string with html tags

	j = 1;

	for (j; j < subMenuItems.length; j++)

	{

		//setting other values for current item

		itemSubMenuName = (subMenuItems[j].itemName == null) ? "undefined" : subMenuItems[j].itemName;

		itemSubMenuStyle = (subMenuItems[j].itemStyle == null) ? defaultItemLevelSecondStyle : subMenuItems[j].itemStyle;

		itemSubMenuUrl = (subMenuItems[j].itemUrl == null) ? defaultItemLevelSecondUrl : subMenuItems[j].itemUrl;

		itemSubMenuDescription = (subMenuItems[j].itemDescription == null) ? "" : subMenuItems[j].itemDescription;

		

		//event onClick ( go on url or nothing)

		actionSubMenuOnClick = (itemSubMenuUrl == "none") ? '' : ' onclick="location.href=\'' + itemSubMenuUrl + '\';"';

		//text in status bar

		actionSubMenuStatusBar = (itemSubMenuDescription == "") ? '' : ' self.status = \'' + itemSubMenuDescription + '\';';



		//string with html tags

		stringSubMenuHtmlTags += '<tr><td width="100%" height="' + defaultItemLevelSecondItemOff[1] + '" class="' + itemSubMenuStyle[0] + '" onmouseover="this.className=\'' + itemSubMenuStyle[1] + '\'; ShowHideSubMenu(\'visible\',' +  itemLevelOneId + '); document.getElementById(\'levelOne_' + itemLevelOneId + '\').className = \'' + itemLevelOneStyle[1] + '\';' + actionSubMenuStatusBar + '" onmouseout="this.className=\'' + itemSubMenuStyle[0] + '\'; ShowHideSubMenu(\'hidden\',' +  itemLevelOneId + '); document.getElementById(\'levelOne_' + itemLevelOneId + '\').className = \'' + itemLevelOneStyle[0] + '\';"' + actionSubMenuOnClick + '>' + itemSubMenuName + '</td></tr>';

	}

	

	stringSubMenuHtmlTags += '</table>';

	return stringSubMenuHtmlTags;

}



//function for show and hide submenu items

function ShowHideSubMenu(action, itemLevelOneId)

{

	if (document.getElementById('levelSecond_' + itemLevelOneId) != null)

		{document.getElementById('levelSecond_' + itemLevelOneId).style.visibility = action;}

}