var menu = function(){
	var t = 15,
		z = 50,
		s = 5,
		a;	
	
	function dd(n){
		this.n = n;  
		this.h = []; 
		this.c = []	 
	}
	dd.prototype = {
		init: function(p,c)
		{
				a = c;
			var w = document.getElementById(p),
				s = w.getElementsByTagName('ul'),
				l = s.length, 
				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+')');
			}
		},
		
		st: function(x,f)
		{
			var c = this.c[x], 
				h = this.h[x], 
				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';
		c.style.width = '151px';
	}
	
	return {dd:dd};
	
}();




var hovermenu = function(){
	var t = 15,
		z = 50,
		s =  2,
		a;	
	
	function dd(n){
		this.n = n;  
		this.h = []; 
		this.c = []	 
	}
	dd.prototype = {
		init: function(p,c)
		{
				a = c;
			var w = document.getElementById(p),
				s = w.getElementsByTagName('ul'),
				l = s.length, 
				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+')');
			}
		},
		
		st: function(x,f)
		{
			var c = this.c[x], 
				h = this.h[x], 
				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';
		c.style.width = '172px';				
	}
	
	return {dd:dd};
	
}();



function SetMenuTop(postition,ctrl)
{    
    var rootNode = ctrl.parentNode;      
    var menuItemHeight = rootNode.clientHeight;
    var totalSubMenuRowHeight = GetTotalSubMenuRowHeight(ctrl,menuItemHeight);
    var parentPosHeight = (6 - postition) * menuItemHeight;
    var topPos;
    var downShadowHeight = 15;
    var originalTop = postition * menuItemHeight + 29 + 7 ;
    if(totalSubMenuRowHeight >= parentPosHeight)
    {            
        if(totalSubMenuRowHeight > originalTop)
        {
            topPos = totalSubMenuRowHeight - originalTop;
            rootNode.children[1].style.top = '-'+topPos+'px';
        }
        else
        {
            topPos = originalTop - totalSubMenuRowHeight;
            rootNode.children[1].style.top = topPos+'px';
        }        
    }  
    else
    {
        topPos =((postition - 1) * menuItemHeight) + 29;
        rootNode.children[1].style.top = topPos + 'px';
    }
}

function GetTotalSubMenuRowHeight(ctrl,menuItemHeight)
{
    var rootNode = ctrl.parentNode
    var subMenuCount = rootNode.children[1].children.length;   
    var rowLength = 22;
    var wrapRowHeight = 31;
    var num;
    var totalRowHeight = 0;
    var rowHeight = 0;
    for(var i=1;i<subMenuCount - 1;i++)
    {
        num = rootNode.children[1].children[i].childNodes[0].innerHTML.length/rowLength ;        
        
        if(num < 1)
            rowHeight = Math.ceil(num) * menuItemHeight;
        else
            rowHeight = Math.ceil(num) * wrapRowHeight;
            
        totalRowHeight += rowHeight;
    }
    var downShadowHeight = 15;
    var topMenuHeight = 7;
    return totalRowHeight + downShadowHeight + topMenuHeight + 1;
}


