//03-11-2009
//AJAX PAGE

function newXMLHttpRequest(){
var xmlreq = false;

//Controllo il tipo di oggetto XMLHttpRequest da utilizzare
if(window.XMLHttpRequest){
//Per browser non Microsoft
xmlreq = new XMLHttpRequest();
}else if(window.ActiveXObject){
//Cerco di creare l'oggetto via MS ActiveX
try{
//Nuove versioni per browser IE
xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e1){ //Errore riscontrato durante la creazione dell'oggetto
try{
//Precedenti versioni per browser IE
xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e2){ //Nuovo errore durante la creazione dell'oggetto
xmlreq = false;
}
}
}
//Restituisco l'eventuale oggetto XMLHttpRequest
return xmlreq;
}

//-----------ajaxpagediv()
//Method GEt or POST

ajaxpageonclick

function ajaxpagediv(url, containerid,method,querystring){
ajaxpage(url, containerid,method,querystring,"div");
}

function ajaxpageonclick(url, containerid,method,querystring){
ajaxpage(url, containerid,method,querystring,"click");
}

function ajaxpage(url, containerid,method,querystring,action){

var page_request = newXMLHttpRequest();
var bGo =  true;

    /*alert(url);
	alert(containerid);
	alert(querystring);
	*/
	if(action=="div")
	{
		page_request.onreadystatechange=function(){
		loadpageDiv(page_request, containerid, bGo)
		}
	}else if (action=="click")
	{
		page_request.onreadystatechange=function(){
		loadpageClick(page_request, containerid, bGo)
		}
	}
	
	if (method == 'POST')
	{
	
	page_request.open(method, url, true)
	page_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=UTF-8;");
	
	page_request.send(querystring);
	}
	else if (method == 'GET')
	{
		if(querystring != null && querystring != '')
			querystring = '?' + querystring;
		else
			querystring = '';			
		page_request.open(method, url+querystring, true)
		page_request.send(null);
	}else
		alert("Method errors");
	
}

function loadpageDiv(page_request, containerid , bGo){
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
	{
	//alert(page_request.responseText);
	if(containerid != null) document.getElementById(containerid).innerHTML=page_request.responseText;

	}	
}

function loadpageClick(page_request, containerid , bGo){
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
	{
	//alert(page_request.responseText);
	if (page_request.responseText != '') 
		{
		//alert('ko');
		document.getElementById(containerid+'_ko').onclick();
		}
		else
			{
			//alert('ok');
			document.getElementById(containerid+'_ok').onclick();
			}
	}	
}



//-----------AJAXPAGECOMBO()
function ajaxpagecombo(url,idSelectSend,idSelectReceive,extraquerystring){

//Recupero i dati da inviare
var mainSelection = document.getElementById(idSelectSend);

document.getElementById(idSelectReceive).disabled =  true;

//alert(mainSelection.options[mainSelection.selectedIndex].value);
if(mainSelection.options[mainSelection.selectedIndex].value != '')
{

	//Creo un nuovo oggetto XMLHTTPRequest
	var req = newXMLHttpRequest();
	
	//Invio la richiesta
	if(url=='') url='include/gestioneselect.asp';
	else url='yutool/include/' + url +'.asp'
	
	
	req.open("POST", url, true);
	req.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=UTF-8;");
	
	//Invio i dati POST
	if(extraquerystring != null && extraquerystring!= '')
		extraquerystring = '&' + extraquerystring;
	else
		extraquerystring = '';	
		//alert("key=" + mainSelection.options[mainSelection.selectedIndex].value + extraquerystring);
	req.send("key=" + mainSelection.options[mainSelection.selectedIndex].value + extraquerystring);
	
	//Gestore dell'evoluzione dello stato dell'oggetto req
	req.onreadystatechange = handleResponse(req, updateSubSelection,idSelectReceive);
}//if(mainSelection.options[mainSelection.selectedIndex].value != '')
else
{
var receiveSelection = document.getElementById(idSelectReceive);
//Svuoto la secondo SELECT

for (var i = receiveSelection.length; i >= 1; i--)
	{receiveSelection.remove(i);}

	receiveSelection.onchange();
	receiveSelection.disabled=true;
}
}


/*
* Ritorna una funzione per la gestione dello stato dell'oggetto req.
* Ed infine a stato finale raggiunto, invia la risposta XML alla funzione che dovra' gestire il tutto.
* reg = Istanza XMLHTTPRequest
* XMLHandler = nome della funzione a cui passare il risultato XML da gestire
*/
function handleResponse(req, XMLHandler,idThis){
return function(){
//Controllo se l'oggetto req ha raggiunto lo stato finale
if(req.readyState == 4){
//Inoltre accertiamoci di aver ottenuto il messaggio 200 dal server,
if (req.status == 200){
//A questo punto richiamo la funzione che gestira' il risultato XML
XMLHandler(req.responseXML,idThis);
}else{
alert("Errore HTTP: " + req.status);
}
}
}
}

/*
* Popolo la seconda SELECT
* XMLResult = Il risultato XML prodotto da handleResponse
*/
function updateSubSelection(XMLResult,idThis){
//Gestisco il documento XML ricevuto e popolo la seconda SELECT
//alert(XMLResult);
var categoria = XMLResult.getElementsByTagName('categoria');



//Recupero la seconda SELECT
var subSelection = document.getElementById(idThis);

//Svuoto la secondo SELECT
for (var i = subSelection.length - 1; i >= 0; i--)
subSelection.remove(i);


//Scorro gli elementi
for (var i = 0; i < categoria.length; i++){
//Recupero i vari elementi singoli
var item = categoria[i];

//Creo il nuovo elemento OPTION da aggiungere nella seconda SELECT
var NewOpt = document.createElement('option');
NewOpt.value = item.getAttribute("value");
NewOpt.text = item.firstChild.nodeValue;


//Popolo la seconda SELECT
try{

subSelection.add(NewOpt, null); //Metodo Standard, non funziona con IE

}catch(e){
subSelection.add(NewOpt); // Funziona solo con IE
}
}

document.getElementById(idThis).disabled = false;
document.getElementById(idThis).onchange();
}




