
MenuScroller = {};

MenuScroller.HEIGHT = 260;

MenuScroller.SUB_HEIGHT = 520;

MenuScroller.OFFSET = 10;

MenuScroller.INTERVAL = 15;

MenuScroller.direction = {UP: 1, DOWN: 2};

MenuScroller.INTERVAL_UP = 400;

MenuScroller.INTERVAL_DOWN = 400;

MenuScroller.layers = {
	1: ['menuMain1', 'menuMain1a', 'menuList1'],
	2: ['menuMain2', 'menuMain2a', 'menuList2'],
	3: ['menuMain3', 'menuMain3a', 'menuList3'],
	4: ['menuMain4', 'menuMain4a', 'menuList4'],
	5: ['menuMain5', 'menuMain5a', 'menuList5'],
	6: ['menuMain6', 'menuMain6a', 'menuList6']
};

MenuScroller.timeouts = {}; //{1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0};

MenuScroller.timeoutsDown = {}; //{1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0};

MenuScroller.timeoutsUp = {}; //{1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0};

MenuScroller.init = function(){
	for(var i in MenuScroller.layers){
		var x = MenuScroller.layers[i];
		Service.$E(x[1]).style.marginTop = 0;
		Service.$E(x[0]).scrollTop = MenuScroller.HEIGHT;
	}
};

MenuScroller.goUpAll = function(withoutId){
	if(typeof(withoutId) == 'undefined'){
		var withoutId = 0;
	}
	for(var i in MenuScroller.layers){
		if(i != withoutId){
			MenuScroller.goUp(i);
		}
	}
};

MenuScroller.visible = function(index, isVisible){
	var x = MenuScroller.layers[index];
	Service.$E(x[0]).style.visibility = isVisible ? 'visible' : 'hidden';
};

MenuScroller.changeSelects = function(index, isVisible){
	if(index == 3 || index == 6){
		PageService.changeSelects(isVisible);
	}
};

//---

MenuScroller.isContent = function(index){
	var item = Service.$E(MenuScroller.layers[index][2]);
	return (item != null && item.hasChildNodes());
};

//---

MenuScroller.startUp = function(index){
	//MenuScroller.flagsUp[index] = true;
	//MenuScroller.goUp(index);
	MenuScroller.stopDown(index);
	MenuScroller.timeoutsUp[index] = setTimeout('MenuScroller.goUp(' + index + ')', MenuScroller.INTERVAL_UP);
};

MenuScroller.stopUp = function(index){
	clearTimeout(MenuScroller.timeoutsUp[index]);
};

MenuScroller.goUp = function(index){
	if(MenuScroller.timeoutsUp[index] > 0){
		clearTimeout(MenuScroller.timeouts[index]);
		//MenuScroller.init(index);
		//MenuScroller.isGo = true;
		MenuScroller.go(index, MenuScroller.direction.UP);
		MenuScroller.changeSelects(index, true);
	}
};

//---

MenuScroller.startDown = function(index){
	//alert(MenuScroller.isContent(index));
	if(MenuScroller.isContent(index)){
		//MenuScroller.flagsDown[index] = true;
		MenuScroller.stopUp(index); //?????????????
		MenuScroller.timeoutsDown[index] = setTimeout('MenuScroller.goDown(' + index + ')', MenuScroller.INTERVAL_DOWN);
	}
};

MenuScroller.stopDown = function(index){
	//MenuScroller.flagsDown[index] = false;
	clearTimeout(MenuScroller.timeoutsDown[index]);
};

MenuScroller.goDown = function(index){
	if(MenuScroller.timeoutsDown[index] > 0){
		clearTimeout(MenuScroller.timeouts[index]);
		MenuScroller.goUpAll(index);
		MenuScroller.visible(index, true);
		MenuScroller.go(index, MenuScroller.direction.DOWN);
		MenuScroller.changeSelects(index, false);
	}
};

//---

MenuScroller.go = function(index, direction){
	var layer = Service.$E(MenuScroller.layers[index][0]);

	if(direction == MenuScroller.direction.UP)
		layer.scrollTop += MenuScroller.OFFSET;
	else
		layer.scrollTop -= MenuScroller.OFFSET;

	var offset = MenuScroller.SUB_HEIGHT - MenuScroller.HEIGHT;
	if(layer.scrollTop <= 0 || layer.scrollTop >= offset){
		clearTimeout(MenuScroller.timeouts[index]);
		if(layer.scrollTop >= offset){
			MenuScroller.visible(index, false);
			//MenuScroller.changeSelects(index, true);
		}
	}
	else{
		MenuScroller.timeouts[index] = setTimeout('MenuScroller.go(' + index + ', ' + direction + ')'
		, MenuScroller.INTERVAL);
	}
};
