function oID(objectId)
{
	objectId = objectId || '';
	if (objectId) return document.getElementById(objectId);
}



//obj = (object) oggetto di riferimento
//e = (string) nome evento : focus,load
//fn = (function)
function AddEvent(obj,e,fn) {
	if (window.addEventListener)		eval('obj.addEventListener("'+ e +'", fn, false);');
	else if (window.attachEvent)		eval('obj.attachEvent("on'+ e +'", fn);');
	else if (document.getElementById)	eval('obj.on'+ e +'=fn;');	
}
function RemoveEvent(obj,e,fn) {
	if (window.addEventListener)		eval('obj.removeEventListener("'+ e +'", fn, false);');
	else if (window.attachEvent)		eval('obj.detachEvent("on'+ e +'", fn);');
	else if (document.getElementById)	eval('obj.on'+ e +'="";');
}




function StopPropagation( e )
{
	if (document.all)
	{	// Code for IE browsers
		window.event.cancelBubble=true;
	} 
	else if (!document.all && document.getElementById)
	{	// Code for Mozilla browsers
		e.stopPropagation();
	}
}








//funzione ricorsiva per calcolare la posizione dell'oggetto rispetto alla pagina
//se getTop=true restituisco distanza dal top, altrimenti left
function GetObjectPosition(sender,getTop)
{
	var x = (getTop?sender.offsetTop:sender.offsetLeft);
	if (sender.offsetParent != null)
		x += GetObjectPosition(sender.offsetParent,getTop);
	return x;
}






/*
Select
*/
function SelectClear( objSelect, null_value )
{
	null_value = null_value || '';
	objSelect.length = 0;
	if (null_value)
		SelectAdd( objSelect, '', null_value)
	/*
	for ( nOpt=0; nOpt=objSelect.options.length; nOpt++ )
	{
	objSelect.options[0] = null ;
	}
	*/
}
function SelectAdd( objSelect, value, label, selected )
{
	selected = selected || false;
	label = label || value;
	var opt = new Option(label, value);
	var len = objSelect.options.length;
	objSelect.options[len] = opt;
	if (selected)
		objSelect.options.selectedIndex=len;
}
function SelectAdd_option( objSelect, opt )
{
	objSelect.options[ objSelect.length ] = opt ;
}
function SelectDel_selected(objSelect)
{
	for (var i=0; i<objSelect.options.length; i++)
	{
		//alert("("+i+") "+objSelect.options[i].value+" = "+objSelect.options[i].selected);
		if (objSelect.options[i].selected==true)
		{
			var opt = objSelect.options[i];
			objSelect.remove(i);
			return opt;
		}   
	}
}
function SelectDel_value( objSelect, value )
{
	for (var i=0; i<objSelect.options.length; i++)
	{
		//alert("("+i+") "+objSelect.options[i].value+" = "+value);
		if (objSelect.options[i].value==value)
		{
			var opt = objSelect.options[i];
			objSelect.remove(i);
			return opt;
		}   
	}
}











function SwapDisplay( id_object, display_new )
{
	id_object = id_object || '';
	display_new = display_new || '';
	if ( !id_object ) return false;
	if ( typeof(oID(id_object))=="undefined" || typeof(oID(id_object))=="null" ) return false;
	if ( display_new=="" )
	{
		var display = oID(id_object).style.display;
		switch (display)
		{
			case "block":
				display_new = "none";
				break;
			case "none":
				display_new = "block";
				break;
			default:
				display_new = "none";
				break;			
		}
	}
	try {
		oID(id_object).style.display = display_new;	
	} catch(e) {
		//
	}
}
