function PreviousElement(element)
{
	if (element.previousSibling.tagName)
		return element.previousSibling;
	else
		return element.previousSibling.previousSibling;
}
function NextElement(element)
{
	if (element.nextSibling.tagName)
		return element.nextSibling;
	else
		return element.nextSibling.nextSibling;
}
function FirstChildElement(element)
{
	if (element.firstChild && element.firstChild.tagName)
		return element.firstChild;
	else
		return element.childNodes[1];
}

function HookEvent(element, event_name, func)
{
	if (element.attachEvent)
		element.attachEvent("on"+event_name, func);
	else if (element.addEventListener)
		element.addEventListener(event_name, func, false);
	else
		alert("Cannot attach event");
}

function build_select(opt_array, opt_selected, value_as_option)
{
	var select = document.createElement("select");
	
	var seleziona_opt = document.createElement("option");
	seleziona_opt.value = "0";
	seleziona_opt.innerHTML = "- Seleziona - ";
	select.appendChild(seleziona_opt);
	
	for(i in opt_array)
	{
		var opt = document.createElement("option");
		opt.innerHTML = opt_array[i];
		
		if (value_as_option)
			opt.value = opt_array[i];
		else
			opt.value = i;
		
		if (opt_selected == i || opt_selected == opt_array[i])
			opt.selected = "selected";
		
		select.appendChild(opt);
	}
	
	return select;
}

function FindInSelect(text_input)
{
	var text = text_input.value;
	var select = NextElement(text_input);
	
	if (text != '')
	{
		for (var i = 0; i<select.options.length; i++)
		{
			if (select.options[i].text.toLowerCase().indexOf(text) != -1)
			{
				if (i != 0)
				{
					select.options[i].selected = true;
					if (select.onchange)
						select.onchange();
					return;
				}
			}
		}
	}
	
	select.options[0].selected = true;
	if (select.onchange)
		select.onchange();
}