var isDOM = (document.getElementById ? true : false); 
var isIE  = (document.all && !window.opera ? true : false);
var isIE4 = (isIE && !isDOM);
var isNS4 = (navigator.appName.toLowerCase()=="netscape" && navigator.appVersion.substring(0, 1)=="4");
var __size_object;
var __size_index = 0;
var __size_html = '';
var __menu_offset = 3;
var __menu_index = 0;
var __menu_array = [];

if(isNS4) window.onload = nnonload;

function nnonload() {
	if(!isNS4) return;
	for(count = 0; count < __menu_array.length; count++)
		domenu(__menu_array[count]);
}

function domenu(menu, hstr) {
	if(!isNS4)
		document.write(hstr);
	var ofs = [0, 0];
	for(cmenu = 0; cmenu < menu.items.length; cmenu++) {
		with(menu.items[cmenu][0]) {
			var id = getid(menu, cmenu) + 'doc';
			if(isNS4) {
				if(cmenu!=0) {
					size.left += ofs[0];
					size.top += ofs[1];
				}
				if(cmenu==0 && isnoabs) {
					ref = getlayer(document.layers, id);
					with(ref.document) {
						open();
						write(html);
						close();
					}
					ofs = [ref.pageX, ref.pageY];
				} else {
					ref = new Layer(1);
					ref.document.write(html);
					ref.document.close();
				}
				html = '';
			} else
				ref = getsty(id);
			if(isNS4)
				var doc = getlayer(ref.document.layers, getid(menu, cmenu) + 'con');
			for(citem = 1; citem < menu.items[cmenu].length; citem++) {
				with(menu.items[cmenu][citem]) {
					if(!istext && !issep) {
						var id = getid(menu, cmenu, citem);
						for(cover = 0; cover < 2; cover++) {
							if(isNS4)
								ref[cover] = doc.document.layers[id + cover];
							else
								ref[cover] = getsty(id + cover);
			}}}}
			if(cmenu==0)
				showmenu(menu, 0, true)
}}}

function overmenu(menu, mid, iid) {
	clearTimeout(menu.timerShow);
	clearTimeout(menu.timerHide);
	hidemenus(menu, mid);
	setover(menu, mid, iid);
	with(menu.items[mid][iid]) {
		if(submenu)
			menu.timerShow = setTimeout('showmenu(' + menu.name + ', ' + submenu + ', true)', 200);
		if(!istext) window.status = text;
	}
	return(true);
}

function outmenu(menu, mid, iid) {
	if((mid == 0) && !menu.items[mid][iid].submenu)
		hidemenus(menu, 0, 1)
	else
		menu.timerHide = setTimeout('hidemenus(' + menu.name + ', 0, 1)', 700);
	window.status = '';
	return(true);
}

function setover(menu, mid, iid) {
	var count;
	var arr = [menu.items[mid][0].overItem, iid];
	for(count = 0; count < 2; count++) {
		if(!isnull(arr[count])) {
			with(menu.items[mid][arr[count]]) {
				if(!istext & !issep) {
					ref[Math.abs(count)].visibility = 'inherit';
					ref[Math.abs(!count)].visibility = 'hidden';
	}}}}
	menu.items[mid][0].overItem = iid;
}

function showmenu(menu, mid, show) {
	with(menu.items[mid][0]) {
		if(visible!=show) {
			visible = show;
			if(show) {
				ref.left = getdef(size.left, 0);
				ref.top = getdef(size.top, 0);
				ref.visibility = 'inherit';
				menu.shows[menu.shows.length] = mid;
			} else {
				ref.visibility = 'hidden';
				ref.left = 0;
				ref.top = 0;
				setover(menu, mid, null);
				menu.shows = menu.shows.slice(0, menu.shows.length - 1);
}}}}

