var ie = /MSIE/.test(navigator.userAgent);
var moz = !ie && navigator.product == "Gecko";

function emulateCurrentStyle()
{
	HTMLElement.prototype.__defineGetter__("currentStyle",
		function ()
		{
			return this.ownerDocument.defaultView.getComputedStyle(this, null);
		}
	);
}

if(moz)
{
	emulateCurrentStyle();
}

//------------------------------------------------------------------------------

function nextSiblingElement(root_node)
{
	var e = root_node.nextSibling;
	while(e = e.nextSibling)
		if(e.nodeType==1) return e;
	return null;
}

function $(sid)
{
	return document.getElementById(sid);
}

function $A(el,attr_name)
{
	if(el!=null)
	{
		if(moz)
		{
			var attr_obj = el.attributes[attr_name];
			if(attr_obj)
				return attr_obj.value;
		}
		else if(ie)
		{
			if(el[attr_name]!='undefined')
				return el[attr_name];
		}
	}
	return null;
}

function isArray(obj)
{
	if (typeof obj == 'object' && typeof obj.length == 'number')
		return true;
	return false;
}  

function trace(m)
{
	console.log(m);
}

function escapeHTML(s)
{
	var div = document.createElement('div');
	var text = document.createTextNode(s);
	div.appendChild(text);
	return div.innerHTML;
}

function getElementsByAttribute(root_element,tag_name,attr_name)
{
	var elements = root_element.getElementsByTagName(tag_name);
	var ret = [];
	var c=elements.length;
	//alert(c);
	for (var i=0; i<c ; i++)
	{
		var e = elements[i];
		//alert(e);
		if($A(e,attr_name))
			ret.push(e);
	}
	//alert(ret.length);
	return ret;
}

function getElementsByAttributeValue(root_element,tag_name,attr_name,attr_value)
{
	var elements = root_element.getElementsByTagName(tag_name);
	var ret = [];
	var c=elements.length;
	//alert(c);
	for (var i=0; i<c ; i++)
	{
		var e = elements[i];
		//alert(e);
		if($A(e,attr_name)==attr_value)
			ret.push(e);
	}
	//alert(ret.length);
	return ret;
}

function VerifyForm(form_element)
{
	var els = getElementsByAttribute(form_element,"*","errmsg");
	var c = els.length;
	for(var i=0; i<c; i++)
	{
		var e = els[i];
		var str_regexp = $A(e,'regexp');
		if(str_regexp)
		{
			var rx = new RegExp(str_regexp);
			if(!rx.test(e.value))
			{
				alert($A(e,'errmsg'));
				return false;
			}
		}	
	}
	return true;
}

function fade_color(el,bforeground,dest,millisec)
{
	trace("ayo not implemented!");
}

function fade_alpha(el,dest_alpha_percentage,millisec)
{
	trace("ayo not implemented!");
}

//element = array di oppure oggetto Element
function toggle_display(element)
{
	/*
	function _togel(el)
	{
		if(el.currentStyle.display=='none')
		{
			if(el._previous_display!='undefined')
				el.style.display=el._previous_display;
			else
				el.style.display=''; //con questo va
			
		//sotto firefox ha dei prob con le tabelle non ricalcola le dimensioni!!
		//el.style.display='block';  
		}	
		else
		{
			el._previous_display = el.currentStyle.display;
			el.style.display='none';
		}
	}*/
	
	if(typeof element == 'string')
		element = document.getElementById(element);
	
	function _togel(el)
	{
		if(el.currentStyle.display=='none')
	  {
	  	//if(el.tagName=='TABLE')
				el.style.display=''; //con questo va
			/*else
				el.style.display='block';*/
			
	    //sotto firefox ha dei prob con le tabelle non ricalcola le dimensioni!!
	    //el.style.display='block';  
		}	
		else
			el.style.display='none';
	}

	if(isArray(element))
	{
		for(var i=0;i<element.length;i++)
			_togel(element[i]);
	}
	else
		_togel(element);
}

/*
function resetSelect(sel_el,deselect_val)
{
	if(!sel_el)
		return;

	var savescroll = sel_el.scrollTop;

	var opts = sel_el.options;
	if(!opts)
		opts = sel_el.columns(0).options;
	
	//alert(opts[sel_el.selectedIndex]);
	
	if(sel_el.selectedIndex!=-1)
	{
		//alert(typeof opts[sel_el.selectedIndex].value);
		if(opts[sel_el.selectedIndex].value===deselect_val)
		{
			//alert(opts[sel_el.selectedIndex].value);
			//alert(deselect_val);
			alert('via tutto');
			for(var i=0;i<opts.length;i++)
				if(opts[i].value!=deselect_val)
					opts[i].selected = false;
			for(k in sel_el._savesel)
				sel_el._savesel[k] = false;
			return;
		}
	}
	
	if(typeof(sel_el._savesel)=='undefined')
	{
		sel_el._savesel = [];
		for(var i=0;i<opts.length;i++)
			sel_el._savesel[i] = false;
	}
	
	for(var i=0;i<opts.length;i++)
	{
		item_selected = opts[i].selected;
		//alert(item_selected);
		if(item_selected==true)
		{
			sel_el._savesel[i] = !sel_el._savesel[i];
		}
	}
	
	for(k in sel_el._savesel)
		opts[k].selected = sel_el._savesel[k];
	
	if(!ie)
		sel_el.scrollTop = savescroll;
}
*/


