/*
 * Class Menu Control
 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 */
// Global Array provide full accessibility to object menuControl
var menuControlArray = Array();
// Class
function menuControl(value)
{
	// Attributes
	this.menu = null;
	this.displacement = 0;
	this.hideLinksFlag = true;
	this.hideButtonsFlag = true;
	this.hideLinksInterval;
	this.selectedItem = null;
	
	// Public methods
	this.setDisplacement = menuControl_setDisplacement;
	this.selected = menuControl_selected;
	
	// Private Methods
	this.buttonOver = menuControl_buttonOver;
	this.buttonOut = menuControl_buttonOut;
	this.displayLinks = menuControl_displayLinks;
	this.hideLinksDelay = menuControl_hideLinksDelay;
	this.hideLinks = menuControl_hideLinks;
	this.hideMenuButtonsSetTrue = menuControl_hideMenuButtonsSetTrue;
	this.hideMenuButtonsSetFalse = menuControl_hideMenuButtonsSetFalse;
	this.hideMenuLinksSetTrue = menuControl_hideMenuLinksSetTrue;
	this.hideMenuLinksSetFalse = menuControl_hideMenuLinksSetFalse;
	
	// Constructor
	this.constructor = menuControl_constructor;
	this.constructor(value);
}
/*
 * Constructor
 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 */
function menuControl_constructor(value)
{
	// Global Array
	menuControlArray["obj"] = this;
	
	this.menu = document.getElementById(value);
	var elements = this.menu.getElementsByTagName("li");
	for(i=0; i<elements.length; i++)
	{
		elements[i].getElementsByTagName("a")[0].getElementsByTagName("img")[0].onmouseover = this.buttonOver;
		elements[i].getElementsByTagName("a")[0].getElementsByTagName("img")[0].onmouseout = this.hideLinksDelay;
		elements[i].getElementsByTagName("a")[0].onmouseover = this.displayLinks;
		document.getElementById("menu-"+elements[i].getElementsByTagName("a")[0].name).onmouseover = this.hideMenuButtonsSetFalse;
		document.getElementById("menu-"+elements[i].getElementsByTagName("a")[0].name).onmouseout = this.hideLinksDelay; this.hideMenuButtonsSetTrue;
	}
}
function menuControl_selected(value)
{
	menuControlArray["obj"].selectedItem = value;
	var elements = menuControlArray["obj"].menu.getElementsByTagName("li");
	for(i=0; i<elements.length; i++)
	{
		if(menuControlArray["obj"].selectedItem == elements[i].getElementsByTagName("a")[0].name)
		{
			elements[i].getElementsByTagName("a")[0].getElementsByTagName("img")[0].style.top = "0px";
		}
	}
}
/*
 * Public methods
 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 */
function menuControl_setDisplacement(value)
{
	if(Number(value))
		this.displacement = value;
	else
		this.displacement = 0;
	menuControlArray["obj"].displacement = this.displacement;
}
/*
 * Private methods
 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 */
// Button Over Event
function menuControl_buttonOver()
{
	menuControlArray["obj"].hideMenuButtonsSetFalse();
	menuControlArray["obj"].buttonOut();
	this.style.top="0";
}
// Button Out Event
function menuControl_buttonOut()
{
	var elements = menuControlArray["obj"].menu.getElementsByTagName("li");
	for(i=0; i<elements.length; i++)
	{
		// condiction show selected button
		if(menuControlArray["obj"].selectedItem != elements[i].getElementsByTagName("a")[0].name)
		{
			elements[i].getElementsByTagName("a")[0].getElementsByTagName("img")[0].style.top = menuControlArray["obj"].displacement+"px";
		}
	}
}
// Display Links
function menuControl_displayLinks()
{
	var menu = null;
	var obj = null;
	
	// hide all buttons
	 menuControlArray["obj"].buttonOut();
	// show specific button
	var elements = menuControlArray["obj"].menu.getElementsByTagName("li");
	for(i=0; i<elements.length; i++)
	{
		if(this.name == elements[i].getElementsByTagName("a")[0].name)
		{
			elements[i].getElementsByTagName("a")[0].getElementsByTagName("img")[0].style.top = "0px";
		}
	}
	
	// hide all links
	var elements = menuControlArray["obj"].menu.getElementsByTagName("li");
	for(i=0; i<elements.length; i++)
	{
		menu = "menu-"+elements[i].getElementsByTagName("a")[0].name;
		obj = document.getElementById(menu);
		obj.style.display="none";
	}
	// show specific links
	menu = "menu-"+this.name;
	obj = document.getElementById(menu);
	obj.style.display="block";
}
// Hide Links After Predefined Time
function menuControl_hideLinksDelay()
{
	menuControlArray["obj"].hideMenuButtonsSetTrue();
	var obj = null;
	if(this.parentNode.name)
	{
		obj = document.getElementById("menu-"+this.parentNode.name);
	}
	else
		obj = this;
	var li = obj.getElementsByTagName("li");
	// Block onMouseOut events into obj with flags
	for(i=0; i<li.length; i++)
	{
		li[i].onmouseover = menuControlArray["obj"].hideMenuLinksSetFalse;
		li[i].onmouseout = menuControlArray["obj"].hideMenuLinksSetTrue;
	}
	clearInterval(menuControlArray["obj"].hideLinksInterval);
	menuControlArray["obj"].hideLinksInterval = setInterval("menuControlArray[\"obj\"].hideLinks('"+obj.id+"')", 500);
}
// Hide Links 
function menuControl_hideLinks(value)
{
	var obj = document.getElementById(value);
	if(menuControlArray["obj"].hideLinksFlag)
	{
		obj.style.display="none";
	}
	if(menuControlArray["obj"].hideButtonsFlag)
	{
		menuControlArray["obj"].buttonOut();
	}
	clearInterval(menuControlArray["obj"].hideLinksInterval);
}
// Set Hide Buttons Flag for true
function menuControl_hideMenuButtonsSetTrue()
{
	menuControlArray["obj"].hideButtonsFlag = true;
}
// Set Hide Buttons Flag for false
function menuControl_hideMenuButtonsSetFalse()
{
	menuControlArray["obj"].hideButtonsFlag = false;
}
// Set Hide Links Flag for true
function menuControl_hideMenuLinksSetTrue()
{
	menuControlArray["obj"].hideMenuButtonsSetTrue();
	menuControlArray["obj"].hideLinksFlag = true;
}
// Set Hide Links Flag for false
function menuControl_hideMenuLinksSetFalse()
{
	menuControlArray["obj"].hideMenuButtonsSetFalse();
	menuControlArray["obj"].hideLinksFlag = false;
}
