(function ()
{
	var addWindowEvent = function (windowEvent, fn)
	{
		if(typeof(window.addEventListener) === 'function')
		{
			window.addEventListener(windowEvent, fn, false);
		}
		else if (typeof(window['on'+windowEvent]) === 'function')
		{
			var previousFn = window['on'+windowEvent];
			window['on'+windowEvent] = function ()
			{
				previousFn();
				fn();
			};
		}
		else
		{
			window['on'+windowEvent] = function ()
			{
				fn();
			};
		}
	};
	
	var filterCollection = function (collection, filterFn)
	{
		var i, filtered = [];
		if (typeof(collection) !== 'undefined' && collection !== null && typeof(filterFn) === 'function')
		{
			for (i = 0; i < collection.length; i++)
			{
				if (filterFn(collection[i]))
				{
					filtered.push(collection[i]);
				}
			}
		}
		return filtered;
	};
	
	return function ()
	{
		var searchBox;
		var print;
		var rolloverMenu;
		var rolloverMenuNodes;
		var content = [];
		var previousContent;
		var previousMenuNode;
		var mainHomeAd;
		var mainHomeContent;
		var mainHomeContentNodes;
		var rolloverTimout;
		var overMainHomeContent;
		var overRolloverMenu;
		
		var searchBoxEvents = function ()
		{
			searchBox = document.getElementById('searchBox');
			if (searchBox !== null)
			{
				var searchBoxDefaultText = searchBox.title;
				if (searchBox.value === searchBoxDefaultText || searchBox.value === '')
				{
					searchBox.className = 'defaultSearchInput';
					searchBox.value = searchBoxDefaultText;
					searchBox.blur();
				}
				searchBox.onfocus = function ()
				{
					if (searchBox.value === searchBoxDefaultText)
					{
						searchBox.value = '';
					}
					searchBox.className = '';
				};
				searchBox.onblur = function ()
				{
					if (searchBox.value === '')
					{
						searchBox.className = 'defaultSearchInput';
						searchBox.value = searchBoxDefaultText;
					}
				};
			}
		};
		var printEvent = function ()
		{
			print = document.getElementById('print');
			if (print !== null)
			{
				print.onclick = function (e)
				{
					if (typeof(e) === 'undefined')
					{
						e = window.event;
					}
					e.cancelBubble = true;
					e.returnValue = false;
					window.print();
					
					if (typeof(e.stopPropagation) !== 'undefined')
					{
						e.stopPropagation();
						e.preventDefault();
					}
					return false;
				};
			}
		};
		
		var menuEvent = function ()
		{
			rolloverTimout = null;
			if (typeof(previousContent) !== 'undefined' && previousContent !== null)
			{
				previousContent.style.display = 'none';
			}
			if (typeof(previousMenuNode) !== 'undefined' && previousMenuNode !== null)
			{
				previousMenuNode.className = '';
			}
			if (typeof(mainHomeAd) !== 'undefined' && mainHomeAd !== null)
			{
				mainHomeAd.style.display = 'block';
			}
			previousMenuNode = null;
			previousContent = mainHomeAd;
		};
		
		var menuItemEvent = function (i)
		{
			overRolloverMenu = 1;
			if (typeof(rolloverTimout) !== 'undefined' && rolloverTimout !== null)
			{
				window.clearTimeout(rolloverTimout);
				rolloverTimout = null;
			}
			if (typeof(previousContent) !== 'undefined' && previousContent !== null)
			{
				previousContent.style.display = 'none';
			}
			if (typeof(previousMenuNode) !== 'undefined' && previousMenuNode !== null)
			{
				previousMenuNode.className = '';
			}
			content[i].style.display = 'block';
			rolloverMenuNodes[i].className = 'buttonActive';
			previousContent = content[i];
			previousMenuNode = rolloverMenuNodes[i];
		};
		
		var addMenuEvent = function (i)
		{
			if (i + 1 < mainHomeContentNodes.length)
			{
				content[i] = mainHomeContentNodes[i + 1];
				if (content[i] !== null)
				{
					content[i].style.display = 'none';
					rolloverMenuNodes[i].onfocus = function ()
					{
						menuItemEvent(i);
					};
					rolloverMenuNodes[i].onmouseover = function ()
					{
						menuItemEvent(i);
					};
				}
			}
		};
		
		var onResize = function ()
		{
			if (typeof(previousMenuNode) !== 'undefined' && previousMenuNode !== null)
			{
				previousMenuNode.className = '';
				previousMenuNode.className = 'buttonActive';
			}
		};
		
		var rolloverMenuEvents = function ()
		{
			rolloverMenu = document.getElementById('rolloverMenu');
			if (rolloverMenu !== null)
			{
				rolloverMenu = rolloverMenu.getElementsByTagName('ul');
				if (rolloverMenu.length > 0)
				{
					mainHomeContent = document.getElementById('mainHomeContent');
					if (mainHomeContent !== null)
					{
						mainHomeContentNodes = filterCollection(mainHomeContent.childNodes, function (elm)
						{
							if (elm.nodeName === 'DIV')
							{
								return true;
							}
							return false;
						});
						rolloverMenu = rolloverMenu[0];
						overMainHomeContent = 0;
						overRolloverMenu = 0;
						rolloverMenu.onmouseout = function ()
						{
							overRolloverMenu = 0;
							if (overMainHomeContent === 0)
							{
								rolloverTimout = window.setTimeout(menuEvent, 2000);
							}
						};
						mainHomeAd = mainHomeContentNodes[0];
						previousContent = mainHomeAd;
					
						mainHomeContent.onmouseover = function ()
						{
							overMainHomeContent = 1;
							if (typeof(rolloverTimout) !== 'undefined' && rolloverTimout !== null)
							{
								window.clearTimeout(rolloverTimout);
								rolloverTimout = null;
							}
						};
						mainHomeContent.onmouseout = function ()
						{
							overMainHomeContent = 0;
							if (overRolloverMenu === 0)
							{
								rolloverTimout = window.setTimeout(menuEvent, 2000);
							}
						};
						rolloverMenuNodes = rolloverMenu.getElementsByTagName('a');
						for (var i = 0;i < rolloverMenuNodes.length; i++)
						{
							addMenuEvent(i);
						}
						addWindowEvent('resize', onResize);
					}
				}
			}
		};
		
		var onUnLoad = function ()
		{
			//remove all eventHandlers, etc, to prevent memoryleaks
			if (typeof(searchBox) !== 'undefined' && searchBox !== null)
			{
				searchBox.onfocus = null;
				searchBox.onblur = null;
				searchBox = null;
			}
			
			if (typeof(print) !== 'undefined' && print !== null)
			{
				print.onclick = null;
				print = null;
			}
			
			if (typeof(rolloverMenu) !== 'undefined' && rolloverMenu !== null)
			{
				rolloverMenu.onmouseout = null;
				rolloverMenu = null;
				
				if (typeof(mainHomeContent) !== 'undefined' && mainHomeContent !== null)
				{
					mainHomeContent.onmouseover = null;
					mainHomeContent.onmouseout = null;
					mainHomeContent = null;
				}
				
				if (typeof(rolloverMenuNodes) !== 'undefined' && rolloverMenuNodes !== null)
				{
					for (var i = 0;i < rolloverMenuNodes.length; i++)
					{
						if (rolloverMenuNodes[i] !== null)
						{
							rolloverMenuNodes[i].onfocus = null;
							rolloverMenuNodes[i].onmouseover = null;
							//rolloverMenuNodes[i] = null;
						}
					}
					rolloverMenuNodes = null;
				}
			}
		};

		var onLoad = function ()
		{
			if (typeof(document.getElementById) !== 'undefined')
			{
				searchBoxEvents();
				printEvent();
				rolloverMenuEvents();
				addWindowEvent('unload', onUnLoad);
			}
		};
    		
    	addWindowEvent('load', onLoad);
	};
})()();
