Event.observe(window, 'load', populateUdm);

PeriodicalExecuter.prototype.registerCallback = function() {
	this.intervalID = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
}

PeriodicalExecuter.prototype.stop = function() {
	clearInterval(this.intervalID);
}

var num_loaded = 0;
var total_items = 0;

function populateUdm()
{
	var menus = $('udm').getElementsByTagName('li');
	for (i=0; i < menus.length; i++)
	{
		menuid = menus[i].id;
		if (menuid == '')
		{
			continue;
		}

		if ($(menuid).parentNode.id != 'udm')
		{
			continue;
		}

		// extract the section id
		parts = menuid.split('-');
		sectionid = parts[1];

		// load inner menu
		loadUdm(sectionid, menuid);

		total_items ++;
	}
}

function refreshUdmClosure(menuid)
{
	return function() { refreshUdm(menuid); }
}

// requries prototype
function loadUdm(sectionid, target)
{
	var url = '/loadudm.php';
	var params = 'sectionid='+sectionid;

	inner = document.getElementsByClassName('inner', target);
	if (inner[0])
	{
		var ajax = new Ajax.Updater(
			{success: inner[0]},
			url,
			{method: 'get', parameters: params, onFailure: reportError, onComplete: refreshUdmClosure('udm-'+sectionid)});
	}
}

// refresh the udm
function refreshUdm(menuid)
{
	// find the inner <ul> tag
	ul = document.getElementsByClassName('inner', $(menuid));
	if (ul[0])
	{
		// if there are no inner <li> tags, remove the <ul>
		// so UDM doesn't get confused.
		li = ul[0].getElementsByTagName('li');
		if (li.length < 1)
		{
			Element.remove(ul[0]);
		}
	}

	num_loaded ++;
	if (num_loaded == total_items)
	{
		um.refresh();
	}
}

function reportError(request)
{
	$('udmresult').innerHTML = "Error: ";
	for (i in request)
	{
		$('udmresult').innerHTML += '<p>' + i + ': ' + request[i] + '</p>';
	}
}
