function setInitialFocus()
{
	if (!document.forms[0]) return;
	
	var form = document.forms[0];
	for(i=0; i < form.length; i++)
	{
		var element = form[i];
		var type = element.getAttribute("type");
		if (type != "hidden" && type != "submit" && type != "checkbox" && !element.disabled)
		{
			if (type == "select-one") return;
			try
			{
				Field.focus(element);
				break;
			}
			catch (error)
			{
				continue;
			}
		}
	}
}

function toggleDIV(srcElement, srcArrow, srcMsg)
{
		var srcElement = document.getElementById(srcElement);
		var srcArrow = document.getElementById(srcArrow);
		var srcMsg = document.getElementById(srcMsg);

    if ((srcElement.style.display == "none"))
    {
        Element.show(srcElement);
        srcArrow.src = "images/app_icon_compress.gif";
        srcMsg.innerHTML = "[click to collapse]";
    }
    else
    {
        Element.hide(srcElement);
        srcArrow.src = "images/app_icon_expand.gif";
        srcMsg.innerHTML = "[click to expand]";
    }
}

function hideDIV(divName)
{
    var div = document.getElementById(divName);
    if (div) 
    {
        if ((div.style.display == "")) 
			Element.hide(div);
	}
    
    var img = $(divName + "ToggleImg");
    if (img) 
        img.src = "images/app_icon_expand.gif";
    
    var msg = $(divName + "ToggleSpan");
    if (msg) 
        msg.innerHTML = "[click to expand]";
}

function showDIV(divName)
{
    var div = $(divName);
    if (div)
    {
        if ((div.style.display == "none")) 
            Element.show(div);
	}
    
    var img = $(divName + "ToggleImg");
    if (img) 
        img.src = "images/app_icon_compress.gif";
        
    var msg = $(divName + "ToggleSpan");
    if (msg) 
        msg.innerHTML = "[click to collapse]";
}

function enableValidation(controlID, enable)
{
    for (i = 0; i < Page_Validators.length; i++) 
    {
        val = Page_Validators[i];
        if (val.controltovalidate == controlID) 
        {
            if (enable == true) 
                ValidatorEnable(val, true);
            else 
                ValidatorEnable(val, false);
        }
    }
}

function isNumeric(input)
{
    var regex = new RegExp(/^\d+$/);
    return regex.test(input);
}

function isInteger(sText)
{
    var regex = new RegExp(/^\d{1,7}$/);
    return sText.match(regex);
}

function parseBoolean(sText)
{
    if (!sText) return false;
    sText = sText.toString().toLowerCase();
    return sText == "true" || parseInt(sText) > 0;
}

function SetListValue(element, value)
{
    for (var i=0; i < element.options.length; i++)
    {
        if (element.options[i].value == value)
        {
            element.options[i].selected = true;
            break;
        }
    }
}

function MultipleItemsSelected(obj)
{
    var numchecked = 0;
    for (var x = 0; x < obj.length; x++)
    {
        if (obj[x].selected)
        {
            numchecked++;
            if (numchecked > 1)
                return true;
        }
    }
    
    return false;
}

function ZeroItemsSelected(obj)
{
    for (var x = 0; x < obj.length; x++)
    {
        if (obj[x].selected)
            return false;
    }
    
    return true;
}

function TrapKeyDown(btn, event)
{
    if (event.keyCode == 13)
    {
        window.event.keyCode = 0;
        event.returnValue = false;
        event.cancel = true;
        btn.click();
        return false;
    }
}

var externalWindow;

function popup(address) 
{
	if (address.substring(0, 7).toLowerCase() != "http://")
		address = "http://" + address;

    if (externalWindow == null || externalWindow.closed) 
        externalWindow = window.open(address);
    else 
    {
        externalWindow.location.href = address;
        externalWindow.focus();
    }
}

function doPopups()
{
	var links = document.getElementsByClassName("popup");
	for (var i=0; i < links.length; i++) 
	{
		links[i].onclick = function(){
			popup(this.href);
			return false;
			}
	}
}

function addHidden(name, value) 
{
    var element=document.createElement("input");
    element.id    = name;
    element.name  = name;
    element.type  = "hidden";
    element.value = value;
    document.forms[0].appendChild(element);
}

function parameterValue(paramName) 
{
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    for (var i=0 ; i < vars.length ; i++) 
    {
        var pair = vars[i].split("=");
        if (pair[0] == paramName)
            return pair[1];
    }
    return null; 
}

function setGreenbarEffect(parent)
{
	//sets alternating colors on parent's child tables that are not hidden
	if (parent)
	{
		var tables = $(parent).childNodes;
		var currentClass = "AltRow_Grey";
		for (var i = 0; i < tables.length; i++)
		{
			if (tables[i].style.display != "none")
			{
				tables[i].className = currentClass;
				currentClass = (currentClass == "AltRow_Grey") ? "AltRow_Purp" : "AltRow_Grey";
			}
		}
	}
}

function addNamedField(tag, name)
{
	//IE doesn't see the name attribute in the DOM unless you include it when the element is created.
	var field = document.createElement((document.all) ? ("<" + tag + " name=\"" + name + "\" />") : tag);
	field.setAttribute("name", name);
	return field;
}

function isValueInSelect(selectId, value)
{
    var options = $(selectId).getElementsByTagName('option');
	var nodes = $A(options);
	var found = false;
	nodes.each(function(node){
	if (node.value == value) {
	   found = true;
		}
	});
	return found;
}


function addOption(select, name, value)
{  
   var option = new Option(name, value);  // FireFox
   option.value = value;      // IE
   option.innerText  = name;  // IE
   select.appendChild(option);
}


function xmlToDom(xml) 
{
   if (document.implementation.createDocument)
   { 
      // Mozilla, create a new DOMParser 
      var parser = new DOMParser(); 
      var dom = parser.parseFromString(xml, "text/xml"); 
      return dom;
   }

   if (window.ActiveXObject)
   { 
      var dom = new ActiveXObject("Microsoft.XMLDOM") 
      dom.async="false"; 
      dom.loadXML(xml);   
      return dom;
   } 
   alert("Browser unable to load XML for Ajax");
}