function checkAll(form,checkboxName,startsWith)
{
	var elements = form.elements;
	var len = elements.length;
	for(var i=0; i<len; i++)
	{
		var element = elements[i];
		if((element.name == checkboxName || (startsWith && element.name.indexOf(checkboxName)==0)) && !element.disabled)
			element.checked = true;
	}

}

function uncheckAll(form,checkboxName,startsWith)
{
	var elements = form.elements;
	var len = elements.length;
	for(var i=0; i<len; i++)
	{
		var element = elements[i];
		if((element.name == checkboxName || (startsWith && element.name.indexOf(checkboxName)==0)) && !element.disabled)
			element.checked = false;
	}

}

function setDisableAll(form,checkboxName,startsWith, disableCheckbox)
{
	var elements = form.elements;
	var len = elements.length;
	for(var i=0; i<len; i++)
	{
		var element = elements[i];
		if(element.type == "checkbox" && (element.name == checkboxName || (startsWith && element.name.indexOf(checkboxName)==0)))
			element.disabled = disableCheckbox;
	}

}

function disableAll(form,checkboxName,startsWith)
{
	setDisableAll(form,checkboxName,startsWith,true);
}

function enableAll(form,checkboxName,startsWith)
{
	setDisableAll(form,checkboxName,startsWith,false);
}

function anyChecked(theForm, checkName) {
	// Check to see if anything is checked.
	var	bAnyChecked = false;
	var	i = 0;
	while (i < theForm.elements.length && !bAnyChecked)
	{
		bAnyChecked	= (theForm.elements[i].name == checkName) && theForm.elements[i].checked;
		i++;
	}

	return bAnyChecked;
}

function allChecked(theForm, checkName) {
	// Check to see if all checkboxes (for a given name) are checked
	var	bAllChecked = true;
	var	i = 0;
	var checkCount = 0;
	while (i < theForm.elements.length && bAllChecked)
	{
		if (theForm.elements[i].name == checkName)
		{
			checkCount++;
			bAllChecked	= bAllChecked && theForm.elements[i].checked;
		}
		i++;
	}

	return checkCount > 0 && bAllChecked;
}

function getCheckedCountWithPrefix(theForm, fieldNamePrefix)
{
	var	nCheckedCount = 0;

	if(theForm != null && fieldNamePrefix != null)
	{
		var elements = theForm.elements;
		for (var i = 0; i < elements.length; i++)
		{
			var element = elements[i];
			if( element.name.indexOf(fieldNamePrefix)==0 && !element.disabled && element.type == "checkbox" && element.checked) {
				nCheckedCount++;
			}
		}
	}
	return nCheckedCount;
}

function getCheckedCount() {
	// Check to see if anything is checked 
	// Use arguments array for multiple check box names
	// The first argument must be the form
	
	
	var	nCheckedCount = 0;

	if(arguments != null && arguments.length>1)
	{
		var	i = 0;
		var theForm = arguments[0];
		while (i < theForm.elements.length)
		{
			for(var a = 1; a < arguments.length; a++)
			{
				nCheckedCount	+= ((theForm.elements[i].name == arguments[a]) && theForm.elements[i].checked)?1:0;
			}
			
			i++;
		}
	}

	return nCheckedCount;
}

function getCheckBoxCount(theForm, checkName) {
	var	nCount = false;
	var	i = 0;
	while (i < theForm.elements.length)
	{
		nCount	+= (theForm.elements[i].name == checkName)?1:0;
		i++;
	}

	return nCount;
}

function getCheckboxWithValue(theForm,checkName,value) {
	var obj = theForm[checkName];
	
	if (obj != 'undefined' && obj.type == "checkbox" && obj.value == value) 
	{
		return obj;
	}
	else if(obj != 'undefined' && obj.length > 0)
	{
		for (var j = 0; j < obj.length; j++) 
		{
			if (obj[j].type == "checkbox" && obj[j].value == value)
			{
				return obj[j];
			}
		}
	}
	
	return null;
}

function getCheckboxesWithValue(theForm,checkName,value) {
	var checkboxes = new Array();
	var obj = theForm[checkName];
	
	if (obj != 'undefined' && obj.type == "checkbox" && obj.value == value) 
	{
		checkboxes.push(obj);
	}
	else if(obj != 'undefined' && obj.length > 0)
	{
		for (var j = 0; j < obj.length; j++) 
		{
			if (obj[j].type == "checkbox" && obj[j].value == value)
			{
				checkboxes.push(obj[j]);
			}
		}
	}
	
	if (checkboxes.length == 0)
		return null;
	
	return checkboxes;
}

function anyCheckedWithValue(theForm,checkName,value)
{
	var obj = theForm[checkName];
	
	if (obj != 'undefined' && (obj.type == "checkbox" || obj.type == "radio") && obj.value == value && obj.checked) 
	{
		return true;
	}
	else if(obj != 'undefined' && obj.length > 0)
	{
		for (var j = 0; j < obj.length; j++) 
		{
			if ((obj[j].type == "checkbox" || obj[j].type == "radio") && obj[j].checked && obj[j].value == value)
			{
				return true;
			}
		}
	}
	
	return false;
}

