//var lastObj=[[,],[,]]; // new Array(Array(,), Array(,))
var ie5=(navigator.userAgent.indexOf('MSIE 5.0')>-1) || (navigator.userAgent.indexOf('MSIE 4')>-1)
var ie=(navigator.userAgent.indexOf('MSIE')>-1);
var UndefinedObj; //variabile dummy utile per rimettere un oggetto a undefined
var lastObj;

function showObj(nome){
	var obj= document.getElementById(nome);
	//var debugIE=document.getElementById('debugIE');
//	debugIE.innerHTML='';
	if (! obj) {
		alert(nome);
	}
	if (lastObj!=UndefinedObj){
		lastObj.style.cssText='';
		if (ie) {
			cheppalle2(lastObj,false);

			if (ie5) {
				cheppalle(lastObj,'');
			}
		}
	}


//	debugIE.innerHTML+="\n<hr />\n";
	obj.style.cssText='display:block;';

	if (ie) {
		cheppalle2(obj,1);
		if (ie5) {
			cheppalle(obj,'visibility:visible;');
		}
	}
	lastObj=obj;

}

function showMenu2(obj){
	if (lastObj!=UndefinedObj){
		showMenu(obj);
	}
}

function hideMenu(obj){
	if (lastObj!=UndefinedObj){
		lastObj.style.cssText='';
		if (ie) {
			cheppalle2(lastObj);
			if (ie5) {
				cheppalle(lastObj,'');
			}
		}
	}
	//lastObj=UndefinedObj;
}

function cheppalle2(obj,show,p){
	var i=0,n=obj.childNodes.length;
	//var debugIE=document.getElementById('debugIE');
	var tab='';
	if (!p)p=0;
	k=p*4;
	for (;k;k--){
		tab+='&nbsp;';
	}
	/*
	if (obj.id){
		debugIE.innerHTML+="<br />" + tab +obj.id + ' - ' + n;
	}else if (obj.name){
		debugIE.innerHTML+="<br />" + tab  +obj.name + ' - ' + n;
	}else{
		debugIE.innerHTML+="<br />" + tab  +obj.nodeName + ' - ' + n;
	}
	//*/
	for (i=0;i<n;i++){
		xul=obj.childNodes[i];

//		if (xul.nodeName!='#text'){debugIE.innerHTML+="<br />" + tab  +xul.nodeName + ' - ' + xul.name;	}

		if (xul.nodeName=='SELECT'){
			if (!show){
				xul.style.visibility='hidden';
				xul.style.display='none';
			}else{
				xul.style.visibility='visible';
				xul.style.display='inline';

			}
		}
		if (xul.childNodes.length) cheppalle2(xul,show,p+1);
	}

}




function cheppalle(obj,testo,p){
	var i=0,n=obj.childNodes.length;
	//var debugIE=document.getElementById('debugIE');
	var tab='';
	if (!p)p=0;
	k=p*4;
	for (;k;k--){
		tab+='&nbsp;';
	}
/*	if (obj.id){
		debugIE.innerHTML+="<br />" + tab +obj.id + ' - ' + n;
	}else if (obj.name){
		debugIE.innerHTML+="<br />" + tab  +obj.name + ' - ' + n;
	}else{
		debugIE.innerHTML+="<br />" + tab  +obj.nodeName + ' - ' + n;
	}*/
	for (i=0;i<n;i++){
		xul=obj.childNodes[i];

//		if (xul.nodeName!='#text'){debugIE.innerHTML+="<br />" + tab  +xul.nodeName + ' - ' + xul.name;	}
		if (xul.childNodes.length) cheppalle(xul,testo,p+1);

		if (xul.nodeName!='#text'){
			xul.style.cssText=testo
		}
	}

}


function findFocus(obj)	{
	var i=1,n=obj.childNodes.length;
	for (;i<n;i+=2){
		xul=obj.childNodes[i];
		if (xul.nodeName=='INPUT'){
			xul.focus();
			break;
		}else if(xul.nodeName!='#text'){
			findFocus(xul);
		}
	}
}

