// global flag
var MAX_LABEL_LENGTH = 23;

// Creates an option value
function createOption(sel, item) {
	var opt = document.createElement("option");
	if (item.getAttribute('id')) { opt.value = item.getAttribute('id'); }
	if (item.getAttribute('default')) { opt.defaultSelected = true; }
	var label = item.firstChild.nodeValue;
	if (label.length > MAX_LABEL_LENGTH) {
		label = label.substr(0, MAX_LABEL_LENGTH - 3) + '...';
	}
	opt.appendChild(document.createTextNode(label));
	sel.appendChild(opt);
}

function fillCombo(request, id) {

	// Clears combo
    var sel = $(id);
    while (sel.length > 0) {
        sel.remove(0);
    }

	// Fills it
	var root = request.responseXML.documentElement;
	if (root == null) {

		// Horrible hack for local IE!!!
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = false;
		xmlDoc.loadXML(request.responseText);
		root = xmlDoc.documentElement;
	}
    var items = root.getElementsByTagName("item");
    for (var i = 0; i < items.length; i++) {
		createOption(sel, items[i]);
    }

	// Enables it
	$(id).disabled = false;
}

function fillSelect(id, url) {
	var myAjax = new Ajax.Request(url,
	{
		method: 'get',
		parameters: '',
		onComplete: function(request) { fillCombo(request, id); },
		onException: showException
	});
}
