var m_liItems = new Array();
var m_bItemsInit = false;
var m_bListInit = false;
var m_ulList = null;

var m_bDebug = false;
var m_DIVDebug;

var m_liCurrentItem = null;

var m_element;

var m_bCancelDisplay = false;

function Debug(str)
{
	if (m_bDebug)
	{
		m_DIVDebug.innerHTML += str + "<br />";
	}
}

function AppendEvent(strEvent, objSrc, objHandler)
{
	if (window.addEventListener)
	{
		objSrc.addEventListener(strEvent, objHandler, false);
	}
	else
	{
		objSrc.attachEvent('on' + strEvent, objHandler);
	}
}

AppendEvent('load', window, AddEvents);

function AddEvents()
{
	if (m_bDebug)
	{
		m_DIVDebug = document.createElement("div");
		document.body.appendChild(m_DIVDebug);
		m_DIVDebug.innerHTML = "Debug info:<br />";
	}
	
	var lis = getListItems();
	if (lis == null) return;
	var nLINumber = lis.length;
	//while(nLINumber--)
	//{
	//	lis[nLINumber].className = lis[nLINumber].className.replace('-hover-item', '').replace('hover-item', '');
	//}
	
	var ulList = getUL();
	Debug("AddEvents ul = " + ulList);
	if (ulList != null)
	{
		AppendEvent('mouseover', ulList, DisplayItemWithDelay);
		AppendEvent('mouseout', ulList, CancelDisplay);
	}
}

function CancelDisplay()
{
	m_bCancelDisplay = true;
	/*
	if (m_liCurrentItem != null)
		m_liCurrentItem.className = m_liCurrentItem.className.replace(' hotbox-item-hover', '');
		*/
}

function getUL()
{
	if (!m_bListInit)
	{
		var alluls = document.getElementsByTagName('UL');
		var nULnumber = alluls.length;
			
		while (nULnumber--)
		{
			var objElement = alluls[nULnumber];
			if (objElement.className.indexOf('homepage-hotbox') != -1)
			{		
				m_ulList = alluls[nULnumber];
				break;
			}	
		}
		m_bListInit = true;
	}
	return m_ulList;
}


function DisplayItemWithDelay(ev)
{
	m_bCancelDisplay = false;
	ev = ev ? ev : event;
	m_element = ev.srcElement ? ev.srcElement : ev.target
	Debug('DisplayItemWithDelay element is ' + m_element);
	setTimeout(DisplayItem, 700, ev);
}

function DisplayItem(ev)
{
	if (m_bCancelDisplay)
		return;
	ev = ev ? ev : event;
	var sender = m_element; // ev.srcElement ? ev.srcElement : ev.target;
	var li = getParentHotbox(sender);
	
	Debug('DisplayItem li is ' + li);
	if (li == null)
		return;
	m_liCurrentItem = li;
	
	var divDescr = getDescriptionBlock(li);
	Debug('DisplayItem divDescr is ' + divDescr);
	var lis = getListItems();
	var nli = lis.length;
	while(nli--)
	{
		//getDescriptionBlock(lis[nli]).style['z-index'] = '5';
		//getDescriptionBlock(lis[nli]).style['display'] = 'none';
		lis[nli].className = lis[nli].className.replace(' hotbox-item-hover', '');//.replace(' exchange-hover', '');
	}
	//if (m_liCurrentItem.className.indexOf('exchange') != -1)
	//	m_liCurrentItem.className += ' exchange-hover';
	m_liCurrentItem.className += ' hotbox-item-hover';
	//ShowDescrBlock(divDescr);
}

function getParentHotbox(objElement)
{
	var par = objElement;
	if (objElement.tagName == 'UL' && objElement.className == getUL().className)
		return null;
	while (!(par.tagName == 'LI' && par.className.indexOf('hotbox-item') != -1))
	{
		par = par.parentElement || par.parentNode;
	}
	return par;
}

function getListItems()
{
	if (!m_bItemsInit)
	{
		var ulList = getUL();
		if (ulList == null)
			return null;
		var liItems = ulList.getElementsByTagName('LI');
		var nItemNumber = liItems.length;
		var i = 0;
		
		while (nItemNumber--)
		{
			if (liItems[nItemNumber].className.indexOf('hotbox-item') > -1)
			{
				m_liItems[i] = liItems[nItemNumber];
				i++;
			}
		}
		m_bItemsInit = true;
	}
	return m_liItems;
}

function ShowDescrBlock(objDiv)
{
	objDiv.style['display'] = 'block';
	objDiv.style['z-index'] = '10';
}

function getDescriptionBlock(objLI)
{
	var inners = objLI.getElementsByTagName('DIV');
	var nNumberOfDivs = inners.length;
	var element = null;
	while (nNumberOfDivs--)
	{
		if (inners[nNumberOfDivs].className == 'hotbox-item-description')
		{
			element = inners[nNumberOfDivs];
			break;
		}
	}
	return element;
}