function showElement(nome){
	var obj= document.getElementById(nome);
	obj.style.cssText='display:block;visibility:visible;';
	var i=0,n=obj.childNodes.length;
	findFocus(obj);
}
function nascondiDettagli(sw){
	disableStyle(sw,"#Mostra Dettagli");
}

function disableStyle(sw,titoloStyle){
	//controllo browser
	var ss,i,n;
	if(!document.styleSheets){
		ss = getAllSheets() //Opera
	}else{
		ss = document.styleSheets; //Dom
	}
	if( !ss.length ) {
		alert( 'Il tuo browser non è abilitato a cambiare i fogli di stile CSS' );
		return;
	}
	// disabilita tutti i fogli di stile con un titolo
	// tranne quello passato per argomento alla funzione
	n=ss.length;
/*	for (i=0;i<n;i++){
		ss[i].disabled=1;
	}*/
	for (i=0;i<n;i++){
		/*if (ss[i].title.length==0){
			ss[i].disabled=false;
		}else */if (ss[i].title==titoloStyle){
			if (typeof(sw)=='undefined'){
				ss[i].disabled=!ss[i].disabled;
			}else{
				ss[i].disabled=sw;
			}
		}
	}
}


function switchStyle(titoloStyle){
	//controllo browser
	var ss,i,n;
	var stiliDaMantenere=new Array;
	if(!document.styleSheets){
		ss = getAllSheets();//Opera
	}else{
		ss = document.styleSheets; //Dom
	}
	if( !ss.length ) {
		alert( 'Il tuo browser non è abilitato a cambiare i fogli di stile CSS' );
		return;
	}
//	var a='|';
	// disabilita tutti i fogli di stile con un titolo
	// tranne quello passato per argomento alla funzione
	n=ss.length;
/*	var dbgout=document.getElementById('debugOutput');
	dbgout.innerHTML='Disabilito\n';*/
	for (i=0;i<n;i++){
		if (typeof(ss[i].title)!='undefined' &&  ss[i].title.length>0 && ss[i].title.charAt(0)=='#' &&
			ss[i].disabled==false){
			stiliDaMantenere.push(ss[i].title);
		}
		ss[i].disabled=true;
		//dbgout.innerHTML+=ss[i].title+"\n";
	}
	stiliDaMantenere.push(titoloStyle);

/*	for (i=stiliDaMantenere.length-1;i>-1;i--){
		dbgout.innerHTML+=stiliDaMantenere[i]+"\n"
	}
	dbgout.innerHTML+="Riabilito\n";*/
	var k;
	for (i=0;i<n;i++){
		if (typeof(ss[i].title)=='undefined' ||  ss[i].title.length==0){
			//dbgout.innerHTML+=ss[i].title+"  "+i+"\n";
			ss[i].disabled=false;
		}else{
			for (k=stiliDaMantenere.length-1;k>-1;k--){
				if (ss[i].title==stiliDaMantenere[k]){
					ss[i].disabled=false;
					break;
				}
			}
		}
	}
//	alert(a);
}


function coloraSfondo(obj,color){
	obj.style.backgroundColor=color;
}


function apriPopUp(nome,pagina){
	apriPagina(nome,pagina,'toolbar=no,width=450,height=280,dependents,menubar=no,locationbar=no,scrollbars=yes,resizable');
	return false;
}


function apriPagina(nome,pagina){
	if (typeof(pagina)=='undefined'){
		pagina='';
	}
	var opzioni;
	if (arguments.length>3){
		opzioni=arguments[3];
	}else opzioni='toolbar=no,dependents,locationbar=yes,scrollbars=yes,resizable';
	var w=window.open(pagina,nome,opzioni);
	w.focus();
	return false;
}



function autoTabOnComma(event,obj){

	var a;
	if (event.which) {
		a=event.which;
	}else {
		a=event.keyCode;
	}
	a=String.fromCharCode(a);

	if (a==','){
		var elementi=obj.form.elements;
		var i,n=elementi.length;
		for (i=0;i<n;i++){
			if (obj.name=elementi[i].name){
				obj=elementi[++i];
				break;
			}
		}
		obj.select();
		obj.focus();

		return false;
	}
	return true;
}

