function add_menu_event_handlers()
{
	var elems = document.getElementsByTagName('h3');
	for (i = 0; i < elems.length; i++)
	{
		switch (elems[i].parentNode.className)
		{
			/*case 'moduletable':
			case 'moduletable_menu':*/
			case 'left_module_title':
			case 'left_module_title_menu':
			{
				if (elems[i].parentNode.parentNode.parentNode.id == 'xp-left')
				{
					xplike_addEvent(elems[i], 'click', function(){menu_header_click(this);});
					//Load status from cookies and collapse if required
					var cookie_array = document.cookie.split(';');
					for(var j=0; j<cookie_array.length; j++)
					{
						var c = cookie_array[j];
						while (c.charAt(0)==' ') c = c.substring(1,c.length);
						if (c.indexOf('xplike_menu_status_' + elems[i].firstChild.nodeValue.replace('.', '_').replace(' ', '_')) == 0)
						{
							var menu_cookie = c.split('=')
							if (menu_cookie.length == 2 && menu_cookie[1] == '1')
							{
								menu_header_click(elems[i]);
							}
						}
					}
				}
			}
		}
	}
}

function xplike_addEvent(obj, type, fn)
{
	if (obj.attachEvent)
	{
		obj['e'+type+fn] = fn;
		obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
		obj.attachEvent('on'+type, obj[type+fn]);
	}
	else if (obj.addEventListener)
	{
		obj.addEventListener(type, fn, false);
	}
}

function menu_header_click(elem)
{
	if (elem.parentNode.parentNode.childNodes.length > 0)
	{
		for (var i=0; i<elem.parentNode.parentNode.childNodes.length; i++)
		{
			if (elem.parentNode.parentNode.childNodes[i].firstChild != elem)
			{
				if (elem.parentNode.parentNode.childNodes[i].style)
				{
					if (elem.parentNode.parentNode.childNodes[i].style.display == 'none')
					{
						//Expand menu and delete cookie
						set_background_image(elem, 'expanded');
						elem.parentNode.parentNode.childNodes[i].style.display = '';
						save_menu_status(elem.firstChild.nodeValue, '0', -1);
					}
					else
					{
						//Collapse menu and save cookie
						set_background_image(elem, 'collapsed');
						elem.parentNode.parentNode.childNodes[i].style.display = 'none';
						save_menu_status(elem.firstChild.nodeValue, '1', 30);
					}
				}
			}
		}
	}
}

function set_background_image(elem, name)
{
	for (var i=0; i<document.styleSheets.length; i++)
	{
		if (document.styleSheets[i].href.indexOf('xplike') > -1)
		{
			var colour = document.styleSheets[i].href.substring(document.styleSheets[i].href.lastIndexOf('/')+1).replace('.css', '');
			if (colour != 'template')
			{
				var bg_img = "url(../templates/xplike.plesk.reloaded/images/" + colour + "/menu_title_" + name + ".png)";
				elem.style.backgroundImage = bg_img;
			}
		}
	}
}

function save_menu_status(menu_title, value, how_many_days)
{
	var date = new Date();
	date.setTime(date.getTime()+(how_many_days*24*60*60*1000));
	var expires = "; expires="+date.toGMTString();
	document.cookie = 'xplike_menu_status_' + menu_title.replace('.', '_').replace(' ', '_') + '=' + value + expires + '; path=/';
}

function set_footer()
{
	if (document.getElementById)
	{
		var windowHeight=getWindowHeight();
		if (windowHeight>0)
		{
			var contentHeight = document.getElementById('xp-main-body').offsetHeight;
			if (document.getElementById('xp-right') && document.getElementById('xp-right').offsetHeight + 21 > contentHeight)
			{
				contentHeight = document.getElementById('xp-right').offsetHeight + 21;
			}
			if (document.getElementById('xp-left') && document.getElementById('xp-left').offsetHeight - 6 > contentHeight)
			{
				contentHeight = document.getElementById('xp-left').offsetHeight - 6;
			}
			if (windowHeight > contentHeight)
			{
				contentHeight = windowHeight;
			}
			var new_height = contentHeight - document.getElementById('xp-footer').offsetHeight;
			document.getElementById('xp-footer').style.top=new_height + 'px';
		}
	}
}

function getWindowHeight()
{
	var windowHeight=0;
	if (typeof(window.innerHeight)=='number')
	{
		windowHeight=window.innerHeight;
	}
	else
	{
		if (document.documentElement&&document.documentElement.clientHeight)
		{
			windowHeight=document.documentElement.clientHeight;
		}
		else
		{
			if (document.body&&document.body.clientHeight)
			{
				windowHeight=document.body.clientHeight;
			}
		}
	}
	return windowHeight;
}
