$(document).ready(donateInit);

var obj = new Array(
	{ 'selector' : 'diff-billing', 'hider' : 'billing-address' },
	new Array(
		{ 'selector' : 'notify-type-honor', 'hider' : '' },
		{ 'selector' : 'notify-type-memory', 'hider' : '' },
		{ 'selector' : 'notify-type-appreciation', 'hider' : '' },
		{ 'selector' : 'notify-type-other', 'hider' : 'notify-other' }
	)
);

function donateInit()
{
	hideInit();
	loadListeners();
}

function hideInit()
{
	var ctr, ctr2, o;
	for (ctr = 0; ctr < obj.length; ctr++)
	{
		if (obj[ctr] instanceof Array)
		{
			o = obj[ctr];
			for (ctr2 = 0; ctr2 < o.length; ctr2++)
			{
				checkHideDefault(o[ctr2]);
			}
		}
		else {
			checkHideDefault(obj[ctr]);
		}
	}
}

function loadListeners()
{
	var ctr, ctr2, o;
	for (ctr = 0; ctr < obj.length; ctr++)
	{
		if (obj[ctr] instanceof Array)
		{
			o = obj[ctr];
			for (ctr2 = 0; ctr2 < o.length; ctr2++)
			{
				$('#' + o[ctr2].selector).click(toggleHiders);
			}
		}
		else {
			$('#' + obj[ctr].selector).click(toggleHiders);
		}
	}
}

function checkHideDefault(o)
{
	if (!$('#' + o.selector).attr('checked'))
	{
		if (o.hider != '')
		{
			$('#' + o.hider).hide();
		}
	}
}

function toggleHiders(e)
{
	var s = $(e.target).attr('id');
	var ctr, ctr2, o;
	for (ctr = 0; ctr < obj.length; ctr++)
	{
		if (obj[ctr] instanceof Array)
		{
			o = obj[ctr];
			for (ctr2 = 0; ctr2 < o.length; ctr2++)
			{
				//Object in group was clicked on
				if (o[ctr2].selector == s)
				{
					clearAllButOneInGroup(o, ctr2);
				}
			}
		}
		else {
			if (obj[ctr].selector == s)
			{
				$('#' + obj[ctr].hider).toggle();
			}
		}
	}
}

function clearAllButOneInGroup(o, p)
{
	for (var ctr = 0; ctr < o.length; ctr++)
	{
		if (ctr != p)
		{
			if (o[ctr].hider != '') //if there is something to actually hide
			{
				$('#' + o[ctr].hider).hide();
			}
		}
		else
		{
			if (o[ctr].hider != '') //if there is something to actually show
			{
				$('#' + o[ctr].hider).show();
			}
		}
	}
}