function hidemenus(menu, mid, over) {
	var count;
	if(over) setover(menu, mid, null);
	for(count = menu.shows.length - 1; count > 0; count--) {
		if(menu.shows[count]==mid) return;
		showmenu(menu, menu.shows[count], false);
}}

function isnull(_var) {
	return(_var==null || typeof(_var)=='undefined');
}

function getdef(_var, _def) {
	return(isnull(_var) ? _def : _var);
}

function getref(id) {
	if(isDOM) return(document.getElementById(id));
	if(isNS4) return(document.layers[id]);
	if(isIE4) return(document.all[id]);
}

function getsty(id) {
	return(isNS4 ? getref(id) : getref(id).style);
}

function getid(menu, mid, iid) {
	if(isnull(mid))
		return('menu_size_object');
	var id = menu.name + '_menu_' + mid;
	if(!isnull(iid))
		id += '_item_' + iid;
	return(id + '_');
}

function getevents(menu, mid, iid) {
	return (
		' onMouseOver="return overmenu(' + menu.name + ',' + mid + ',' + iid + ')"' +
		' onMouseOut="return outmenu(' + menu.name + ',' + mid + ',' + iid + ')" '
)}

function getsize(menu, html, ismin) {
	if(ismin)
		html = '<table width=1 border=0 cellpadding=0 cellspacing=0><tr><td nowrap class="' + menu.clses[0].name + '">' + html + '</td></tr></table>';
	if(html=='-')
		return{width:1, height:1}
	var ins = '<span class="' + menu.clses[0].name + '"><nobr>' + html + '</nobr></span>';
	if(!__size_object && isDOM) {
		createsize(null, '');
		__size_object = getref(getid());
	}
	if(__size_html!=html) {
		if(isDOM)
			__size_object.innerHTML = ins;
		else {
			__size_index += 1;
			createsize(ins, __size_index, 1, 1);
			__size_object = getref(getid() + __size_index);
		}
		__size_html = html;
	}
	return({
		width: (isNS4 ? __size_object.clip.width : __size_object.offsetWidth),
		height: (isNS4 ? __size_object.clip.height : __size_object.offsetHeight)
})}

function getlayer(layers, id) {
	var count, layer;
	for(count = 0; count < layers.length; count++){
		layer = layers[count];
		if(layer.id==id) return(layer);
		layer = getlayer(layer.document.layers, id);
		if(layer) return(layer);
}}

function createsize(body, id, wid, hei) {
	var htm = createlayer(body, getid() + id, null, 'absolute', 'hidden', 0, 0, wid, hei);
	document.write(htm);
	return(true);
}

function createlayer() {
	var args = arguments;
	var pars = ['body', 'id', 'events', 'position', 'visibility', 'left', 'top', 'width', 'height', (isNS4 && getdef(args[9], '').indexOf('.')==-1 ? 'bgcolor' : 'background'), 'z-index', 'filter'];
	var count;
	var htm = '';
	if(isNS4) {
		_i = ((args[3]!='absolute') ? 'i' : '');
		args[3] = null;
		htm += '<' + _i + 'layer ';
	} else
		htm += '<div ';
	for(count = 1; count < args.length; count++) {
		if(!isNS4 && count==3)
			htm += ' style="';
		if(!isnull(args[count])) {
			if(count==2)
				htm += args[count];
			else {
				htm += pars[count];
				if(isNS4 || count<3)
					htm += '="' + args[count] + '" ';
				else
					htm += ':' + args[count] + ';';
	}}}
	if(!isNS4 && args.length>=3)
		htm += '"';
	htm += '>' + getdef(args[0], '') + (isNS4 ? ('</' + _i + 'layer>') : '</div>');
	return(htm);
}

