function getElementsByClassName(oElm, sTagName, sClassName){
	var aElements = (sTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(sTagName);
	var aReturnElements = [];
	sClassName = sClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + sClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i < aElements.length; i++){
		oElement = aElements[i];
		if(oRegExp.test(oElement.className))
			aReturnElements.push(oElement);
	}
	return aReturnElements
}

function applyResize(){
	var lines = getElementsByClassName(document.getElementById('navTop'), 'div', 'line');

	for(var i=lines.length-1;i>=0;i--){
		var line = lines[i];
		var height = line.clientHeight;
		var units = getElementsByClassName(line,'div','unit');

		for(var j=0,l=units.length;j<l;j++){
			var unit = units[j];
			var body = getElementsByClassName(unit,'div','bd');
			
			var h2apply = height - unit.clientHeight;
			
			for(var k=0,m=body.length;k<m;k++){
				var bdy = body[k];
				
				var oriH = bdy.offsetHeight;
				doResize(bdy, oriH + h2apply);
			}
		}
	}
}

function doResize(elm,size){
	elm.style[/MSIE 6/.test(navigator.userAgent) ? "height" : "minHeight"] =  Math.ceil(size) + "px";
}

function addHover(){
	if(/MSIE 6/.test(navigator.userAgent)){
		var medias = getElementsByClassName(navTop, 'div', 'media');
		
		for(var i=0,l=medias.length;i<l;i++){
			var media = medias[i];
			
			media.onmouseover = function(){
				this.className += " hover";
			};
			
			media.onmouseout = function(){
				this.className = this.className.replace(" hover", "");
			};
		}
		
		var forumPosts = getElementsByClassName(navTop, 'div', 'forumPost');
		
		for(var i=0,l=forumPosts.length;i<l;i++){
			var fp = forumPosts[i];
			
			fp.onmouseover = function(){
				this.className += " hover";
			};
			
			fp.onmouseout = function(){
				this.className = this.className.replace(" hover", "");
			};
		}
	}
}

var navUltraH = {
	obj: {
		aNavItem: [],
		current: {},
		nav: {},
		oItem: {}
	},
	
	timer: null,
	
	show: function(oItem){
		if(navUltraH.obj.current.open == true && oItem.open == true){
			return clearTimeout(oItem.intervalOut);
		}
		
		if(navUltraH.obj.current && navUltraH.obj.current != oItem && navUltraH.obj.current.open == true){
			navUltraH.hide(navUltraH.obj.current, 250);
		}
		
		clearTimeout(navUltraH.obj.current.intervalIn);
		oItem.intervalIn = setTimeout(function(){
				oItem.item.className += ' hover';
				oItem.open = true;
				navUltraH.obj.current = oItem;
				clearTimeout(oItem.intervalOut);
			},250)
	},
	
	hide: function(oItem, iTime){
		clearTimeout(navUltraH.obj.current.intervalOut);
		clearTimeout(oItem.intervalIn);
		oItem.intervalOut = setTimeout(function(){
				clearTimeout(oItem.interval);
				oItem.open = false;
				oItem.item.className = oItem.item.className.replace(new RegExp("\\bhover\\b", "g"), "");
			},iTime);
	},
	
	init: function(){
		navUltraH.obj.nav = document.getElementById('navTop');
		
		navUltraH.obj.oItem["navTop"] = {};
		navUltraH.obj.oItem["navTop"].aItem = [];
		navUltraH.obj.aNavItem = getElementsByClassName(navUltraH.obj.nav, 'li', 'cell');
		
		for(var index=0, l=navUltraH.obj.aNavItem.length; index<l; index++){
			var item = navUltraH.obj.aNavItem[index];
			
			navUltraH.obj.oItem["navTop"].aItem[index] = {
				'item':item,
				'open':false
			};
			
			navUltraH.obj.oItem["navTop"].aItem[index].item.onmouseover = function(oTmp){
					return function(evt){
						if(!evt) evt = window.event;
						if(evt){
							//(new Event(evt)).stop();
							return navUltraH.show(oTmp);
						}
					}
				}(navUltraH.obj.oItem["navTop"].aItem[index]);
			
			navUltraH.obj.oItem["navTop"].aItem[index].item.onmouseout = function(oTmp){
					return function(evt){
						if(!evt) evt = window.event;
						if(evt){
							//(new Event(evt)).stop();
							return navUltraH.hide(oTmp, 1000);
						}
					}
				}(navUltraH.obj.oItem["navTop"].aItem[index]);
		}
	}
};


function init(){
	applyResize();
	addHover();
	navUltraH.init();
}

if (window.addEventListener) window.addEventListener('load', init, false);
else window.attachEvent('onload', init);