/*xx
	Menu is unfinished and it doesn't support any browsers
	except internet explorer.
	
*/

if (typeof(isMenuVert) == 'undefined') isMenuVert = false;
if (typeof(mnuLev1TopOffset) == 'undefined') mnuLev1TopOffset = 0;
if (typeof(mnuLev1LeftOffset) == 'undefined') mnuLev1LeftOffset = 0;
if (typeof(mnuLev2TopOffset) == 'undefined') mnuLev2TopOffset = 3;
if (typeof(mnuLev2LeftOffset) == 'undefined') mnuLev2LeftOffset = 7;

if (typeof(maxItems) == 'undefined') maxItems = 7;

var struct = [];
var opened = [];
var menuHiddenName = 'm0.x';

function initMenuTn2(jsvars) {
	if (jsvars == undefined)
		return;

	var paxa = jsvars.tree.m.paxa;
	for(var i = 1; i < paxa.length; i++) {
		var parent = paxa[i]["<.jsabbr 'parent'%>"];
		paxa[i].$paxi = i;
		
		if (parent > 0)
			if (paxa[parent].items != undefined)
				paxa[parent].items.push(paxa[i]);
			else
				paxa[parent].items = [paxa[i]];
		else if (parent != '' && parent == 0)
			struct.push(paxa[i]);
	}
	
	drawMenu();
}

function initMenuTn1() {
	menu_0 = new Menu;
}

/*************************** TN1 COMPLIANT ***************************/

function Menu() {
	return {
		invalidate: function() {
			struct = menu;
			drawMenu();
		}
	};
}

function CheckBoxMenuItem(text, checked, callback, sourceForItems) {
	var icon = checked ? 'images/menu/checked.gif' : '';
	return MenuItem(text, callback, icon, sourceForItems);
}

function MenuSeparator() {
	return {separator:1}
}

function MenuButton(text, sourceForItems) {
	return {txt:text, items:sourceForItems.items};
}

function MenuItem(text, callback, icon, sourceForItems) {
	var obj = {};
	
	if (text) obj.txt = text;
	if (callback) obj.callback = callback;
	if (icon) obj.icon = icon;
	if (sourceForItems) obj.items = sourceForItems.items;
	
	return obj;
}

function addmn(item, key, item2add) {
	if (item2add == -1) return;
	
	if (item.items == undefined)
		item.items = [];
	
	item2add.key = key;
	item.items.push(item2add);
}

/*************************** TN1 COMPLIANT ***************************/

// TODO: must be in core.js
function getOrCreateHidden(name) {
	var hiddens = document.getElementsByTagName('INPUT');
	
	if (hiddens) {	// hidden uses name not id. that's why loop is required.
		for(var i = 0; i < hiddens.length; i++)
			if (hiddens[i].type == 'hidden' && hiddens[i].name == name)
				return hiddens[i];
	}
	
	var obj = document.createElement('INPUT');
	obj.setAttribute('name', name);
	obj.setAttribute('type', 'hidden');
	document.body.appendChild(obj);
	
	return obj;
}

function postMenu(ev) {
	if (ev == undefined) ev = window.event;

	var src = getParentByTagName(vFramework.getSrcElement(ev), 'TR');
	if (src == undefined || src.paxi == undefined) return;
	
	var hidden = getOrCreateHidden(menuHiddenName);
	hidden.value = src.paxi;
	
	var form = document.getElementById('formroot');
	if (form) form.submit();
}

function boldMenuFix(src) {
    if (src.tagName == 'B' && src.parentNode && src.parentNode.tagName == 'SPAN')
	return src.parentNode;
    else
	return src;
}

function closeSubMenus(event, obj, force) {
	// Close children if parents were closed
        window.clearTimeout(menuTimer);
	menuTimeoutEvent = null;

	var frame, stat, myOpened;
	if (document.getElementById('menu')) {
		frame = document;
		stat  = 0;
		myOpened = opened;
	} else {
		frame = parent;
		stat  = 1;
		myOpened = parent.getAttribute('opened');
	}
	
	var src = obj || vFramework.getSrcElement(event);
	if (src == undefined) return;

	src = boldMenuFix(src);
	
	var src = src.tagName == 'SPAN' ? src : getParentByTagName(src, 'TR');
	if (src == undefined || src.getAttribute('code') == undefined) return;
	var level = src.getAttribute('code').split('_').length;
	
	for(var i = level; i < myOpened.length; i++) {
		var box = stat ? frame.document.getElementById(myOpened[i]) : frame.getElementById(myOpened[i]);
		if (box == null) continue;
		
		box.style.visibility = 'hidden';
		openedToFalse(box);
	}
	
	if (src.tagName == 'SPAN') {
		var barItem = src.parentNode.firstChild;
		for(barItem; barItem != null; barItem = barItem.nextSibling) {
			if (barItem.getAttribute('opened')) {
				barItem.removeAttribute('opened');
				barHoverOut(src, barItem);
				break;
			}
		}
	} else {
	 	var curBox = getParentByTagName(src, 'TABLE', 2);
	 	if (curBox) openedToFalse(curBox);
	}
	
	myOpened.length = level;
	if (force) {
		if (menuOpened) menuOpened = false;
		else parent.menuOpened = false;
	}
	
	if (level == 1) openDir = false;
}