function createitem(menu, mid, iid, over) {
	with(menu.items[mid][0]) {
		with(menu.items[mid][iid]) {
			if((istext || issep) && over!=0) return('');
			var id = getid(menu, mid, iid);
			var re = '';
			var ishor = (menu.ishor && mid==0);
			if(issep && ishor) {
				re = createlayer('<img src=' + menu.trans + ' width=1 height=1>', null, null, 'absolute', 'inherit', 2, 0, (rect.width-4), (size.height-border*2), menu.colMnu.bord);
				re = createlayer(re, null, getevents(menu, mid, iid), 'absolute', 'inherit', rect.left, 0, rect.width, (size.height-border*2));
			} else if(issep) {
				re = createlayer('<img src=' + menu.trans + ' width=1 height=1>', null, null, 'absolute', 'inherit', 0, 2, (size.width-border*2), (rect.height-4), menu.colMnu.bord);
				re = createlayer(re, null, getevents(menu, mid, iid), 'absolute', 'inherit', 0, rect.top, (size.width-border*2), rect.height);
			} else {
				if(over==2) {
					var ev = getevents(menu, mid, iid);
					if(ishref)
						re += '<a href="' + href + '"' + (frame ? ' target="' + frame + '">' : '>');
					re += '<img border=0 src=' + menu.trans + ' width=' + rect.width + ' height=' + rect.height + (tooltip ? ' alt="' + tooltip + '"' : '') + (isNS4 ? '' : ev) + '>'
					if(ishref)
						re += '</a>';
					if(isNS4)
						re = '<layer ' + ev + '>' + re + '</layer>';
					re = createlayer(re, id + over, null, 'absolute', 'inherit', rect.left, rect.top, rect.width, rect.height, null, 1);
				} else {
					var cl = (over ? (enabled ? 1 : 2) : (enabled ? 0 : 2));
					var c1 = (over ? (enabled ? menu.colCur.back : menu.colDis.back) : null);
					var c2 = (over ? (enabled ? menu.colCur.bord : menu.colDis.bord) : null);
					re += '<table border=0 cellspacing=0 cellpadding=0 width=' + (rect.width-(istext?0:4)) + ' height=' + (rect.height-(istext?0:4)) + '><tr>';
					if(!istext)
						re += '<td width=' + (__menu_offset*2) + ' nowrap></td>';
					re += '<td width=100% class="' + menu.clses[cl].name + '">' + text + '</td>';
					if(submenu && !ishor) 
						re += '<td nowrap align=right><img src=' + menu.arrow.name + ' width=' + menu.arrow.width +' height=' + menu.arrow.height + ' hspace=' + __menu_offset + '></td>';
					re += '</tr></table>';
					if(!istext) {
						re = createlayer(re, null, null, 'absolute', 'inherit', 1, 1, (rect.width-4), (rect.height-4));
						re = createlayer(re, null, null, 'absolute', 'inherit', 1, 1, (rect.width-2), (rect.height-2), c1);
						re = createlayer(re, id + over, null, 'absolute', (over ? 'hidden' : 'inherit'), rect.left, rect.top, rect.width, rect.height, c2, 0);
					}
					else
						re = createlayer(re, null, getevents(menu, mid, iid), 'absolute', 'inherit', rect.left, rect.top, rect.width, rect.height);
			}}
			return(re);
}}}

function Size(left, top, width, height) {
	this.top = top;
	this.left = left;
	this.width = width;
	this.height = height;
}

function Color(fore, back, bord) {
	this.fore = fore;
	this.bord = bord;
	this.back = (!isNS4 && back.indexOf('.')>=0 ? 'url(' + back + ')' : back);
}