function getCheckedRadioValue(theForm,radioName)
{
	var obj = theForm[radioName];
	
	if (obj != 'undefined' && obj.type == "radio" && obj.checked) 
	{
		return obj.value;
	}
	else if(obj != 'undefined' && obj.length > 0)
	{
		for (var j = 0; j < obj.length; j++) 
		{
			if (obj[j].type == "radio" && obj[j].checked)
			{
				return obj[j].value;
			}
		}
	}
	
	return null;
}

function getCheckedCheckboxValue(theForm,checkboxName)
{
	var values = getCheckedCheckboxValues(theForm,checkboxName);
	
	if(values.length>1)
		return values;
	else if(values.length==1)
		return values[0];
	else
		return null;
}

function getCheckedCheckboxValues(theForm,checkboxName)
{
	var obj = theForm[checkboxName];
	var values = new Array();
	
	if (obj != null && obj != 'undefined' && obj.type == "checkbox" && obj.checked) 
	{
		values.push(obj.value);
	}
	else if(obj != null && obj != 'undefined' && obj.length > 0)
	{
		for (var j = 0; j < obj.length; j++) 
		{
			if (obj[j].type == "checkbox" && obj[j].checked)
			{
				values.push(obj[j].value);
			}
		}
	}
	
	return values;
}

function getUnCheckedCheckboxValues(theForm,checkboxName)
{
	var obj = theForm[checkboxName];
	var values = new Array();
	
	if (obj != null && obj != 'undefined' && obj.type == "checkbox" && obj.checked) 
	{
		values.push(obj.value);
	}
	else if(obj != null && obj != 'undefined' && obj.length > 0)
	{
		for (var j = 0; j < obj.length; j++) 
		{
			if (obj[j].type == "checkbox" && !obj[j].checked)
			{
				values.push(obj[j].value);
			}
		}
	}
	
	return values;
}


function getRadioButtonWithValue(theForm,radioName,value)
{
	var obj = theForm[radioName];
	
	if (obj != 'undefined' && obj.type == "radio" && obj.checked) 
	{
		return (obj.value==value?obj:null);
	}
	else if(obj != 'undefined' && obj.length > 0)
	{
		for (var j = 0; j < obj.length; j++) 
		{
			if (obj[j].type == "radio" && obj[j].value == value)
			{
				return obj[j];
			}
		}
	}
	
	return null;
}

var selectAllCounts = new Object();
var selectAllSelected = new Object();
function initializeSelectAll(form, checkbox)
{
	if(checkbox != null && checkbox != 'undefined')
	{
		var selectedCount = 0;
		var count = 0;

		if(arguments.length>2)
		{
			for(var i=2; i<arguments.length; i++)
			{
				var relatedCheckBoxName = arguments[i];
				var obj = form[relatedCheckBoxName];

				if (obj != null && obj != 'undefined' && obj.type == "checkbox") 
				{
					selectedCount += obj.checked?1:0;
					count++;
				}
				else if(obj != null && obj != 'undefined' && obj.length > 0)
				{
					for (var j = 0; j < obj.length; j++) 
					{
						if (obj[j].type == "checkbox")
						{
							selectedCount += obj[j].checked?1:0;
							count++;
						}
					}
				}
			}
		}
		selectAllCounts[checkbox.name] = count;
		selectAllSelected[checkbox.name] = selectedCount;
	}
}


function clickedSelectAll(form, checkbox)
{
	if(checkbox != null && checkbox != 'undefined')
	{
		if(arguments.length>2)
		{
			var count = selectAllCounts[checkbox.name];
			if(count == 0)
			{
				var relatedNames = "";
				for(var i=2; i<arguments.length; i++)
				{
					relatedNames += ",\"" + arguments[i] + "\"";
				}
				eval("initializeSelectAll(form,checkbox"+relatedNames+");");
				count = selectAllCounts[checkbox.name];
			}

			var selectedCount = selectAllSelected[checkbox.name];

			for(var i=2; i<arguments.length; i++)
			{
				var relatedCheckBoxName = arguments[i];
				var obj = form[relatedCheckBoxName];
				var doSelectAll = checkbox.checked;

				if (obj != null && obj != 'undefined' && obj.type == "checkbox") 
				{
					obj.checked = doSelectAll;
				}
				else if(obj != null && obj != 'undefined' && obj.length > 0)
				{
					for (var j = 0; j < obj.length; j++) 
					{
						if (obj[j].type == "checkbox")
						{
							obj[j].checked = doSelectAll;
						}
					}
				}
			}
			if(checkbox.checked)
				selectedCount = count;
			else
				selectedCount = 0;

			selectAllCounts[checkbox.name] = count;
			selectAllSelected[checkbox.name] = selectedCount;
		}
	}
}

function clickedItemRelatedToSelectAll(form, checkbox, selectAllCheckBoxName)
{
	var count = selectAllCounts[selectAllCheckBoxName];
	if(count == 0) count = 0;
	var selectedCount = selectAllSelected[selectAllCheckBoxName];
	if(selectedCount == 0) selectedCount = 0;
	
	if(checkbox.checked)
		selectedCount++;
	else
		selectedCount--;

	var selectAllCheckBox = form[selectAllCheckBoxName];
	if(selectAllCheckBox != 'undefined' && count>0)
	{
		selectAllCheckBox.checked =  (count==selectedCount);
	}
	

	selectAllSelected[selectAllCheckBoxName] = (selectedCount<0?0:selectedCount);
}

