
var MENU_CLOSE_DELAY = 1500;
var MENU_LIST_DELAY = 20;
var menus = new Array();
var activeMenu = null;


function openMenu(obj){
  if(obj==null) return;
	if(obj==activeMenu) return;
  var menu = obj.getElementsByTagName('ul');
  if(menu!=null){
    var menu = menu[0];
		//Close all
    for(var i=0;i<menus.length;i++)
      closeMenu(menus[i]);
    if(menu.initalized==null){
			obj.parentNode.onmouseout = menuMouseOut;
			obj.parentNode.onmouseover = menuMouseOver;
      menu.initalized = true;
      menus.push(obj);
      var lis = menu.getElementsByTagName('li');
      for(var i=0;i<lis.length;i++){
        lis[i].style.display = 'none';
        lis[i].menucontainer = obj;
        lis[i].onmouseover = function(){openMenu(this.menucontainer);};
      }
    }
    menu.style.display = 'block';
		activeMenu = obj;
    showMenuList(menu,true);
    clearTimeout(obj.toid);
		obj.toid = setTimeout(bind(closeMenu,window,new Array(obj)),MENU_CLOSE_DELAY);
  }
}

function menuMouseOut(evt){
	var evt = evt||event;
	var src = evt.target||evt.srcElement;
	if(activeMenu==null) return;
	if(src!=null){
		var p = src;
		while(p!=null){
			if(p==activeMenu){
				break;
			}
			p = p.parentNode;
		}
		if(p==activeMenu){
			clearTimeout(activeMenu.toid);
			activeMenu.toid = setTimeout(bind(closeMenu,window,new Array(activeMenu)),MENU_CLOSE_DELAY);
		}
	}
}
function menuMouseOver(evt){
	var evt = evt||event;
	var src = evt.target||evt.srcElement;
	if(activeMenu==null) return;
	if(src!=null){
		var p = src;
		while(p!=null){
			if(p==activeMenu){
				break;
			}
			p = p.parentNode;
		}
		if(p==activeMenu){
			clearTimeout(activeMenu.toid);
		}
	}
}
	
function closeMenu(obj){
  if(obj==null)return;
	activeMenu = null;
  clearTimeout(obj.toid);
  var menu = obj.getElementsByTagName('ul');
  if(menu!=null){
    var menu = menu[0];
    showMenuList(menu,false);
  }
}

function showMenuList(menu,show){
  if(menu==null) return;
  var lis = menu.getElementsByTagName('li');
  if(lis.length>0){
    for(var i=0;i<lis.length;i++)
      clearTimeout(lis[i].toid);
    var li = lis[0];
    if(!show)
      li = lis[lis.length-1];
    li.toid = setTimeout(bind(showMenuListItem,window,new Array(menu,li,show)),MENU_LIST_DELAY);
  }
}
function showMenuListItem(menu,item,show){
  if(menu==null) return;
  if(item==null) return; 
  item.style.display = show?'block':'none';
  var nextItem = AJS.getNextSiblingBytc(item,'li');
  if(!show)
    var nextItem = AJS.getPreviousSiblingBytc(item,'li');
  if(nextItem!=null)
    nextItem.toid = setTimeout(bind(showMenuListItem,window,new Array(menu,nextItem,show)),MENU_LIST_DELAY);
  else if(!show)
    menu.style.display = 'none';
}

function toggleDiv(name){
	var obj = document.getElementById(name);
	if(obj!=null){
		var style = (obj.style.display.length==0||obj.style.display=='none')?'block':'none';
		obj.style.display = style;
		obj.style.zIndex = style=='block'?100000:1;
		if(style=='block' && name=='login'){
			var un = document.getElementById('username');
			if(un!=null)
				un.focus();
		}
		if(document.lasttoggleddiv!=null && document.lasttoggleddiv!=obj){
			document.lasttoggleddiv.style.display = 'none';
			document.lasttoggleddiv.style.zIndex = 1;
		}
		if(style=='block' && name!='login')
			document.lasttoggleddiv = obj;
	}
}

function confirmDelete(id){
	if(document.lasttoggleddiv!=null){
		document.lasttoggleddiv.style.display = 'none';
		document.lasttoggleddiv.style.zIndex = 1;
		document.lasttoggleddiv=null;
	}
	if(confirm(document.confirmdeletetext)){
		var url = location.href;
		url += (url.indexOf('?')==-1?'?':'&');
		url += 'deletefile='+id;
		location.href = url; 
	}
}

// encrypt the password before transmission
function encryptPWD (form) {
	if (form) {
		for (var i = 0; i < form.elements.length; i++) {
			if (form.elements[i].type == 'password') {
				var input = form.elements[i++];
				var output = form.elements[i++];
				var lngth = form.elements[i];
				if (input.value.trim () != '') {
					output.value = calcMD5 (input.value);
					lngth.value = input.value.length;
					// Fill up input with blanks
					while (input.value.length < lngth.value) input.value += " ";
				}
			}
		}
		return true;
	}
	else return false;
}

function bind (func,obj,args){
	return function () { return func.apply (obj, args); }; 
}