function MenuInit(style, arrow, trans, shadow, colMnuFore, colMnuBack, colMnuBord, colCurFore, colCurBack, colCurBord, colDisFore, colDisBack, colDisBord, isHor) {
	this.colMnu = new Color(
		getdef(colMnuFore, 'black'), 
		getdef(colMnuBack, '#F1F1F1'),
		getdef(colMnuBord, 'dimgray'));
	this.colCur = new Color(
		getdef(colCurFore, 'black'), 
		getdef(colCurBack, '#CCCCCC'),
		getdef(colCurBord, '#999999'));
	this.colDis = new Color(
		getdef(colDisFore, 'gray'), 
		getdef(colDisBack, 'white'),
		getdef(colDisBord, 'silver'));
	this.style = getdef(style, '');
	arrow = arrow.toString().split(',');
	this.arrow = {
		name: getdef(arrow[0], ''), 
		width: parseInt(getdef(arrow[1], 4)), 
		height: parseInt(getdef(arrow[2], 7))
	}
	this.trans = getdef(trans, '');
	this.shadow = getdef(shadow, 1);
	this.ishor = getdef(isHor, 0);
	this.items = [];
	this.shows = [];
	this.clses = [
		{name: '', style: 'color:' + this.colMnu.fore + ';' + this.style},
		{name: '', style: 'color:' + this.colCur.fore + ';' + this.style},
		{name: '', style: 'color:' + this.colDis.fore + ';' + this.style}
	]
	this.counter = 0;
	this.name = '';
	this.timerHide = null;
	this.timerShow = null;
}

function Menu(border, left, top, width) {
	this.border = Math.floor(getdef(border, 1));
	this.size = new Size(left, top, getdef(width, 0), 0);
	this.parentMenu = null;
	this.parentItem = null;
	this.overItem = null;
	this.isarrow = false;
	this.isnoabs = (isnull(this.size.left) || isnull(this.size.top));
	this.visible = false;
	this.zindex = 1000;
	this.html = '';
	this.ref = null;
}

function Item(text, href, submenu, enabled, tooltip, frame) {
	this.text = getdef(text, '');
	this.href = getdef(href, '');
	this.submenu = getdef(submenu, 0);
	this.enabled = getdef(enabled, 1);
	this.tooltip = getdef(tooltip, '');
	this.frame = getdef(frame, '');
	this.issep = (this.text=='-');
	this.ishref = (!this.issep && this.href!='' && this.enabled);
	this.istext = (!this.issep && this.href=='' && !this.submenu && this.enabled);
	this.isover = false;
	this.rect = new Size(0, 0, 0, 0);
	this.ref = [null, null];
}

function MenuLoad(name) {
	if(!isDOM && !isIE4 && !isNS4) return;

	var menu = eval(name);
	menu.name = name
	menu.counter = __menu_index;

	if(isNS4)
		__menu_array[__menu_index] = menu;
	__menu_index += 1;

	var style = '';
	for(count = 0; count < 3; count++) {
		menu.clses[count].name = menu.name + 'item' + count;
		style += '.' + menu.clses[count].name + '{' + menu.clses[count].style + '}';
	}
	document.write('<style>' + style + '</style>');
	
	for(cmenu = 0; cmenu < menu.items.length; cmenu++) {
		var ishor = (menu.ishor && cmenu==0);
		var maxsize = 0;
		var txtsize = 0;
		with(menu.items[cmenu][0]) {
			var recttop = border * 2;
			var rectleft = border * 2;
			for(citem = 1; citem < menu.items[cmenu].length; citem++) {
				with(menu.items[cmenu][citem]) {
					rect.width = getsize(menu, text, istext).width;
					rect.height = getsize(menu, text).height;
					if(ishor) {
						rect.top = recttop;
						rect.left = rectleft;
						if(!issep)
							rect.width += __menu_offset * 4 + 4;
						else
							rect.width += 4;
						rect.height += 4;
						rectleft += rect.width;
						maxsize = rect.height;
					}
					else {
						rect.top = recttop;
						rect.left = rectleft;
						if(!issep)
							if(rect.height < menu.arrow.height)
								rect.height = menu.arrow.height;
						rect.height += 4;
						recttop += rect.height;
						if(istext) {
							if(txtsize < rect.width)
								txtsize = rect.width;
						} else {
							rect.width += __menu_offset * 4 + 4;
							if(!istext && maxsize < rect.width)
								maxsize = rect.width ;
						}
					}
					if(submenu) {
						isarrow = true;
						with(menu.items[submenu][0]) {
							parentMenu = cmenu;
							parentItem = citem;
			}}}}
			if(ishor) {
				size.height = maxsize + border * 6;
				size.width = rectleft + border * 4;
			}
			else {
				size.height = recttop + border * 4;
				if(isarrow) maxsize += menu.arrow.width + __menu_offset * 2;
				if(maxsize < txtsize) maxsize = txtsize;
				maxsize += border * 6;
				if(size.width < maxsize) size.width = maxsize;
				for(citem = 1; citem < menu.items[cmenu].length; citem++)
					with(menu.items[cmenu][citem])
						rect.width = size.width - border * 6;
			}
			if(!isnull(parentMenu)) {
				var pm = menu.items[parentMenu][0];
				var pi = menu.items[parentMenu][parentItem];
				if(isnoabs) {
					if(menu.ishor && parentMenu==0) {
						size.top = getdef(pm.size.top, 0) + getdef(pm.size.height, 0) - (pm.border ? 1 : -1);
						size.left = getdef(pm.size.left, 0) + pi.rect.left + pm.border;
					}
					else {
						size.top = getdef(pm.size.top, 0) + pi.rect.top + pm.border + 1;
						size.left = getdef(pm.size.left, 0) + pm.size.width - __menu_offset - pm.border * 3 - 2;
					}
				}
				zindex = pm.zindex + 1;
}}}}