function openedToFalse(box) {
	var items = getItemsContainer(box);
	if (items == undefined) return;
	
	items = items.firstChild.firstChild.firstChild;
	for(var item = items; item != null; item = item.nextSibling)
		if (item.getAttribute('opened')) {
			item.removeAttribute('opened');
			if (item.onmouseout) item.onmouseout(null, item);
		}
}

function getItemsContainer(box) {
	var items = box.firstChild.firstChild.firstChild.firstChild;	// XXX: must be some general procedure
	
	for(var node = items; node != null; node = node.nextSibling)
		if (node && node.className && node.className == 'items-container') {
			items = node;
			break;
		}
	
	return items;
}

var menuBarClasses = new Array();
function drawMenu() {
	var menuContainer = document.getElementById('menu');
	if (menuContainer == undefined) return;
	
	menuContainer.className = 'menu-bar';
	menuContainer.unselectable = 'on';
	
	var html = ''; var cur = '';
	for(var i = 0; i < struct.length; i++) {
		var action;
		if (struct[i].href) {
			action = 'goHref(\'' + struct[i].href + '\')';
		}
		else if (struct[i].callback) {
			action = struct[i].callback;
		} else {
			action = struct[i].items ? 'barHoverIn(event);expand(event,1)' : 'postMenu(event)';
		}
				
		if(struct[i].cur){
			cur = " menu-bar-cur";
		}
		menuBarClasses[i] = 'menu-button'+cur+' menu-bar-uid'+i;
		cur = "";
		
		html += '<span unselectable="on" id="menu-button'+i+'" class="'+menuBarClasses[i]+'" code="' + i + '" onclick="'+ action +'" onmouseover="barHoverIn(event);expand(event)" onmouseout="barHoverOut(event)">' + struct[i].txt + '</span>';
	}
	
	menuContainer.innerHTML = html;
}

function goHref(href) {
	document.location = href;
}

function getBarItem(src) {
	while(src && (!src.id || src.id.toString('menu-button').indexOf == -1)) {
		src = src.parentNode;
	}
	
	return src;
}

/* It was buggy so I commented it.
function getBarItem(src) {
	while((src && src.getAttribute('code') == null) || src == null) {
		src = getParentByTagName(src, 'SPAN');
	}
	
	return src;
}
*/

function barHoverIn(event, obj) {
	var src = obj || vFramework.getSrcElement(event);
	if (src == undefined) return;

	// Fagel temporary fix
	src = boldMenuFix(src);
	
	if (!(src = getBarItem(src))) return;
	
	carr = menuBarClasses[src.getAttribute('code')].split(" ");
	for(i in carr) if(carr[i] == 'menu-bar-cur') return;

	src.className = menuBarClasses[src.getAttribute('code')] + ' menu-bar-over';
	//src.style.backgroundColor = '#ccd4eb';
	//src.style.border = '1px solid #0a246a';
	//src.style.padding = '2px 6px 1px 6px';
	
	menuTimeoutEvent = null;
	window.clearTimeout(menuTimer);
        //TIMEOUT_1window.clearTimeout(menuCloseTimeout);
}

function barHoverOut(event, obj) {
    //FIX1
    menuTimeoutEvent = null;
    window.clearTimeout(menuTimer);
    
	var src = obj || vFramework.getSrcElement(event);

	// Fagel temporary fix
	src = boldMenuFix(src);

	menuTimeoutEvent = event || window.event;
	menuTimer = window.setTimeout(tryCloseMenu, 1000);
        //TIMEOUT_1menuCloseTimeout = window.setTimeout(tryCloseMenu, 1000);
	
	if (src == undefined || src.getAttribute('opened')) return;

	if (!(src = getBarItem(src))) return;

	carr = menuBarClasses[src.getAttribute('code')].split(" ");
	for(i in carr) if(carr[i] == 'menu-bar-cur') return;
	
	src.className = menuBarClasses[src.getAttribute('code')] + ' menu-bar-out';
	
	//src.style.backgroundColor = '#f2f2f2';
	//src.style.border = '1px solid #f2f2f2';
}

