function menu_initialize() {
	
	var menu = document.getElementById('xmenu');
	
	if(!menu) return 0;
	
	var lists = menu.getElementsByTagName('ul');
	
	if(!lists) return 0;
	
	
	for(i in lists) {
		
		if(lists[i].style) {
			
			xid = uniqid();
			
			var list = lists[i];
			
			list.id = xid;
			
			list.style.display = 'none';
			
			parent = list.parentNode;
			
			var xclass = parent.className.split(' ');
			
			xclass.push(xid);
			
			parent.className = implode(' ', xclass);
			
			
								
			parent.onmouseover = function() {
			
				var xclass = this.className.split(' ');
		
				menu_show(xclass[xclass.length-1]);
				
			}
			
			parent.onmouseout = function() {
							
				var xclass = this.className.split(' ');
		
				menu_hide(xclass[xclass.length-1]);
			
			}

			var x = list.getElementsByTagName('li');
			
			for(i in x) {
				
				if(x[i].nodeName == 'LI') {
					
					var xclass = x[i].className.split(' ');
					xclass.push(xid);
						
					x[i].className = implode(' ', xclass);	
						
					x[i].onmouseout = function() {
					
						var xclass = this.className.split(' ');
				
						menu_hide(xclass[xclass.length-1]);					
					
					}		
					
					var a = x[i].getElementsByTagName('a')[0];
				
					var xclass = a.className.split(' ');
					xclass.push(xid);
					
					a.className = implode(' ', xclass);
				
					a.onmouseover = function() {
						
						var xclass = this.className.split(' ');
				
						menu_show(xclass[xclass.length-1]);									
						

						
					}	
		
				}
					
			}
			
		}
		
	}
		
}


function menu_show(id) {
	
	
	document.getElementById(id).style.display = 'block';
	
}

function menu_hide(id) {
	
	document.getElementById(id).style.display = 'none';
	
}

function uniqid() {

	var newDate = new Date;
	
	return newDate.getTime();

}

function implode (glue, pieces) {
    // Joins array elements placing glue string between items and return one string  
    // 
    // version: 1004.2314
    // discuss at: http://phpjs.org/functions/implode    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Waldo Malqui Silva
    // +   improved by: Itsacon (http://www.itsacon.net/)
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: implode(' ', ['Kevin', 'van', 'Zonneveld']);    // *     returns 1: 'Kevin van Zonneveld'
    // *     example 2: implode(' ', {first:'Kevin', last: 'van Zonneveld'});
    // *     returns 2: 'Kevin van Zonneveld'
    var i = '', retVal='', tGlue='';
    if (arguments.length === 1) {        pieces = glue;
        glue = '';
    }
    if (typeof(pieces) === 'object') {
        if (pieces instanceof Array) {            return pieces.join(glue);
        }
        else {
            for (i in pieces) {
                retVal += tGlue + pieces[i];                tGlue = glue;
            }
            return retVal;
        }
    }    else {
        return pieces;
    }
}

