var topLevelHorizontal = false;
var topLevelDynPos = false;
var topLevelPosX = 0;
var topLevelPosY = 0;

var menuHorizontalLimit = 770;

var menuItemWidth = 153;
var menuItemFont = 'arial';
var menuItemFontSize = 11;
var menuItemFontColor = '#024a94';
var menuItemSpace = 20;
var menuItemPaddingTop = 1;
var menuItemPaddingLeft = 5;
var menuItemPaddingRight = 6;
var menuItemPaddingBottom = 2;
var menuItemBgC = '#c2d3e7';

var menuHeaderHeight = 10;
var menuHeaderImg = '/files/menu_header.gif';

var menuFooterHeight = 10; 
var menuFooterImg = pageurl + '/files/menu_footer.gif';

var menuAutoHide = 1;
var menuHideWait = 1000;
var menuNextLevelWait = 30;
var menuFirstLevelLeftOffset = 1000;
var menuLeftOffset = 6;
var menuTopOffset = 2; //-menuHeaderHeight;

var menuImgPath = pageurl + '/files/';

var menuContainerName = "navi_container1";

function sBrowser() {
	this.gecko = false;
	this.ie = false;
	this.opera = false;
	this.khtml = false;
	this.ns4 = false;

	if(window.opera) this.opera = true;
	 else if(document.getElementById && ! document.all) this.gecko = true;
		else if(document.getElementById && document.all) {
			if(navigator.userAgent.toLowerCase().indexOf('khtml') > -1) {
				this.khtml = true;
			}
			else {
				this.ie = true;
			}
		}
		else if(document.layers) this.ns4 = true;
}

var sb = new sBrowser();

var nLevel = false;
var renderDelay = false;
var hideDelay = false;

function findChildren() {
	for(var x=0; x<menuData.length; x++) {
		menuData[x][5] = false;
		for(var y=0; y<menuData.length; y++) {
			if(menuData[y][1] == menuData[x][0]) {
				menuData[x][5] = true;
				break;
			}
		}
	}
}

function addCon(ref) {
	var c = document.createElement('DIV');
	c.id = 'con' + ref;
	c.idnum = ref;
	c.oldOver = false;
	
	setStyle(c, 0, ref);	
//	addHeader(c, ref);

	for(var x=0; x<menuData.length; x++) {

		var id = menuData[x][0];
		var reference = menuData[x][1];
		var content = menuData[x][2];
		var link = menuData[x][3];
		var gfxSize = menuData[x][4];
		var hasChildren = menuData[x][5];

		if(ref == reference) {
			var i = document.createElement('DIV');			
			i.id = 'itm' + id;
			i.idnum = id;

			setStyle(i, 1, ref)

			if(gfxSize) {
				var imgOut = content.substring(0, content.indexOf('|'));
				var imgOver = content.substring(content.indexOf('|')+1, content.length);

				var imgW = gfxSize.substring(0, gfxSize.indexOf('x'));
				var imgH = gfxSize.substring(gfxSize.indexOf('x')+1, gfxSize.length);

				var g = document.createElement('IMG');
				g.src = menuImgPath + imgOut;
				g.width = imgW;
				g.height = imgH;
				i.appendChild(g);

				i.img = new Image();
				i.img.src = menuImgPath + imgOut;

				i.imgO = new Image();
				i.imgO.src =  menuImgPath + imgOver;
			}
			else {
				i.innerHTML = content;
			}

			if(link && link != '') {
				i.link = link;
			}

			if(hasChildren) {
				i.child = new level(id);
			}

			i.onmouseover = over;
			i.onmouseout = out;
			i.onclick = click;
			c.appendChild(i);
		}
	}

//	addFooter(c, ref);
	return c;
}

function level(ref) {
	this.con = addCon(ref);
	this.posX = topLevelPosX;
	this.posY = topLevelPosY;
	this.isRendered = false;
	this.render = function() {
		this.con.style.left = this.posX;
		this.con.style.top = this.posY;
		document.getElementById(menuContainerName).appendChild(this.con);
		this.isRendered = true;
	}
	this.remove = function() {
		for(var x=0; x<this.con.childNodes.length; x++) {
			if(this.con.childNodes[x].child && this.con.childNodes[x].child.isRendered) {
				this.con.childNodes[x].child.remove();
			}
		}

		if(this.con.idnum != 0) {
			document.getElementById(menuContainerName).removeChild(this.con);
			this.isRendered = false;
		}
		if(this.con.oldOver) {
			if(this.con.oldOver.img) {
				this.con.oldOver.firstChild.src = this.con.oldOver.img.src;
			}
			else {
				this.con.oldOver.style.textDecoration = 'none';
			}
			this.con.oldOver = false;
		}
	}
}

function click() {
	if(this.link) {
		self.location = pageurl + this.link;
		clearTimeout(renderDelay);
		clearTimeout(hideDelay);
		menu.remove();
	}
}

function hfOver() {
	clearTimeout(hideDelay);
	clearTimeout(renderDelay);
}