var menuOpened = true;
var curExpSrc;
var menuTimer;

function expand(event, clicked) {
	//if (clicked) menuOpened = !menuOpened;
	//if (!clicked && !menuOpened) return;

	var src = vFramework.getSrcElement(event);
	if (src == undefined) return;
	
	// Fagel temporary fix
	src = boldMenuFix(src);

	var src = src.tagName == 'SPAN' ? src : getParentByTagName(src, 'TR');
	if (src == undefined) return;

	var level = src.getAttribute('code').split('_').length;
	var boxid = 'box' + src.getAttribute('code');
	var oplvl = opened[level];
	if (boxid == oplvl && !clicked) return;

	curExpSrc = undefined;
	if (opened[level]) closeSubMenus(event);
	if (boxid == oplvl && clicked) return;	// clicked on already expanded item

	curExpSrc = src;
	if (menuTimer) window.clearTimeout(menuTimer);
	menuTimer = window.setTimeout("doExpand()", 250);
}

function doExpand() {
	if (curExpSrc == undefined) return;
	var src = curExpSrc;
	curExpSrc = undefined;
	
	var level = src.getAttribute('code').split('_').length;
	var boxid = 'box' + src.getAttribute('code');

	if (level > 1 && opened[level-1] == undefined)
	    return;
	
	var indeces = src.getAttribute('code').split('_');
	var items = struct;
	
	for(var i = 0; i < indeces.length; i++)
		items = items[indeces[i]].items;
	
	if (items) {
		src.setAttribute('opened', true);
		src.tagName == 'SPAN' ? barHoverIn(null, src) : hoverIn(null, src);
	}
	
	// if submenu was opened, don't draw it again.
	var cachedBox = document.getElementById(boxid);
	if (cachedBox) {
		cachedBox.style.visibility = 'visible';
		opened[level] = boxid;
		
		var container = getItemsContainer(cachedBox);
		if (container != undefined) {
			container.scrollTop = 0;
			
			var scrollUp = container.previousSibling;
			var scrollDown = container.nextSibling;
			
			if (scrollUp && scrollDown) {
				//CNT_1
				//scrollUp.className = 'scroll-up-disabled';
				scrollDown.className = 'scroll-down';
				//scrollUp.style.color = '#ccc';
				//scrollDown.style.color = '#000';
			}
			
			// set to all items
			var item = container.firstChild.firstChild.firstChild;
			for(item; item != null; item = item.nextSibling)
				if (item.className == '') {
					item.className = 'test';
					break;
				}
		}
		
		setPos(boxid, src);
		return;
	}
	
	if (!items) return;
	
	// create container
	var table = document.createElement('table');
	table.id = boxid;
	table.className = 'menu-container';
	table.style.visibility = 'hidden';
	
	var menuContainer = document.getElementById('menu');
	if (menuContainer == undefined) return;
	
	var levelContainer = document.getElementById('indent'+level);
	if (levelContainer == undefined) {
		levelContainer = document.createElement('DIV');
		levelContainer.setAttribute('id', 'indent'+level);
		levelContainer.setAttribute('class', 'menu-level');
		//levelContainer.setAttribute('islev', '1');
		
		if (level > 1) {
			var prevLevelCont = document.getElementById('indent'+(level-1));
			if (prevLevelCont == undefined) return;
			
			prevLevelCont.appendChild(levelContainer);
		} else {
			menuContainer.appendChild(levelContainer);
		}
	}
	
	levelContainer.appendChild(table);
	////menuContainer.appendChild(table);
	
	var tbody = document.createElement('tbody');
	table.appendChild(tbody);
	
	var tr = document.createElement('tr');
	tbody.appendChild(tr);
	
	var td = document.createElement('td');
	td.className = 'menu-box';
	tr.appendChild(td);
	
	if (items.length > maxItems) {	// scroll up
 		var scrollUp = document.createElement('div');
		//CMT_1
 		scrollUp.className = 'scroll-up';
		//scrollUp.className = 'scroll-up-disabled';
		scrollUp.style.color = '#cccccc';
 		scrollUp.onmouseover = function(event) {
			closeOnScroll(this)
			scrollStart(event, true)
		};
 		scrollUp.onmouseout = function() { scrollStop() };
 		td.appendChild(scrollUp);
	}
	
	var container = document.createElement('div');
	container.className = 'items-container';
	td.appendChild(container);
	
	var menu_body_table = document.createElement('table');
	menu_body_table.border = 0;
	menu_body_table.cellSpacing = 0;
	menu_body_table.className = 'menu-body';
	container.appendChild(menu_body_table);
	
	var menu_body_tbody = document.createElement('tbody');
	menu_body_table.appendChild(menu_body_tbody);
	
	// create container items
	for(var i = 0; i < items.length; i++) {
		if (items[i].separator) {
			var item_tr = document.createElement('TR');
			item_tr.className = 'separator';
			menu_body_tbody.appendChild(item_tr);
			
			var item_td = document.createElement('TD');
			item_td.colSpan = 4;
			item_tr.appendChild(item_td);
			
			var item_div = document.createElement('DIV');
			item_div.className = 'separator-line';
			item_td.appendChild(item_div);
		
			continue;
		}
		
		var item_tr = document.createElement('tr');
		item_tr.onmouseout = hoverOut;
		item_tr.setAttribute('code', src.getAttribute('code') + '_' + i);
		
		if (items[i].href) {
			item_tr.callback = 'document.location="' + items[i].href + '"';
			item_tr.onmouseover = function(event){hoverIn(event);expand(event)};
			item_tr.onclick = function(event) {
				if (event == undefined) event = window.event;
				hoverIn(event);
				var src = getParentByTagName(vFramework.getSrcElement(event), 'TR');
				if (src) eval(src.callback);
			}
						
		}
		else if (items[i].callback) {
			item_tr.callback = items[i].callback;
			item_tr.onmouseover = function(event){hoverIn(event);expand(event)};
			item_tr.onclick = function(ev) {
				if (ev == undefined) ev = window.event;
				
				var src = getParentByTagName(vFramework.getSrcElement(ev), 'TR');
				closeSubMenus(ev, findFirstOpened(), 1);
				if (src && !src.getAttribute('opened')) src.callback(ev);
			}
		}
		else if (items[i].items) {
			item_tr.callback = 'expand(event)';
			item_tr.onmouseover = function(event) {
				hoverIn(event);
				var src = getParentByTagName(vFramework.getSrcElement(event), 'TR');
				if (src && !src.getAttribute('opened')) eval(src.callback);
			}
		}
		else {
			item_tr.callback = 'postMenu(event)';
			item_tr.onmouseover = function(event){hoverIn(event);expand(event)};
			item_tr.onclick =
			function(event) {
				if (event == undefined) event = window.event;
				hoverIn(event);
				var src = getParentByTagName(vFramework.getSrcElement(event), 'TR');
				if (src && !src.getAttribute('opened')) eval(src.callback);
			}
		}
		
		item_tr.paxi = items[i].$paxi;
		item_tr.className = 'test'
		menu_body_tbody.appendChild(item_tr);
		
		var item_icon_td = document.createElement('td');
		item_icon_td.className = 'icon-cell';
		item_icon_td.innerHTML = '<img src="' + (items[i].icon ? items[i].icon : 'images/blank.gif')  + '">';
		item_icon_td.unselectable = 'on';
		item_tr.appendChild(item_icon_td);
		
		var item_label_td = document.createElement('td');
		
		var label_classes = "label-cell";
		if(items[i].items) label_classes += " items";
		if(items[i].href) label_classes += " href";		

		item_label_td.className = label_classes;
		
		item_label_td.innerHTML = items[i].txt ? items[i].txt : '&nbsp;';
		item_label_td.unselectable = 'on';
		item_tr.appendChild(item_label_td);
		
		
		
		
		var item_shortcut_td = document.createElement('td');
		item_shortcut_td.className = 'shortcut-cell';
		item_shortcut_td.setAttribute('innerHTML', '&nbsp;');
		item_shortcut_td.innerHTML = '&nbsp;'; // TODO
		item_shortcut_td.unselectable = 'on';
		item_tr.appendChild(item_shortcut_td);
		
		var item_arrow_td = document.createElement('td');
		if(items[i].items){
			item_arrow_td.className = 'arrow-cell';
			item_arrow_td.innerHTML = '&gt;';
		}else{
			item_arrow_td.className = 'empty-cell';
		}
		item_arrow_td.innerHTML = '&nbsp;';
 
		item_arrow_td.unselectable = 'on';
		item_tr.appendChild(item_arrow_td);
		
		if (i > maxItems-2 && !container.style.height)
			container.style.height = menu_body_table.clientHeight + 'px';
	}
	
	if (items.length > maxItems) {	// scroll down
 		var scrollDown = document.createElement('div');
 		scrollDown.className = 'scroll-down';
 		scrollDown.onmouseover = function(event) {
			closeOnScroll(this)
			scrollStart(event, false)
		};
 		scrollDown.onmouseout = function() { scrollStop() };
 		td.appendChild(scrollDown);
	}
	
	// workaround. overflow:hidden
	table.style.width = menu_body_table.offsetWidth + 'px';
	
	opened[level] = boxid;
	setPos(boxid, src);
	
	table.style.visibility = 'visible';
}

