function toggleCheckArea(region, checkCurrent, checkSequence)
{
	// this is only for the first two levels
	if(false !== region && false !== checkCurrent)
	{
		var i = 0;
		var checkList = $(region).getElementsByTagName('input');
		
		// loop the children of the currently checked box
		for(i = 0; i < checkList.length; i++)
		{
			// dont undo the check of the just selected checkbox
			if(checkCurrent != checkList[i].id)
			{
				if($(checkCurrent).checked)
				{
					checkList[i].checked = true;
				}
				else
				{
					checkList[i].checked = false;
				}
			}
		}
		
		// when unchecking, always disable all parents on top of this one...
		if(!$(checkCurrent).checked)
		{
			$('checkTitle').checked = false;
		}

		// else when checking, check if all remaining checkboxes are checked as well:
		else if(false !== checkSequence && $(checkCurrent).checked)
		{
			checkMainArea('a_', 'checkTitle');
		}
	}

	// this is for the last level:
	else if (false !== checkSequence && false !== checkCurrent)
	{
		if(!$(checkCurrent).checked)
		{
			$(checkSequence).checked = false;
			$('checkTitle').checked = false;
		}
		else
		{
			checkMainArea(checkSequence+'_r_', checkSequence);

			checkMainArea('a_', 'checkTitle');
		}
	}
}

function checkMainArea(checkSource, checkTarget)
{
	var i = 0;

	var allChecked = true;

	while(currentSequence = $(checkSource+i))
	{
		if(!currentSequence.checked)
		{
			allChecked = false;
		}

		i++;
	}

	if(allChecked)
	{
		$(checkTarget).checked = true;
	}
}

function toggleState(stateType)
{
	switch (stateType)
	{
		case "_select_all_overview": 
		case "_select_none_overview": 
			var inputList = $('select_area').getElementsByTagName('input');
			var checkList = new Array();
			
			var j = 0;
			for(i = 0; i < inputList.length; i++)
			{
				if(inputList[i].getAttribute('type') == "checkbox")
				{
					inputList[i].checked = (arguments[0] == "_select_all_overview") ? true : false;
				}
			}
		break;

		case "display":
			for (i = 1; i < arguments.length; i++)
			{
				var currentState = $(arguments[i]).style.display;
				$(arguments[i]).style.display = (currentState == "block") ? "none" : "block";
			}
		break;

		case "check":
			var i = 0;
			for (i = 1; i < arguments.length; i++)
			{
				var currentState = $(arguments[i]).checked;
				$(arguments[i]).checked = (currentState) ? false : true;
			}
		break;
	}
}

function $(obj) {
	var newObj = "";
	if (arguments.length > 1)
	{
		for (var i = 0, objects = []; i < arguments.length; i++)
		{
			if(document.getElementById(arguments[i]) !== null)
			{
				objects.push($(arguments[i]));
			}
		}
		return objects;
	}

	if (typeof obj == 'string')
	{
		newObj = document.getElementById(obj);
	}

	return newObj;
}