//****************************************************************************
//
//  Tecnologia Luna - FrameWork AJAX sviluppato e distribuito da Luca Vignali
//  Utilizzare e redistribuire questo codice secondo i Termini e le
//  condizioni riportate sul sito www.lunajs.com.
//	Tutti i diritti sono riservati
//  Info da php : helpluna(); o http://www.lunajs.com
//
//****************************************************************************

//********** CONFIGURAZIONE ************//
var attendereCaricamento = true; // settare su true se si vuole bloccare le richieste fino a quando i dati non sono arrivati a destinazione con successo
var id_caricamento_default = "altdx"; // nome dell'elemento di default dove far comparire il testo del caricamento
var html_caricamento_default = "Caricamento..."; // il codice html da inserire nell'elemento di default o in quello indicato nella funzione settaCaricamento()
var segnala_caricamento = true; // se impostato su true, ogni chiamata  luna() seguirà l'introduzione del codice HTML del loading nell' elemento indicato
//********** FINE CONFIGURAZIONE *******//
/*
function settaCaricamento(id,html) {
	if (segnala_caricamento) {
		id = (id)?id:id_caricamento_default;
		html = (html)?html:html_caricamento_default;
		$update(id,html);
	}
};
function fineCaricamento(id,html) {
	if (segnala_caricamento) {
		id = (id)?id:id_caricamento_default;
		html = (html)?html:html_caricamento_default;
		$update(id,"");
	}
};

var RichiestaLuna = null;
function lunaREQ(func) {
	var xmlhttp = null;
	try {
		xmlhttp = new XMLHttpRequest();
	} catch(e) {
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	xmlhttp.onreadystatechange = func;
	return xmlhttp;
}

function alcambiamento() {
	if (RichiestaLuna.readyState == 4 && RichiestaLuna.status == 200) {
		var XMLdoc = RichiestaLuna.responseXML;
		var el = XMLdoc.getElementsByTagName("data");
		var attributo = "";
		var valore = "";
		var tmp_el = "";
		var cont=0;
		var cachereq='';

		for(var i=0;i<el.length;i++) {
			attributo = el[i].getAttribute("targ");
			tmp_el = $(attributo);



			/******************************************************************************
			Se ci sono pagine e/o richieste più grandi di 4k, firefox tronca il risultato, suddividendolo in più
			childNodes da 4k l'uno.
			Quindi, controllo se un nodo ha un fratello ed eventualmente lo aggiungo alla cache di scrittura.
			Il primo blocco di testo funziona per richieste fino a 8k, il secondo dovrebbe andare per ogni request
			ma è sperimentale.
			******************************************************************************/

			/*
			//CODICE STATICO PER REQ FINO A 8K
			if((el[i].childNodes[0].nextSibling)!=null){
			//alert(el[i].childNodes[0].nextSibling);
			tmp_el.innerHTML = decoding_s(el[i].childNodes[0].nodeValue)+decoding_s(el[i].childNodes[1].nodeValue);
			}else{
			//alert(el[i].childNodes[0].nextSibling);
			tmp_el.innerHTML = decoding_s(el[i].childNodes[0].nodeValue);
			}
			* /

			//CODICE DINAMICO PER REQ IDEALMENTE INFINITE
			cachereq=cachereq+(decoding_s(el[i].childNodes[cont].nodeValue))
			while ((el[i].childNodes[cont].nextSibling)!=null){
				cachereq=cachereq+(decoding_s(el[i].childNodes[cont+1].nodeValue));
				cont++;
			};
			tmp_el.innerHTML =cachereq;


		}

		// ricerca delle richieste  valutative
		ele = XMLdoc.getElementsByTagName("ev");
		for(var j=0;j<ele.length;j++) {
			evalut = decoding_s(ele[j].childNodes[0].nodeValue);
			eval(evalut);
		}
		// reset della richiesta
		RichiestaLuna = null;
		fineCaricamento();
	}
};
function encoding_a(t) {
	t = encodeURI(t);
	t = t.replace(/&/g, "%26");
	return t;
}
function decoding_a(t) {
	return decodeURI(t);
}
function decoding_s(t) {
	return unescape(t);
}

function $(id_elemento) {
	var elemento;
	if(document.getElementById){
		elemento = document.getElementById(id_elemento);
	} else if(document.all) {
		elemento = document.all[id_elemento];

	} else {
		alert("metodo non valido");
		return false;
	}
	return elemento;
};
$update = function(el,html,input) {
	if(input) {
		$(el).value = html;
	} else {
		$(el).innerHTML = html;
	}
	return;
}
function $S(id_elemento) {
	return $(id_elemento).style;
}
function $nascondi(id_elemento,auto) {
	if (auto) {
		if($S(id_elemento)['display']=="none") {
			$S(id_elemento)['display']="block";
		} else {
			$S(id_elemento)['display']="none";
		}
	} else {
		$S(id_elemento)['display']="none";
	}
	return;
}
function $visualizza(id_elemento,auto) {
	if (auto) {
		if($S(id_elemento)['display']=="none") {
			$S(id_elemento)['display']="block";
		} else {
			$S(id_elemento)['display']="none";
		}
	} else {
		$S(id_elemento)['display']="block";
	}
	return;
}


function $abilita(id_elemento,auto) {
	if (auto) {
		if($(id_elemento).dislabed) {
			$(id_elemento).dislabed = false;
		} else {
			$(id_elemento).dislabed = true;
		}
	} else {
		$(id_elemento).dislabed = false;
	}
	return;
}
function $disabilita(id_elemento,auto) {
	if (auto) {
		if($(id_elemento).dislabed) {
			$(id_elemento).dislabed = false;
		} else {
			$(id_elemento).dislabed = true;
		}
	} else {
		$(id_elemento).dislabed = true;
	}
	return;
}
function $HTML(id_elemento) {
	return $(id_elemento).innerHTML;
}


function ckform(id_form) {
	var fr = $(id_form);
	var ritorno = "";
	// caso del form
	if (fr.tagName == "FORM") {
		for(var i=0;i<fr.length;i++) {
			selObj = fr[i];
			//***********
			if (selObj.type == "text") {
				ritorno += selObj.name+"="+encoding_a(selObj.value)+"&";
			} else if (selObj.type == "textarea") {
				ritorno += selObj.name+"="+encoding_a(selObj.value)+"&";
			} else if (selObj.type == "hidden") {
				ritorno += selObj.name+"="+encoding_a(selObj.value)+"&";
			} else if (selObj.type == "password") {
				ritorno += selObj.name+"="+encoding_a(selObj.value)+"&";
			} else if(selObj.type == "select-one") {
				ritorno += selObj.name+"="+encoding_a(selObj.options[selObj.selectedIndex].value)+"<&>";
			} else if(selObj.type == "select-multiple") {
				//****
				ritorno += selObj.name+"=";
				for (var j = 0; j < selObj.options.length; j++) {
					if (selObj.options[j].selected) {

						ritorno += encoding_a(selObj.options[j].value)+"|";
					}
				}
				ritorno +="&";
				//*****

			} else if(selObj.type == "radio" && selObj.checked) {
				ritorno += selObj.name+"="+encoding_a(selObj.value)+"&";
			} else if(selObj.type == "checkbox" && selObj.checked) {
				ritorno += selObj.name+"="+encoding_a(selObj.value)+"&";
			}
			//-------------
		}
	} else if((fr.type == "text")||(fr.type == "select-one")||(fr.type == "select-multiple")||(fr.type == "radio")||(fr.type == "textarea")||(fr.type == "hidden")||(fr.type == "checkbox")) {
		ritorno = recupera_dati(id_form);
	} else {
		ritorno =id_form+"="+encoding_a(fr.innerHTML)+"&";
	}

	return ritorno;

}

function recupera_dati(id) {
	return $(id).name+"="+encoding_a($(id).value);

}
function $L(el) {
	return $(el).length;
}
function $T(el,r,c,html) {
	if(html) {
		return $(el).rows[r].cells[c].innerHTML;
	} else {
		return $(el).rows[r].cells[c];
	}
}
function $C(classe) {
	var all = document.all ? document.all : document.getElementsByTagName('*');
	var elementi = new Array();
	for (var e = 0; e < all.length; e++)
	if (all[e].className == classe)
	elementi[elementi.length] = all[e];
	return elementi;
}
function luna(url,dati,cache) {
	if (RichiestaLuna && attendereCaricamento) {
		// non succede nulla
	} else {
		// se la proprietà segnala_caricamento ì true setta il caricamento
		settaCaricamento();
		RichiestaLuna = lunaREQ(alcambiamento);
		if(dati) {
			var datiR = url+ckform(dati);
			if (cache) {
				datiR = datiR+"&nocache="+Math.random();
			}
		} else {
			var datiR = url;
		}
		RichiestaLuna.open("GET",datiR);
		RichiestaLuna.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
		RichiestaLuna.send(null);
	}
}

//funzione originale (non usata o usata poco)
function $SEO() {
	var a = document.getElementsByTagName("a");
	for (var i=0;i<a.length;i++) {
		var tmpa = a[i].rel.split(':');
		if(tmpa[0] == "luna"){
			tmpa[0] = "javascript";
			tmpa = tmpa.join(':');
			a[i].onmouseout="window.status=null";
			a[i].onmouseover="window.status='"+a[i].href+"'";
			a[i].href = tmpa;
			a[i].onclick='return false';
		}
	}
}
*/
//Funzione Modificata
function $SEOM() {
	var a = document.getElementsByTagName("a");
	//alert("inizio il parsing");
	//alert("lunghezza di a:"+a.length);
	for (var i=0;i<a.length;i++) {
		var tmpa = a[i].rel.split(':');
		//cambia menu
		if(tmpa[0] == "cm"){
			//alert("trovata cp");
			tmpa[0] = "javascript";
			tmpa = tmpa.join(':');
			a[i].href = tmpa;
			a[i].onMouseOut="window.status=null";
			a[i].onMouseOver="window.status=null";
			//a[i].onclick='return false';   //da problemi con opera
		}else{
			//cambia pagina
			if(tmpa[0] == "cp"){
				//alert("trovata cp");
				tmpa[0] = "javascript";
				tmpa = tmpa.join(':');
				a[i].href = tmpa;
				a[i].onMouseOut="window.status=null";
				a[i].onMouseOver="window.status=null";
				//a[i].onclick='return false';   //da problemi con opera
			}
		}
	}
}
/*
function $V(ele) {
	var el = $(ele);
	if (el.type=="select-one") {
		return el.options[el.selectedIndex].value;
	} else if (el.type=="textarea" || el.type=="hidden" || el.type=="password"|| el.type=="text") {
		return el.value;
	}  else if (el.type=="radio" && el.checked) {
		return el.value;
	} else if (el.type=="checkbox" && el.checked) {
		return el.value;
	} else {
		return el.innerHTML;
	}
}
function $parent(el) {
	return el.parentNode;
}
*/