function over() {
	clearTimeout(hideDelay);
	clearTimeout(renderDelay);

	if(this.img) {
		this.firstChild.src = this.imgO.src;
	}
	else {
		this.style.textDecoration = 'underline';
	}

	if(this.parentNode.oldOver && this.parentNode.oldOver != this) {
		if(this.parentNode.oldOver.img) {
			this.parentNode.oldOver.firstChild.src = this.parentNode.oldOver.img.src;
		}
		else {
			this.parentNode.oldOver.style.textDecoration = 'none';
		}
		if(this.parentNode.oldOver.child && this.parentNode.oldOver.child.isRendered) {
			this.parentNode.oldOver.child.remove();
		}
	}

	if(this.child && this.child.isRendered && this.child.con.oldOver) {
		this.child.con.oldOver.style.textDecoration = 'none';
		if(this.child.con.oldOver.child && this.child.con.oldOver.child.isRendered) {
			this.child.con.oldOver.child.remove();
		}
	}

	this.parentNode.oldOver = this;

	if(this.child && !this.child.isRendered) {
		if(topLevelHorizontal && this.parentNode.idnum == 0) {
			this.child.posX = this.parentNode.offsetLeft + this.offsetLeft  - menuLeftOffset;
			this.child.posY = this.parentNode.offsetTop + this.parentNode.offsetHeight; // + topLevelBorderOffset;
		}
		else {

			this.child.posX = this.parentNode.offsetWidth + this.parentNode.offsetLeft - menuLeftOffset;
			this.child.posY = this.parentNode.offsetTop + this.offsetTop + menuTopOffset;

			if((this.child.posX + menuItemWidth) > menuHorizontalLimit) {
				this.child.posX = this.parentNode.offsetLeft - menuItemWidth + menuLeftOffset;
			}

		}
		nLevel = this.child;
		renderDelay = setTimeout('nLevel.render()', menuNextLevelWait);
	}
}

function out() {
	clearTimeout(renderDelay);
	if(menuAutoHide) {
		hideDelay = setTimeout('menu.remove()', menuHideWait);
	}
}

function addHeader(obj, ref) {
	if(ref != 0) {
		var h = document.createElement('IMG');
		h.style.display = 'block';
		h.id = 'head' + ref;
		h.src = menuHeaderImg;		
		h.width = menuItemWidth + 'px';
		h.height = menuHeaderHeight + 'px';
		h.onmouseover = hfOver;
		h.onmouseout = out;
		obj.appendChild(h);
	}
}


function addFooter(obj, ref) {
	if(ref != 0) {
		var f = document.createElement('IMG');
		f.style.display = 'block';
		f.id = 'foot' + ref;
		f.src = menuFooterImg;
		f.width = menuItemWidth;
		f.height = menuFooterHeight;
		f.onmouseover = hfOver;
		f.onmouseout = out;
		obj.appendChild(f);
	}
}

function setStyle(obj, type, ref) {
	
	if(type == 0) {
		obj.style.position = 'absolute';
		obj.style.overflow = 'auto';
		obj.style.zIndex = '1000';
				
		if(ref == 0) {
			obj.style.left = topLevelPosX + 'px';
			obj.style.top = topLevelPosY + 'px';
			obj.style.whiteSpace = 'nowrap';

			if(!topLevelHorizontal) {
				obj.style.width = menuItemWidth + 'px';
			}
		}
		else {
			obj.style.border = "1px solid #ffffff";
			obj.style.borderBottom = 'none';
		}
	}
	else if(type == 1) {
		obj.style.fontFamily = menuItemFont;
		obj.style.fontSize = menuItemFontSize + 'px';
		obj.style.color = menuItemFontColor;

		if(sb.ie) obj.style.cursor = 'hand';
		else obj.style.cursor = 'pointer';

		if(ref == 0) {
			obj.style.left = topLevelPosX + 'px';
			obj.style.top = topLevelPosY + 'px';
			obj.style.borderBottom = '1px solid #90aed4';

			if(topLevelHorizontal) {

				if (obj.style.setProperty) {
					//moz
					obj.style.setProperty('float', 'left', 'important');
				}
				else {
					//ie,op: 
					obj.style.styleFloat = 'left';
				}
				obj.style.marginLeft = menuItemSpace + 'px';
			}
			else {
				obj.style.width = menuItemWidth;
			}
		}
		else {
			if(sb.gecko || sb.khtml) {
				obj.style.width = menuItemWidth - (menuItemPaddingLeft + menuItemPaddingRight) + 'px';
			}
			else {
				obj.style.width = menuItemWidth + 'px';
			}
			obj.style.paddingTop = menuItemPaddingTop;
			obj.style.paddingLeft = menuItemPaddingLeft;
			obj.style.paddingRight = menuItemPaddingRight;
			obj.style.paddingBottom = menuItemPaddingBottom;

			obj.style.background = menuItemBgC;
			obj.style.borderBottom = '1px solid #ffffff';
		}
	}
}

function menuInit() {
	findChildren();
	menu = new level(0);
	menu.render();
}