function closeOnScroll(obj) {
	if (obj.className.toString().indexOf('disabled') == -1)
		return;
	//var isActive = obj.style.color.toLowerCase();
	//if (isActive == '#cccccc' || isActive == '#ccc') return;
	
	var container = obj.className == 'scroll-down' ? obj.previousSibling : obj.nextSibling;
	var child = container.firstChild.firstChild.firstChild;
	
	for(child; child != null; child = child.nextSibling)
		if (child.getAttribute('opened')) break;
	
	if (child == null) return;
	
	var level = child.getAttribute('code').split('_').length;
	for(var i = level; i < opened.length; i++) {
		var box = document.getElementById(opened[i]);
		if (box == null) continue;
		
		box.style.visibility = 'hidden';
		openedToFalse(box);
	}
	
	var curBox = getParentByTagName(child, 'TABLE', 2);
	if (curBox) openedToFalse(curBox);
	
	opened.length = level;
}

var menuCloseTimeout;
var menuTimeoutEvent;

function hoverIn(event, obj) {
	menuTimeoutEvent = null;
	window.clearTimeout(menuTimer);
	//TIMEOUT_1window.clearTimeout(menuCloseTimeout);

	var tr = obj || getParentByTagName(vFramework.getSrcElement(event), 'TR');
	tr.className = "hover";
}