function resetSelect(sel_el,deselect_val)
{
	if(!sel_el)
		return;
		
	var savescroll = sel_el.scrollTop;
	var opts = sel_el.options;
	if(!opts)
		opts = sel_el.columns(0).options;
	
	if(sel_el.selectedIndex!=-1 && opts[sel_el.selectedIndex].value==deselect_val)
	{
		for(var i=0;i<opts.length;i++)
			if(opts[i].value!=deselect_val)
				opts[i].selected = false;
		for(k in sel_el._savesel)
			sel_el._savesel[k] = false;
		return;
	}
	
	if(typeof(sel_el._savesel)=='undefined')
	{
		sel_el._savesel = [];
		for(var i=0;i<opts.length;i++)
			sel_el._savesel[i] = false;
	}
	
	for(var i=0;i<opts.length;i++)
	{
		item_selected = opts[i].selected;
		if(item_selected==true)
		{
			sel_el._savesel[i] = !sel_el._savesel[i];
		}
	}
	
	for(k in sel_el._savesel)
		opts[k].selected = sel_el._savesel[k];
	
	sel_el.scrollTop = savescroll;
}

function disableInputs(rootnode,bdisabled,array_names_notdisable)
{
	var arr_i = rootnode.getElementsByTagName('input');
	var arr_s = rootnode.getElementsByTagName('select');
	var arr_t = rootnode.getElementsByTagName('textarea');
	for(i=0;i<arr_i.length;i++)
		if(array_names_notdisable.indexOf(arr_i[i].name)==-1)
			arr_i[i].disabled = bdisabled;
	for(i=0;i<arr_s.length;i++)
		if(array_names_notdisable.indexOf(arr_s[i].name)==-1)
			arr_s[i].disabled = bdisabled;
	for(i=0;i<arr_t.length;i++)
		if(array_names_notdisable.indexOf(arr_t[i].name)==-1)
			arr_t[i].disabled = bdisabled;
}

function NextSibling(start_element,sTagName)
{
	if(typeof sTagName!= 'string' || typeof start_element != 'object')
		return null;
	nextel = start_element;
	//console.log(nextel.nextSibling);
	while(nextel = nextel.nextSibling)
	{
		//console.log(nextel.tagName);
		if(nextel.nodeType==1 && nextel.tagName.toLowerCase() == sTagName.toLowerCase())
			return nextel;
	}
	return null;
}


function tab_activate(arr,activetab)
{
	for(var i=0;i<arr.length;i++)
	{
		if(arr[i]!=activetab)
		{
			arr[i].className=arr[i].attributes['dclass'].value;
			$(arr[i].attributes['tabcontentid'].value).style.display='none';
		}
		else
		{
			arr[i].className=arr[i].attributes['aclass'].value;
			$(arr[i].attributes['tabcontentid'].value).style.display='block';
		}
	}
}
		

function implodi_esplodi_tree(img,hide_show_el)
{
  if(img.src.indexOf('tree_plus2')>0)
    img.src = 'images/tree_minus2.gif';
  else
    img.src = 'images/tree_plus2.gif';
    
  toggle_display(hide_show_el);
}


/*TABBER ------------------------------------------------------------------------------*/

// var tabfolder = new Tabber('tabs_ul','active');
function Tabber(ul_id_or_obj,active_tab_class)
{
	if(this == window)
		return null;
		
	this.rootEle = ul_id_or_obj;
	
	if(typeof this.rootEle == 'string')
		this.rootEle = document.getElementById(this.rootEle);
		
	if(!this.rootEle)
		return null;
		
	this.activeClassName = active_tab_class;
	
	//metodo tab_onclick()
	this.tab_onclick = function(tab_ele)
	{
		//console.dir(this.tabs);
	
		if(this.tabs && this.tabs.length)
		{
			for(var i=0;i<this.tabs.length;i++)
			{
				var curr = this.tabs[i];
				if(curr.tab != tab_ele)
				{
					curr.tab.className = '';
					curr.cnt.style.display = 'none';
				}
				else
				{
					curr.tab.className = this.activeClassName;
					curr.cnt.style.display = '';
				}
			}
		}
	}
		
	//metodo init()
	this.init = function() {
		if(!this.rootEle)
			return false;
			
		var lis = this.rootEle.getElementsByTagName('LI');
		
		if(lis && lis.length)
		{
			this.tabs = [];
			for(var i=0;i<lis.length;i++)
			{
				var curr_ele = lis[i];
				
				var curr_a = curr_ele.getElementsByTagName('A')[0];
				var curr_cnt = curr_a.rel;
				//alert(curr_cnt);
				curr_cnt = document.getElementById(curr_cnt);
				
				this.tabs.push({
					tab: curr_ele,
					a: curr_a,
					cnt:curr_cnt
				});
				
				var obj = this;
				curr_ele.onclick = function(){ obj.tab_onclick(this); }
			}
		}
	}
	
	this.init();
	//fine Tabber
}


//------------------------------------------------------------------


function submit_parent(start_ele)
{
	if(typeof start_ele == 'string')
		start_ele = document.getElementById(start_ele);
	while(start_ele)
	{
		if(typeof start_ele.nodeName!='undefined' && start_ele.nodeName=='FORM')
			start_ele.submit();
		start_ele = start_ele.parentNode;
	}
}


function label_input(input_ele,str)
{
	if(typeof input_ele == 'string')
		input_ele = document.getElementById(input_ele);
	
	if(!input_ele.value.length)
		input_ele.value = str;
	
	input_ele.onfocus = function() {
		if(input_ele.value!=str)
			input_ele.value = '';
	}
	
	input_ele.onblur = function() {
		if(!input_ele.value.length)
			input_ele.value = str;
	}
	
}




