var isDOM,isIE,isNN4,isOpera,isIE4;

if (navigator.userAgent.indexOf('Opera')!=-1) isOpera=1;
if (document.getElementById) isDOM=1;
if (document.all && !isOpera) isIE=1;
if (document.layers) isNN4=1;
if (!isDOM && document.all) isIE4=1;

var sub='sub', top='top', t1=0, t2=0, actPref='active';
var itemsList=new Array(), subList=new Array();

function menuItem(id, parentId, menu) {
	var m=itemsList;
	if (!m[menu]) m[menu]=new Array();
	m[menu][id] = new Array();
	m[menu][id].id=id;
	m[menu][id].parentId=parentId;
	m[menu][id].children=new Array();
	if (parentId!=0) {
		m[menu][parentId].children[m[menu][parentId].children.length]=id;
		m[menu][id].level=m[menu][parentId].level+1;
		if (!subList[parentId]) subList[parentId]=m[menu][parentId].level+1;
	} else {
		m[menu][id].level=0;
	}
	m[menu][id].menu=menu;
}

function activeTop(id) {
	var parId, par, m=itemsList;
	for (var i in m) {
		if (m[i][id] && m[i][id].parentId!=0) {
			parId=m[i][id].parentId;
			par=getObj(top+parId);
			if (par.className.substr(0,actPref.length)!=actPref) par.className=actPref+par.className;
			activeTop(parId);
			break;
		}
	}
}

function deactiveTop(id) {
	var parId, m=itemsList;
	for (var i in m) {
		if (m[i][id] && m[i][id].parentId!=0) {
			parId=m[i][id].parentId;
			par=getObj(top+parId);
			if (par.className.substr(0,actPref.length)==actPref) par.className=par.className.substr(actPref.length);
			deactiveTop(parId);
			break;
		}
	}
}

function hide(lev, id) {
	for (var i in subList) {
		if (subList[i]>lev && i!=id) {
			var par=getObj(top+i);
			if (!isOpera && !isNN4) {
				if (par.className.substr(0,actPref.length)==actPref) par.className=par.className.substr(actPref.length);
			}
			setView(sub+i, 0);
			setView(sub+i+'bg', 0);
		}
	}
}

function over(id, menu){
	clearTimeout(t1);
	clearTimeout(t2);
	var p, obj=getObj(sub+id), objStyle=getStyle(sub+id), self=getObj(top+id);
	
	if (!isOpera && !isNN4) {
		if (self.className.substr(0,actPref.length)!=actPref) self.className=actPref+self.className;
		if (self.className.substr(0,actPref.length)==actPref) self.className=self.className.substr(actPref.length);
		activeTop(id);
	}

	hide(itemsList[menu][id].level, id);

	if (obj) {
		p = new getPosObj(top+id);
		objStyle.top = p.y - obj.offsetHeight - 2;
		objStyle.left = p.x;
		setView(sub+id, 1);

		var bg = getStyle(sub+id+'bg');
		bg.top = objStyle.top;
		bg.left = objStyle.left;
		bg.height = obj.offsetHeight;
		bg.width = obj.offsetWidth;
		setView(sub+id+'bg', 1);
	}
}

function out(id){
	clearTimeout(t1);
	clearTimeout(t2);
	var self=getObj(top+id);

	if (!isOpera && !isNN4) {
		if (self.className.substr(0,actPref.length)==actPref) self.className=self.className.substr(actPref.length);
		t2=setTimeout('deactiveTop("'+id+'")', 700);
	}
	t1=setTimeout('hide(0)', 700);
}

function getObj(n) {
	if(isDOM) return document.getElementById(n);
	if(isIE) return document.all[n];
	return document.layers[n];
}

function getStyle(n) {
	var obj=getObj(n);
	if(obj) {
		if(isNN4) return obj;
		return obj.style;
	}
}

function getPosObj(n) {
	if(isNN4) {
		this.x=event.pageX;
		this.y=event.pageY;
		this.w=this.h=0;
		return;
	}
	var obj=getObj(n);
	this.x=obj.offsetLeft;
	this.y=obj.offsetTop;
	this.w=obj.offsetWidth;
	this.h=obj.offsetHeight;
	while (obj = obj.offsetParent) {
		this.x+=obj.offsetLeft;
		this.y+=obj.offsetTop;
	}
}

function setView(n, s) {
	var obj=getStyle(n);
	if(obj) {
		if (isNN4) obj.visibility=(s)?'show':'hide';
		else obj.visibility=(s)?'visible':'hidden';
	}
}

