var menu = function() {
	
	var t = 15;
	var z = 50;
	var s = 6;
	var a;
	
	function dd(n) {
		this.n = n; 
		this.h = []; 
		this.c = [];
	}
	
	dd.prototype.init = function(p, c) {
		a = c; 
		var w = document.getElementById(p);
		var s = w.getElementsByTagName('ul');
		var l = s.length;
		var i = 0;
		for(i; i<l; i++) {
			var h = s[i].parentNode; 
			this.h[i] = h; 
			this.c[i] = s[i];
			h.onmouseover = new Function(this.n+'.st('+i+',true)');
			h.onmouseout = new Function(this.n+'.st('+i+')');
		}
	}
	
	dd.prototype.st = function(x, f) {
		var c = this.c[x];
		var h = this.h[x];
		var p = h.getElementsByTagName('a')[0];
		clearInterval(c.t); 
		c.style.overflow = 'hidden';
		if(f) {
			p.className += ' ' + a;
			if(!c.mh) {
				c.style.display = 'block'; 
				c.style.height = ''; 
				c.mh = c.offsetHeight; 
				c.style.height = 0
			}
			if(c.mh == c.offsetHeight) {
				c.style.overflow = 'visible';
			}
			else {
				c.style.zIndex = z; 
				z++; 
				c.t = setInterval(function() {sl(c, 1)}, t)
			}
		} else {
			p.className = p.className.replace(a,''); 
			c.t = setInterval(function() {sl(c, -1)}, t)}
	}
	
	function sl(c, f) {
		var h = c.offsetHeight;
		if((h<=0 && f!=1) || (h>=c.mh&&f == 1)) {
			if (f == 1) {
				c.style.filter = ''; 
				c.style.opacity = 1; 
				c.style.overflow = 'visible';
			}
			clearInterval(c.t); 
			return;
		}
		var d = (f==1) ? Math.ceil((c.mh-h)/s) : Math.ceil(h/s), o = h/c.mh;
		c.style.opacity = o; 
		c.style.filter = 'alpha(opacity=' + (o*100) + ')';
		c.style.height = h + (d*f) + 'px'
	}
	
	return {dd:dd}
}();
