var button0 = 'button';
var niv = new Array('menu', 'a', 'li');


var menu = {
	init : function(){
		var button = document.getElementById(button0);	
		var storage = document.getElementById(niv[0]);
		var niv1 = new Array();
		var niv2 = new Array();
		for(var i=0, j= storage.childNodes.length, z=0, d=0; i<j ; i++){
			var c = storage.childNodes[i];
			if(c.nodeName.toLowerCase() == 'a'){
				c.className = '';
				niv1.push(c);
				niv2.push(new Array());
				z++ ;
				c.style.left = button.offsetLeft+'px';
				d = button.offsetTop+ z*(niv1[0].offsetHeight+5)+100;
				c.style.top = d+'px';
			}else if (c.nodeName.toLowerCase() == 'ul' ) {
				for(k=0, l=c.childNodes.length; k<l; k++){
					c1 = c.childNodes[k];
					niv2[z-1].push(c1);
					c1.style.left = button.offsetLeft+returnstyle(c1, 'width')+5+'px';
					c1.style.top = d+'px';
					c1.style.visibility = 'hidden';
				}

			}
		}
		storage.style.visibility = 'visible';
		menu.initmove(niv1, niv2, niv1[0].offsetHeight+5, button);
	},
	initmove : function(niv1, niv2, ecart, button){
		vitesse = 150, freq = vitesse/10;
		for (var i=0, j=niv1.length, t=0; i<j; i++ ){
			addEvent(niv1[i], 'click', function(e){
				
				target = e.target || event.srcElement;
				t = searchPlace(niv1, target);
				deroule = searchClassInArray(niv1, 'deroule');
				if(deroule.length != 0){
					for(var m=0, n=deroule.length; m<n; m++){
						var u = searchPlace(niv1, deroule[m]);
						for(o=0, p=niv2[u].length; o<p; o++){
							niv2[u][o].style.visibility = 'hidden';
							niv2[u][o].style.top = button.offsetTop+ (u+1)*(niv1[0].offsetHeight+5)+100+'px';//100 = distance top
						}
						deroule[m].className = '';
					}
					
				}
				if(target.className != 'deroule'){
						niv2[t][0].style.visibility = 'visible';
					for(var k=1, l=niv2[t].length; k<l; k++)
					{
						niv2[t][k].style.top = niv2[t][0].offsetTop+'px';
						niv2[t][k].style.visibility = 'visible';
						var preo = niv2[t][k].offsetTop;
						interv = setInterval((function(a,b, v, e, f, o){ return function() { menu.movedown(niv2[a][b], v, e*b, f, o); }; })(t, k, vitesse, ecart, freq, preo), freq);
						setTimeout((function(inter) { return function(){ clearInterval(inter); };})(interv), 1000);
					}
				}
				target.className = 'deroule';
			});
		}
	},
	movedown : function(obj, vitesse, ecart, freq, o) {
		obj.style.top = (obj.offsetTop-ecart < o) ? obj.offsetTop+(ecart*freq/vitesse)+'px' : obj.offsetTop+'px';
	}




};
function searchPlace (arr, obj){
	for(var i=0, j= arr.length; i<j; i++){
		if(arr[i] == obj)
			return i;

	}
};

function searchClassInArray (arr, classe){
	var returnArr = new Array;
	for(var i=0, j= arr.length; i<j; i++){
		if(arr[i].className == classe){
			returnArr.push(arr[i]);
		}
	}
	return returnArr;
}
function searchSrcInArray (arr, classe){
	var returnArr = new Array();
	for(var i=0, j=arr.length; i<j; i++){
		if(arr[i].className == classe){
			returnArr.push(arr[i]);
			returnArr.push(i);
		}
	}
	return returnArr;
}