function hoverOut(event, obj) {
    //FIX1
    menuTimeoutEvent = null;
    window.clearTimeout(menuTimer);
    
	menuTimeoutEvent = event || window.event;
	menuTimer = window.setTimeout(tryCloseMenu, 1000);
	
	//TIMEOUT_1menuCloseTimeout = window.setTimeout(tryCloseMenu, 1000);

	var tr = obj || getParentByTagName(vFramework.getSrcElement(event), 'TR'); 
	if (tr == undefined || tr.getAttribute('opened')) return;
	
	tr.className = "";
}

function tryCloseMenu() {
    var firstOpened = findFirstOpened();
    
    if (menuTimeoutEvent && firstOpened)
	closeSubMenus(menuTimeoutEvent, firstOpened, 1);
}

function click_menu(ev) {
    ev = ev || window.event;
    
    if (ev == undefined || isMenuItem(vFramework.getSrcElement(ev)))
    	return;
    
    closeSubMenus(ev, findFirstOpened(), 1);
}



function getParentByTagName(obj, tagName, num) {
	if (num == undefined) num = 1;
	
	for(var i = 0; i < num; i++) {
		while(obj && obj.tagName != tagName) {
			if (obj && obj.id == 'menu' && obj.tagName == 'DIV') return;
			obj = obj.parentNode;
		}
		if (obj && i != num-1)
			obj = obj.parentNode;
	}
	
	return obj;
}




