/**
 * <p>Title: formElementTools.js</p>
 * <p>Description: Collection of form-element management tools.</p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: Kreber Graphics, Inc.</p>
 * @author Charlie Reading
 */

// Includes
var formelementtools_js = 1;
var includes = ((typeof browser_js == 'undefined') ? " browser.js\n" : "");
if (includes != "")
{
	alert("formElementTools.js: you must first include:\n" + includes);
}

//
// Get value from <select>.
//
// obj = select object.
//
// returns value of selected option.
//
function getSelectValue(obj)
{
	var index = obj.selectedIndex;
	return obj.options[index].value;
}

//
// Get value from <select> (by id).
//
// tagID = ID of select tag.
//
// returns value of selected option.
//
function getSelectValueByID(id)
{
	var obj = idToTag(id);
	return getSelectValue(obj);
}

//
// Set value in <select>.
//
// obj = select object.
// value = value to select
//
// returns index of selected element, or -1 if none
//
function setSelectValue(obj,value)
{
	var iSelected = -1;

	for (var i=0; i<obj.options.length; i++)
	{
		obj.options[i].selected = (obj.options[i].value == value);
		iSelected = i;
	}

	return iSelected;
}

//
// Set value in <select> (by id).
//
// id = ID of select tag.
// value = value to select
//
// returns index of selected element, or -1 if none
//
function setSelectValueByID(id,value)
{
	var obj = idToTag(id);
	return setSelectValue(obj,value);
}

//
// Disable/Enable <select>.
//
// obj = select object.
// disabled = true to disable, false to enable
//
function setSelectDisabled(obj,disabled)
{
	if (obj.disabled == disabled)
	{
		return;
	}

	if (disabled)
	{
		var i;
		var len = obj.options.length;
		if ((len > 0)
				&& (obj.options[0].text != ""))
		{
			for (i=len; i>0; i--)
			{
				obj.options[i] = new Option(obj.options[i-1].text,obj.options[i-1].value);
			}
			obj.options[0] = new Option("","");
			obj.options[0].selected = true;
		}
	}
	else
	{
		if ((obj.options.length > 0)
				&& (obj.options[0].text == ""))
		{
			obj.options[0] = null;
		}
	}
	obj.disabled = disabled;
}

//
// Disable/Enable <select> (by id).
//
// id = ID of input tag.
// disabled = true to disable, false to enable
//
function setSelectDisabledByID(id,disabled)
{
	var obj = idToTag(id);
	return setSelectDisabled(obj,disabled);
}


//
// Get index from radio-group.
//
// obj = radio-group object.
//
// returns index of selected radio in group (or -1 if none).
//
function getRadioGroupIndex(obj)
{
	if (obj.length)
	{
		for (var i=0; i<obj.length; i++)
		{
			if (obj[i].checked)
			{
				return i;
			}
		}
	}
	else
	{
		return 0;
	}
	
	return -1;
}

//
// Get value from radio-group.
//
// obj = radio-group object.
//
// returns value of selected radio in group (or "" if none).
//
function getRadioGroupValue(obj)
{
	if (obj.length)
	{
		var i = getRadioGroupIndex(obj);
		return ((i != -1) ? obj[i].value : "");
	}
	else
	{
		return ((obj.checked)?obj.value:"");
	}
}

//
// Set value in radio-group.
//
// obj = radio-group object.
// value = value to select
//
// returns index of selected element, or -1 if none
//
function setRadioGroupValue(obj,value)
{
	var iSelected = -1;

	if (obj.length)
	{
		for (var i=0; i<obj.length; i++)
		{
			if (obj[i].value == value)
			{
				obj[i].checked = true;
				iSelected = i;
				break;
			}
		}
	}
	else
	{
		obj.value = value;
		iSelected = 0;
	}

	return iSelected;
}

//
// Disable/Enable radio-group.
//
// obj = radio-group object.
// disabled = true to disable, false to enable
//
function setRadioGroupDisabled(obj,disabled)
{
	if (obj.disabled == disabled)
	{
		return;
	}

	obj.disabled = disabled;
}


//
// Get "checked" from <input> (by id).
//
// id = ID of input tag.
//
// returns true if <input> checked, false otherwise
//
function getInputCheckedByID(id)
{
	var obj = idToTag(id);
	return obj.checked;
}

//
// Set "checked" for <input> (by id).
//
// id = ID of input tag.
// checked = true to check, false to uncheck
//
function setInputCheckedByID(id,checked)
{
	var obj = idToTag(id);
	return obj.checked = checked;
}

//
// Get "value" from <input> (by id).
//
// id = ID of input tag.
//
// returns value for <input> tag
//
function getInputValueByID(id)
{
	var obj = idToTag(id);
	return obj.value;
}

//
// Set "value" from <input> (by id).
//
// id = ID of input tag.
// value = value to set
//
function setInputValueByID(id,value)
{
	var obj = idToTag(id);
	obj.value = value;
}

//
// Disable/Enable form element (by id).
//
// id = ID of input tag.
// disabled = true to disable, false to enable
//
function setFormElementDisabledByID(id,disabled)
{
	var obj = idToTag(id);
	obj.disabled = disabled;
}


//
// Find ancestor of type <tagName> via parentNode
//
// obj = the DHTML object
// tagName = name of tag to look for (e.g. "TR")
//
function findAncestor(obj,tagName)
{
	while (obj.tagName != tagName)
	{
		obj = obj.parentNode;
	}
	return obj;
}

//
// Find previous-sibling of type <tagName> via previousSibling
//
// obj = the DHTML object
// tagName = name of tag to look for (e.g. "TR")
//
function findPrevSibling(obj,tagName)
{
	while (obj.tagName != tagName)
	{
		obj = obj.previousSibling;
	}
	return obj;
}

//
// Find next-sibling of type <tag‹name> via nextSibling
//
// obj = the DHTML object
// tagName = name of tag to look for (e.g. "TR")
//
function findNextSibling(obj,tagName)
{
	while (obj.tagName != tagName)
	{
		obj = obj.nextSibling;
	}
	return obj;
}
			