function MenuWrite(name) {
	if(!isDOM && !isIE4 && !isNS4) return;

	var menu = eval(name);
	var hstr = '';
	for(cmenu = 0; cmenu < menu.items.length; cmenu++) {
		with(menu.items[cmenu][0]) {
			for(citem = 1; citem < menu.items[cmenu].length; citem++) {
				with(menu.items[cmenu][citem]) {
					html += createitem(menu, cmenu, citem, 1);
					html += createitem(menu, cmenu, citem, 0);
					html += createitem(menu, cmenu, citem, 2);
			}}
			var hx = ['#9A9A9A', '#B4B4B4', '#CECECE', '#E7E7E7'];
			var sz = new Size(border, border, size.width - border * 2, size.height - border * 2);
			var id = getid(menu, cmenu);
			html = createlayer(html, id + 'con', null, 'absolute', 'inherit', sz.left, sz.top, sz.width, sz.height, menu.colMnu.back);
			if(border) {
				sz.width += 2;
				sz.height += 2;
				html = createlayer(html, null, null, 'absolute', 'inherit', 0, 0, sz.width, sz.height, menu.colMnu.bord, 10);
				if(menu.shadow)
					for(i = 4; i > 0; i--)
						html += createlayer(null, null, null, 'absolute', 'inherit', i, i, sz.width, sz.height, (isIE ? 'gray' : hx[i-1]), 1, (isIE ? 'alpha(opacity=' + parseInt((1-i/(i+1))*100) + ')' : null));
			}
			if(!isNS4) {
				html = createlayer(html, id + 'doc', null, 'absolute', 'hidden', 0, 0, 1, 1, null, zindex);
				hstr += html;
				html = '';
	}}}
	with(menu.items[0][0]) {
		if(isnoabs) {
			if(isNS4)
				document.write('<table border=0 cellpadding=0 cellspacing=0><tr><td>' + createlayer(null, getid(menu, 0) + 'doc', null, null, 'show', null, null, size.width, size.height) + '</td></tr></table>');
			else {
				hstr = createlayer(hstr, null, null, 'absolute', 'visible', null, null, size.width, size.height, null, 9999 - menu.counter);
				hstr = createlayer(hstr, null, null, null, null, null, null, size.width, size.height);
	}}}
	if(!isNS4) domenu(menu, hstr);
}