var left = 0;
var openDir = false;
function setPos(id, evSrc) {
	var box = document.getElementById(id);
	if (box == undefined) return;
		
	var boxTop = (!parseInt(box.style.top)) ? 0 : parseInt(box.style.top);
	var boxLeft = (!parseInt(box.style.left)) ? 0 : parseInt(box.style.left);
	
	box.style.visibility = 'hidden';
	
	var src = getParentByTagName(evSrc, 'TR');
	if (src == undefined) src = evSrc;
	
	var container = getParentByTagName(src, 'DIV');
	if (container == undefined) container = {scrollTop:0};
		
	var parentBox = getParentByTagName(container, 'TABLE');
	if (parentBox == undefined)
	{	
		//var p = getTopParentByTagName(container, 'SPAN');
		//alert(evSrc.offsetTop+evSrc.offsetHeight);
		parentBox = evSrc;
		
	}else{
		//alert(container.id);
	}
	
	if (container.id == 'menu') {	// menu-bar
		box.style.top = getAbsOffset(src, 'offsetTop') + (!isMenuVert ? src.offsetHeight : 0) + 'px';
		box.style.left = getAbsOffset(src, 'offsetLeft') + (isMenuVert ? src.offsetWidth : 0) + 'px';
	} else {
		box.style.top = getAbsOffset(src, 'offsetTop') - container.scrollTop + 'px';
		box.style.left = parentBox.offsetLeft + parentBox.offsetWidth + 'px';
	}
	
	if (!openDir) {	// right
		var rightBorder = parseInt(box.style.left) + box.offsetWidth;
		
		if (rightBorder >= document.body.clientWidth) { // time to move left
			if (container.id == 'menu') {
				box.style.left = parseInt(box.style.left) - box.offsetWidth + parentBox.offsetWidth + 'px';
				openDir = !openDir;
			}else{
				box.style.left = parseInt(box.style.left) - box.offsetWidth - parentBox.offsetWidth + 'px';
				openDir = !openDir;
			}
		}
	} else {	// left
		if (parseInt(box.style.left) <= 0) {
			box.style.left = Number(parseInt(box.style.left) + box.offsetWidth + parentBox.offsetWidth) + 'px';
			openDir = !openDir;
		} else {
			box.style.left = parseInt(box.style.left) - box.offsetWidth - parentBox.offsetWidth + 'px';
		}
	}
	// Offset
	//if(!openDir) {
		if (openDir)
		    mnuLev2LeftOffset = Math.abs(mnuLev2LeftOffset);
		else
		    mnuLev2LeftOffset = -Math.abs(mnuLev2LeftOffset);
		
		if (container.id == 'menu') {	// menu-bar
			box.style.top = parseInt(box.style.top) + mnuLev1TopOffset + 'px';
			box.style.left = parseInt(box.style.left) + mnuLev1LeftOffset + 'px';
		}else{
			box.style.top = parseInt(box.style.top) + mnuLev2TopOffset + 'px';
			box.style.left = parseInt(box.style.left) + mnuLev2LeftOffset + 'px';	
		}
	//}
	
	box.style.visibility = 'visible';
	
	
//	alert(container.offsetWidth);
//	container.style.width = container.offsetWidth + 'px';
}

function getAbsOffset(obj, attribute) {
	var offsetTop = 0;
	for(obj; obj != null; obj = obj.offsetParent)
		offsetTop += (obj[attribute] || 0);
	
	return offsetTop;
}

var interval;
var prevScrollPos;
var eventSource;

function scrollStart(event, toTop) {
	var container, up, down;
	
	if (eventSource == undefined)
		eventSource = vFramework.getSrcElement(event);
	
	if (toTop) {
		up = eventSource;
		container = up.nextSibling;
		down = container.nextSibling;
	} else {
 		down = eventSource;
 		container = down.previousSibling;
 		up = container.previousSibling;
	}
	
	container.scrollTop += (toTop ? -10 : 10 );
	
	if (!container.scrollTop)
		;
		//CNT_1
		//up.className = 'scroll-up-disabled';
		//up.style.color = '#cccccc';
	else if (container.scrollTop == prevScrollPos)
		;
		//CNT_1
		//down.className = 'scroll-down-disabled';
		//down.style.color = '#cccccc';
	else {
		up.className = 'scroll-up';
		down.className = 'scroll-down';
	}
		//up.style.color = down.style.color = '#000';
	
	prevScrollPos = container.scrollTop;
	interval = window.setTimeout("scrollStart(undefined, " + toTop + ")", 50);
}

function scrollStop() {
	if (interval == null) return;
	
	window.clearTimeout(interval);
	interval = null;
	eventSource = undefined;
}

function isMenuItem(item) {
	for(item; item != null; item = item.parentNode)
		if (item.tagName == 'DIV' && item.id && item.id == 'menu')
			return true;
	return false;
}

function findFirstOpened() {
	var menuBar = parent.document.getElementById('menu');	
	if (menuBar == undefined) return;
	
	for(var mi = menuBar.firstChild; mi != null; mi = mi.nextSibling)
		if (mi.getAttribute('opened')) return mi;
}

/****************************** EVENT HANDLING ********************************/

window.onresize = closeOnResize;
function closeOnResize(ev) {
    closeSubMenus(ev, findFirstOpened(), 1);
}