var sub_menu_delay = 500;
var HidingSubmenu = null;
var SubmenuTimer = null;
		
function ShowSubmenu(menu)
{
  var menu_element = document.getElementById(menu);
	if (menu_element)
	{
	  menu_element.style.visibility='visible';				
		if (SubmenuTimer)
		{ // something is visible
		  if (HidingSubmenu == menu_element) 
			{
			  clearTimeout(SubmenuTimer);
				SubmenuTimer = null;
				HidingSubmenu = null;
			}
			else
			{
			  HideVisibleSubmenu();
			}
		}
	}
}

function TimedHideSubmenu(menu)
{
  if (SubmenuTimer == null)
	{
		  var menu_element = document.getElementById(menu);
 		if (menu_element)
  	{
	    SubmenuTimer = setTimeout("HideVisibleSubmenu()", sub_menu_delay);
			HidingSubmenu = menu_element; 
			}
	}
	else
	{
	  Alert('Trying to hide menu before some other is hidden');
	}		 
}

function HideVisibleSubmenu()
{
	if (HidingSubmenu)
	{
	  HidingSubmenu.style.visibility='hidden';
			HidingSubmenu = null;			  
	}
  clearTimeout(SubmenuTimer);
	SubmenuTimer = null;
}

// http://www.charlesrowe.com/2007/04/25/select-all-checkboxes-in-javascript-dynamically/
function checkByClass(checkedClass,checkedStatus,node) {
    checkedClass = checkedClass || '*';
    checkedStatus = document.getElementById(checkedStatus);
    node = (node == null)?document:document.getElementById(node);
    var elements = node.getElementsByTagName('input');
    var elementCount = elements.length;
    var pattern = new RegExp('(^|\\s)'+checkedClass+'(\\s|$)');
    var i;
    for (i = 0; i < elementCount; i++) {
         if ( elements[i].type == 'checkbox' && pattern.test(elements[i].className) ) {
            elements[i].checked = checkedStatus.checked;
        }
    }
}

function checkByName(checkedName,checkedStatus,node) {
    checkedName = checkedName || '*';
    checkedStatus = document.getElementById(checkedStatus);
    node = (node == null)?document:document.getElementById(node);
    var elements = node.getElementsByTagName('input');
    var elementCount = elements.length;
    var pattern = new RegExp('(^|\\s)'+checkedName); // match beginning of the word
    var i;
    for (i = 0; i < elementCount; i++) {
         if ( elements[i].type == 'checkbox' && pattern.test(elements[i].name) ) {
            elements[i].checked = checkedStatus.checked;
        }
    }
}
