var Panels = {
	rules : [],
	uncheckHiddenRbs : true,

	AddRuleHideSelf : function(selfID, radioButtonIds, elementToShow, hideWhenOn)
	{
		this.AddRule(radioButtonIds, elementToShow, hideWhenOn);
		
		if (document.getElementById(selfID))
			this.rules[this.rules.length - 1].selfID = selfID;
	},

	AddRule : function(radioButtonIds, elementToShow, hideWhenOn)
	{
		var nullElement = false;
		
		for (var i = 0; i < radioButtonIds.length; i++)
		{
			if (document.getElementById(radioButtonIds[i]))
			{
				var oldOnClick = document.getElementById(radioButtonIds[i]).onclick;
				document.getElementById(radioButtonIds[i]).onclick = function()
				{
					if (oldOnClick)
					{
						oldOnClick();
					}
					Panels.UpdatePanels();
				}
			}
			else
				nullElement = true;
		}
		
		if (!document.getElementById(elementToShow)) 
			nullElement = true;
		
		if (!nullElement)
		{
			this.rules[this.rules.length] = {
				radioButtonIds : radioButtonIds,
				elementToShow : elementToShow,
				hideWhenOn : hideWhenOn,
				selfID : null
			}
		}
	},
	
	HidePanel : function(elementToHideId)
	{
		var elementToHide = document.getElementById(elementToHideId);
		
		if (elementToHide)
			elementToHide.style.display = 'none';
	},

	ShowPanel : function(rule)
	{
		if (!rule.elementToShow)
			return;
		
		var showPanel = false;
		
		for (var i = 0; i < rule.radioButtonIds.length; i++)
		{
			if (document.getElementById(rule.radioButtonIds[i]).checked)
			{
				if (!rule.hideWhenOn)
				{
					showPanel = true;
				}
			}
			else
			{
				if (rule.hideWhenOn)
				{
					showPanel = true;
				}			
			}
		}
		
		if (showPanel)
			document.getElementById(rule.elementToShow).style.display = 'block';

		return showPanel;
	},
	
	UpdatePanels : function()
	{
		for (var i = 0; i < Panels.rules.length; i++)
			Panels.HidePanel(Panels.rules[i].elementToShow);
		for (var i = 0; i < Panels.rules.length; i++)
		{
			if (Panels.ShowPanel(Panels.rules[i]))
			{
				if (Panels.rules[i].selfID != null)
					document.getElementById(Panels.rules[i].selfID).style.display = 'none';
			}
			else if (Panels.uncheckHiddenRbs &&
				Panels.rules[i].elementToShow)
			{
				var rbsToUncheck = document.getElementById(Panels.rules[i].elementToShow).getElementsByTagName('input');

				for (var j = 0; j < rbsToUncheck.length; j++)
				{
					if (rbsToUncheck[j].checked)
						rbsToUncheck[j].checked = false;
				}

			}
		}
	}

}

