function gel(elo)
{
	if(typeof elo == 'string')
		elo = document.getElementById(elo);
	return elo;
}

function current_style(el)
{
	el = gel(el);
	var currstyle = el.currentStyle;
	if(!currstyle || typeof currstyle == 'undefined')
		currstyle = el.ownerDocument.defaultView.getComputedStyle(el, null);
	return currstyle;
}

/*
function attr(el,name)
{

}

function compare_obj(obj,cmp_obj)
{
	
}

function set_obj(obj,set_obj)
{

}

function getElements(startel,cmp_obj)
{

}

function get_pos_size()
{

}
*/

//--------------------------------------------------------------------------

//utile per captcha
function reload_img(img)
{
	if(typeof img == 'string')
		img = document.getElementById(img);
	
	if(!img.orig_url)
		img.orig_url = img.src;
	
	var now = new Date();
	if(img.orig_url.indexOf('?')>-1)
		img.src = img.orig_url + "&js_rand=" + now.getTime();
	else
		img.src = img.orig_url + "?js_rand=" + now.getTime();
}


function switch_icon(imgel,icons) {
	imgel = gel(imgel);

	var cur_src = imgel.src.toLowerCase();
	var val0 = icons[0].toLowerCase();

	if(cur_src.indexOf(val0) > 0)
		imgel.src = icons[1];
	else
		imgel.src = icons[0];
}

function toggle_display(el)
{
	if(typeof el == 'string')
		el = document.getElementById(el);
	
	var currstyle = el.currentStyle;
	if(!currstyle || typeof currstyle == 'undefined')
		currstyle = el.ownerDocument.defaultView.getComputedStyle(el, null);
	if(currstyle.display=='none'){
			el.style.display = '';
  }
	else{
		el.style.display='none';
	}
}


function first_child(el,tagname) {
	if(typeof el == 'string')
		el = document.getElementById(el);
	var arr = el.getElementsByTagName(tagname);
	if(arr.length>0)
		return arr[0];
	return null;
}

function tm_toggle(img_el,icons) {
  var curr_li = parent_tag(img_el,'LI');
	if(first_child(curr_li,'UL'))
    toggle_display(first_child(curr_li,'UL'));
	if(icons) switch_icon(img_el,icons);
}


function parent_tag(startel,tagname)
{
	if(typeof startel == 'string')
		startel = document.getElementById(startel);
	while(startel)
	{
		if( typeof startel.nodeName!='undefined' && startel.nodeName==tagname.toUpperCase() )
			return startel;
		startel = startel.parentNode;
	}
}

function submit_parent(start_ele)
{
	var parent_form = parent_tag(start_ele,'FORM');
	if(parent_form)
		parent_form.submit();
}

function clear_inputs(startel)
{
	if(typeof startel == 'string')
		startel = document.getElementById(startel);
		
	var inputs = startel.getElementsByTagName('INPUT');
	for(var i=0;i<inputs.length;i++)
		inputs[i].value = '';
	
	var inputs = startel.getElementsByTagName('SELECT');
	for(var i=0;i<inputs.length;i++)
		inputs[i].value = '';
	
	var inputs = startel.getElementsByTagName('TEXTAREA');
	for(var i=0;i<inputs.length;i++)
		inputs[i].value = '';
}

//esempio: add_row('row_tpl','tabid',this)
function add_row(tpl_el,el_before)
{
	if(typeof tpl_el == 'string')
		tpl_el = document.getElementById(tpl_el);
	if(typeof tab_el == 'string')
		tab_el = document.getElementById(tab_el);
	if(typeof el_before == 'string')
		el_before = document.getElementById(el_before);

	var newrow = tpl_el.cloneNode(true);
	var tab_or_tabbody = el_before.parentNode;
	var insele = tab_or_tabbody.insertBefore(newrow,el_before);
	
	//force display and clear inputs
	insele.style.display = '';
	clear_inputs(insele);
}

function unify_checks(checkel,startel)
{
	if(typeof checkel == 'string')
		checkel = document.getElementById(startel);
		
	if(typeof startel == 'string')
		startel = document.getElementById(startel);
		
	var arrinput = startel.getElementsByTagName('INPUT');
	for(var i=0;i<arrinput.length;i++)
	{
		if(arrinput[i].type=='checkbox' && arrinput[i]!=checkel)
			arrinput[i].checked = checkel.checked;
	}
}

function remove_element(el)
{
	if(typeof el == 'string')
		el = document.getElementById(el);
	el.parentNode.removeChild(el);
}

//abilita o disabilita gli input, textarea, select
//se newstate non č specificato verrā invertito lo stato attuale
function toggle_inputs(startel,newstate)
{
	var arr = startel.getElementsByTagName('INPUT');
	for(var i=0;i<arr.length;i++)
	{
		if(newstate)
			arr[i].disabled = newstate;
		else
			arr[i].disabled = !arr[i].disabled;
	}
	
	var arr = startel.getElementsByTagName('SELECT');
	for(var i=0;i<arr.length;i++)
	{
		if(newstate)
			arr[i].disabled = newstate;
		else
			arr[i].disabled = !arr[i].disabled;
	}
	
	var arr = startel.getElementsByTagName('TEXTAREA');
	for(var i=0;i<arr.length;i++)
	{
		if(newstate)
			arr[i].disabled = newstate;
		else
			arr[i].disabled = !arr[i].disabled;
	}
}


function clone(o) {
	//TODO: gestire clonaz arrays
	/*
	if( typeof o.length != 'undefined' )
		*/
	var r = {};
	for(k in o)
		r[k] = o[k];
	return r;
}