/**
 * @param formElement xForm
 * @param string nome la parte iniziale del testo
 * @param mixed	il valore cui in postare la proprietà
 */

function checkAllInForm(xForm,name,value){
	var i,n=xForm.elements.length;
	var nl=0;
	if (name!=null){
		nl=name.length;
	}
//	alert(value);
	for (i=0;i<n;i++){
		if (xForm.elements[i].type=='checkbox'
			&& (name==null || xForm.elements[i].name.substr(0,nl)==name)
			){
			xForm.elements[i].checked=value;
		}
	}
}


function trim(str){
	s = str.replace(/^(\s)*/, '');
	s = s.replace(/(\s)*$/, '');
	return s;
}


/**
 * xObj id form
 * retField id campo di ritorno
 * bottone oggetto che ha scatenato l'evento
 */

function openModalForm(xObj, retField, bottone){
	var obj=document.getElementById(xObj);
//	alert(bottone.id);
//	alert($(bottone).position().top );
//	alert($(bottone).position().top + ' - ' + $(bottone).position().left );
//	alert (obj.id);
	obj.style.display='block';
	obj.style.top=$(bottone).position().top + 'px';
	//Pulisco i campi
	var i,n=obj.elements.length;
	for (i=0;i<n;i++){
		if (obj.elements[i].type=='checkbox' || obj.elements[i].type=='text') {
			obj.elements[i].value='';
		}
	}

	//Il campo (span) dome memorizzerò il nome dell'elemento
	var oggetto=document.getElementById('oggetto');
	//Nascondo l'eventuale form aperta in precedenza
	if (trim(oggetto.innerHTML) && oggetto.innerHTML!=xObj ){
		document.getElementById(oggetto.innerHTML).style.display='none';
	}

	oggetto.innerHTML=xObj;
/*	oggetto=document.getElementById('ritorno');
	oggetto.innerHTML=retField;*/
	obj.campoRitorno.value=retField;
}


/**
 * obj oggetto form
 * action bitmask di cos devi fare
 */
function closeModalForm(obj, action){
	var text='';
	var i,n=obj.elements.length;
	var retVal=false;
//	alert(obj.id);alert(n);
	if (action&2) {
		var rule=$(obj).find('.modalRules')[0];
		//traformare i rules
		var myRe=/\s*([0-9]+)\:(.+?)\s*##/gi
		//alert(rule.innerHTML.indexOf("\r"));
		var a='',A,B=Array();


		var diverr=$(obj).find('div[rel="modalErrors"]')[0];
		diverr.innerHTML='';
		while (A=myRe.exec(rule.innerHTML)){
			B[A[1]]=A[2];
			a += '-> ' + A[1] + ' = ' + A[2] +"#\n";
		}
//		alert(a);//return false;
//		var ret=performCheck(obj, B, diverr);
//		alert(ret);
		if (!performCheck(obj, B, diverr)) {
			return false;
		}
//return false;

		for (i=0;i<n;i++){
			if (obj.elements[i].type!='button' && obj.elements[i].value && 'campoRitorno'!=obj.elements[i].name) {
				text += obj.elements[i].value;
				if (obj.elements[i].type=='checkbox' || obj.elements[i].type=='text') {
					obj.elements[i].value='';
				}
			}
		}
		var ret=document.getElementById(obj.campoRitorno.value);
		//alert (ret);
		if (!ret) alert('Impossibile trovare il campo');
		//alert( ret);
		if (ret.value.match(/^\s*(nessuna|nessuno|no|nope|si|)($|\s+)/i)  ){
				ret.value=text;
		}else{
			ret.value+="\n" + text;
		}
	}
	//alert(text);
	if (action&1) {
		obj.style.display='none';
		retVal=true;
	}
	return retVal;
}//closeModalForm


function hideInfo(pulsante, idInfo){
	obj=$(pulsante);
	prossimoPulsante=obj.next('span');
	prossimoPulsante.show();
	obj.hide();
	$('#' + idInfo).hide();
}


function showInfo(pulsante, idInfo){
	obj=$(pulsante);
	prossimoPulsante=obj.prev('span');
	prossimoPulsante.show();
	obj.hide();
	$('#' + idInfo).show();
}
