var collection = new Array();
var values = new Array();
var xmlLiv = new Array();
var objSelect = new Array();
var objNames = new Array();
var xmlDoc = null;
var tipo ="";
var a0=null;
var ind = 0;


function createSelect(nomeTendina, textOnChange){
	var objDiv=null;
	var obj=null;
	if(document.all && ! document.getElementById()){
		objDiv = eval("document.all.DESTINAZIONI");
	}
	else{
		objDiv = document.getElementById("DESTINAZIONI");
	}
	if(!objDiv){
		alert("DESTINAZIONI : nome del tag div non esistente.");
		return null;
	}
	obj = document.createElement('SELECT');
	obj.setAttribute("id",nomeTendina)
	obj.setAttribute("name",nomeTendina)
	obj.onchange=function(){eval(textOnChange)}
	objDiv.appendChild(obj);
	return obj;
}
function getObj(nome){
	var obj=null;

	// DANIELA Eliminato per fare funzionare IE
	
	//if(document.all && ! document.getElementById()){
	//	obj = eval("document.all."+nome);

	//}
	//else{
		obj = document.getElementById(nome);

	//}
	if(!obj){
		
		return null;
	}
	return obj;

}

function getIndexSelect(tendina){
	for(var i=0;i<objNames.length;i++){
		if(objNames[i]==tendina)
			return i;
	}				
	objNames[objNames.length]=tendina;
	return objNames.length-1;						

}

function loadDest(tendina, nodo, livTend, tipoVg){
	var livGer = getIndexSelect(tendina);
	var selObj=getObj(tendina);
	
	//alert ("	loadDest livGer: " + livGer);

	if(selObj==null){
		var textOnChange ="loadDest('"+tendina+objSelect.length+"', this.options[this.selectedIndex].value";
		if(livTend && livTend!=''){
			var l= livTend*1
			textOnChange+=", "+(l+1)+")"
		}else
			textOnChange+=")"
		selObj = createSelect(tendina,textOnChange);
		if(selObj==null || !selObj.options)
			return false;
	}
	objSelect[livGer] = selObj;

	
    if (nodo && nodo!=''){

		//alert ("	Nodo: " + nodo);
		
		var xmlSelect = null;
		if(livGer>0 && nodo == "-1"){ /* se ho selezionato nessuna preferenza*/
			xmlLiv[livGer]=null;
			return popolaTendina(tendina, tipoVg);
		}
		if(livGer>0)
			xmlSelect = xmlLiv[livGer-1];
		if(xmlSelect!=null){

			var node=xmlSelect.getElementsByTagName(nodo)[0];
			if(node!=null && node.hasChildNodes()){
				for(i=0;i<node.childNodes.length;i++){
					if(node.childNodes[i].nodeType==1){
						for(var h=livGer;h<xmlLiv.length;h++)
							xmlLiv[h]=null;
						return popolaTendina(tendina, tipoVg);
					}
				}
			}
		}
	}

    setXml(tendina, nodo, livTend, tipoVg);
    return true;

}


function loadAllDest(tendina, nodo, livTend){
	var livGer = getIndexSelect(tendina);
	var selObj=getObj(tendina);
	
	//alert ("	loadDest livGer: " + livGer);

	if(selObj==null){
		var textOnChange ="loadDest('"+tendina+objSelect.length+"', this.options[this.selectedIndex].value";
		if(livTend && livTend!=''){
			var l= livTend*1
			textOnChange+=", "+(l+1)+")"
		}else
			textOnChange+=")"
		selObj = createSelect(tendina,textOnChange);
		if(selObj==null || !selObj.options)
			return false;
	}
	objSelect[livGer] = selObj;

	setAllXml(tendina, nodo, livTend);
    if (nodo && nodo!=''){

		//alert ("	Nodo: " + nodo);
		
		var xmlSelect = null;
		//if(livGer>0 && nodo == "-1"){ /* se ho selezionato nessuna preferenza*/
		//	xmlLiv[livGer]=null;
		//	return popolaAllTendina(tendina);
		//}
		if(livGer>0)
			xmlSelect = xmlLiv[livGer];
			return popolaAllTendina(tendina);
		if(xmlSelect!=null){

			var node=xmlSelect.getElementsByTagName(nodo)[0];
			if(node!=null && node.hasChildNodes()){
				for(i=0;i<node.childNodes.length;i++){
					if(node.childNodes[i].nodeType==1){
						for(var h=livGer;h<xmlLiv.length;h++)
							xmlLiv[h]=null;
						return popolaAllTendina(tendina);
					}
				}
			}
		}
	}

    //setAllXml(tendina, nodo, livTend);
    return true;

}

function setAllXml(tendina, nodo, livTend) {
	var livGer = getIndexSelect(tendina);
	var xmlFragment = XmlDocument.create();
	
	if(!nodo || nodo=="")
		nodo=xmlDoc.nodeName;
	xmlFragment.loadXML("<?xml version=\"1.0\" encoding=\"utf-8\"?><"+nodo+"></"+nodo+">");
	var _root = xmlFragment.documentElement;
		var parent = nodo;
		
		var n = null;
		if(nodo==xmlDoc.nodeName)
			n=xmlDoc;
		else
			n=xmlDoc.getElementsByTagName(nodo)[0];
		
		if (nodo != "P")
			searchAllChilds(n, livTend, _root, parent);
	
	xmlLiv[livGer]=xmlFragment;
	//for(var i=livGer+1;i<xmlLiv.length;i++)
	//	xmlLiv[i]=null;
	
    popolaAllTendina(tendina);
    
}


function searchAllChilds(parentNode, livTend , destNode){
	var childs = parentNode.childNodes;
	if (childs.length>0){
		for(var f = 0; f< childs.length; f++){
			var x= childs[f];
			if(x.nodeType==3)
				continue;
			if(livTend && livTend!='' && parseInt(livTend) > parseInt(x.getAttribute("T")))
				continue;
			var e = destNode.ownerDocument.createElement(x.nodeName);
			e.setAttribute("Dl" , x.getAttribute("Dl"));
			e.setAttribute("value", x.getAttribute("value"));
			e.setAttribute("L", x.getAttribute("L"));
			destNode.appendChild(e);
			if(livTend && livTend!='')
				searchAllChilds(x, livTend, e)
		}
	}
}


function setXml(tendina, nodo, livTend, tipoVg) {
	var livGer = getIndexSelect(tendina);
	var xmlFragment = XmlDocument.create();
	if(!nodo || nodo=="")
		nodo=xmlDoc.nodeName;
	xmlFragment.loadXML("<?xml version=\"1.0\" encoding=\"utf-8\"?><"+nodo+"></"+nodo+">");
	var _root = xmlFragment.documentElement;
	
		searchChilds(nodo, livTend, _root)
	
	xmlLiv[livGer]=xmlFragment;
	for(var i=livGer+1;i<xmlLiv.length;i++)
		xmlLiv[i]=null;
	
    popolaTendina(tendina, tipoVg);
    
}

function searchChilds(parentNode, livTend , destNode){
	var n = null;
	if(parentNode==xmlDoc.nodeName)
		n=xmlDoc;
	else
		n=xmlDoc.getElementsByTagName(parentNode)[0];
	for(var f = 0; f< n.childNodes.length; f++){
		var x= n.childNodes[f];
		if(x.nodeType==3)
			continue;
		if(livTend && livTend!='' && livTend!=x.getAttribute("T"))
			continue;
		var e = destNode.ownerDocument.createElement(x.nodeName);
		e.setAttribute("Dl" , x.getAttribute("Dl"));
		e.setAttribute("value", x.getAttribute("value"));
		destNode.appendChild(e);
		if(livTend && livTend!='')
			searchChilds(e.nodeName, livTend, e)
	}
}





function loadLev(n){

	for(var i=0;i<n.childNodes.length;i++){
		var x = n.childNodes[i];
		if(x.nodeType==3)
			continue;
			x.setAttribute("T","1");
			if (n.nodeName == "P000001")
				x.setAttribute("value", x.getAttribute("COD"));
			else
				x.setAttribute("value", x.getAttribute("COD").concat(x.getAttribute("value")));
		
	}
}



function loadColl(n){

	for(var i=0;i<n.childNodes.length;i++){
		var x = n.childNodes[i];
		if(x.nodeType==3)
			continue;
		if (n!=xmlDoc) //se il nodo è un figlio
			x.setAttribute("Pd",n.getAttribute("Dl"));
		else
			x.setAttribute("Pd","");
//		collection[collection.length]=x.getAttribute("Dl");
		
		collection[collection.length]=x;
		values[x.getAttribute("value")]=x; //mappa un nodo ad un certo value
		if(x.hasChildNodes())
			loadColl(x); 
		
	}
}


function setComboArr(formName){
	if(document.forms[formName].keyd.value=="" || document.forms[formName].keyd.value=="null") 
		return true;

	
	var valore = document.forms[formName].keyd.value;
	//alert ('setComboArr');
	var nodes =  xmlDoc.childNodes;
	if(nodes.length>0){
		for(var i = 0;i<nodes.length;i++){
			var el = nodes[i];
			if(el.nodeType==1){	
				if (el.getAttribute('value') == valore) {
						var scelto = el;
						
						if (formName == "form_charter")
							eval ("document.forms['"+formName+"'].destin.value = el.getAttribute('value').substring(1,6)");
						else
							eval ("document.forms['"+formName+"'].apta.value = el.getAttribute('value')");
				}
			}
		}
	}	
}

function setComboAllArr(formName){

	if(document.forms[formName].keydArr.value=="" || document.forms[formName].keydArr.value=="null") 
		return true;
	var valore = document.forms[formName].keydArr.value;
	//alert ('setComboAllArr');
	var nodes =  xmlDoc.childNodes;
	if(nodes.length>0){
		for(var i = 0;i<nodes.length;i++){
			var el = nodes[i];
			if(el.nodeType==1){
				// Nodo con tutte le destinazioni di primo livello
				setComboChArr (el, valore, formName);
			}
		}
	}	
}


function setComboChArr (node, valore, formName){
	var childs = node.childNodes;
	for (var c=0; c<childs.length;c++){
		var ch = childs[c];
		if (ch.nodeType == 1){
			if (ch.getAttribute('value').substring(3,10) == valore) {
					var scelto = ch;
					eval ("document.forms['"+formName+"'].destin.value = ch.getAttribute('value').substring(3,10)");

				return;
			}
			setComboChArr (ch, valore, formName);
		}
	}
}


function setComboPar(formName){

	if(document.forms[formName].keydP.value=="" || document.forms[formName].keydP.value=="null") {
		if ((formName == "form_charter") || (formName == "form_charter_volo"))
			eval ("document.forms['"+formName+"'].descAptPar.value = 'Aeroporti Italiani'");
		return true;
	}
		
	var valore = document.forms[formName].keydP.value;
	
	//alert ('setComboPar');
	var nodes =  xmlDoc.childNodes;
	if(nodes.length>0){
		for(var i = 0;i<nodes.length;i++){
			var el = nodes[i];
			if(el.nodeType==1){	
				if (el.getAttribute('value') == valore) {
						var scelto = el;
						if ((formName == "form_charter") || (formName == "form_charter_volo"))
							eval ("document.forms['"+formName+"'].partenza.value = el.getAttribute('value')");
						else
							eval ("document.forms['"+formName+"'].aptp.value = el.getAttribute('value')");
				}
			}
		}
	}	
}



function setComboDest(formName){
	if((document.forms[formName].keyd.value=="") || (document.forms[formName].keyd.value=="KEYD"))
		return true;
	
	
		
	var valore = document.forms[formName].keyd.value;
	
	var nodo = values[valore];
	var n = xmlDoc.getElementsByTagName(nodo.nodeName)[0];	
	var tree = new Array();
	while(n!=xmlDoc){
		tree[tree.length]=n;
		n=n.parentNode;
	}
	var l;
	for(j=tree.length-1;j>=0;j--){
	
		l=tree[j].getAttribute("T")
		if(j==0 || l!=tree[j-1].getAttribute("T")){
			eval("document.forms['"+formName+"'].liv"+l+".value = tree[j].nodeName");
			eval("document.forms['"+formName+"'].liv"+l+".onchange()");
		}
	}

}
function setHiddenDest(ctrlSelect, formName){
	oS=eval("document.forms['"+formName+"']."+ctrlSelect);
	oT=document.forms[formName].keyd;
    var descScelta = oS.options[oS.selectedIndex].text;
	var scelta = oS.value;
	var livGer = getIndexSelect(ctrlSelect);
	if(scelta =='-1')
		livGer--;
	var xmlSelect = null;
	if(livGer >= 0){
		xmlSelect = xmlLiv[livGer];
		scelta = objSelect[livGer].value;
	}
	if(xmlSelect!=null){
		var node=xmlSelect.getElementsByTagName(scelta)[0];
		if(node!=null){
			oT.value=node.getAttribute("value");
			var s = values[oT.value].getAttribute("Dl");
			if(values[oT.value].getAttribute("Pd") && values[oT.value].getAttribute("Pd")!="")
				s+= " - ("+values[oT.value].getAttribute("Pd")+ ")";
			document.forms[formName].destinazione.value=s;
			eval("document.forms['"+formName+"'].desc"+ctrlSelect+".value = descScelta");
		}
		else{
			oT.value="";
			document.forms[formName].destinazione.value="";
			eval("document.forms['"+formName+"'].desc"+ctrlSelect+".value =''");
			}
	}
	else{
		oT.value="";
		document.forms[formName].destinazione.value="";
		eval("document.forms['"+formName+"'].desc"+ctrlSelect+".value =''");
	}
}



function popolaTendina(tendina, tipoVg){
	var livGer = getIndexSelect(tendina);
	var xmlSelect = xmlLiv[livGer];
	//alert ("popolaTendina 1: " + objNames.length);
	//alert ("popolaTendina objNames: " + objNames);
	for(var i=livGer;i<objNames.length;i++)
		pulisciTendina(objNames[i]);
	if(xmlSelect==null)
		return true;
	var nodes = xmlSelect.documentElement.childNodes;
	var opts = 0;
	//alert ("	Num. nodi 0: " + nodes.length);
	if(nodes.length>0){
		//alert ("Nuova option");
		
		if (tendina == "partenza" && tipoVg == 'OWR')
			objSelect[livGer].options[opts++] = new Option("Seleziona aeroporto di partenza", "-1");
		else if (tendina != "partenza")
			objSelect[livGer].options[opts++] = new Option("Selezione", "-1");
		
		//alert ("	Num. nodi 1: " + nodes.length);
		for(var i = 0;i<nodes.length;i++){
			var el = nodes[i];
			if(el.nodeType==1){	
			// Verificare non regressione
				if ((el.nodeName == "APT") || (el.nodeName.substring(0,1) == "P"))
					objSelect[livGer].options[opts++] = new Option(el.getAttribute('Dl'), el.getAttribute('value'));
				else
					objSelect[livGer].options[opts++] = new Option(el.getAttribute('Dl'), el.nodeName);
				var childs = el.childNodes;
				if(childs.length>0){
					for(var j = 0;j<childs.length;j++){
						var ch = childs[j];
						//alert (ch.nodeName);
						if(ch.nodeType==1){
							objSelect[livGer].options[opts++] = new Option(".    "+ch.getAttribute('Dl'), ch.nodeName);
							objSelect[livGer].options[opts-1].style.color='#004B8C'
						}
						//Risoluzione Anomalia livello tendine 6 - Fabio 18/02/2009
						var childs2 = ch.childNodes;
						if (childs2.length>0) {
							for(var l = 0;l<childs2.length;l++){
								var ch2 = childs2[l];
								if(ch2.nodeType==1){
									objSelect[livGer].options[opts++] = new Option(".     "+ch2.getAttribute('Dl'), ch2.nodeName);
									objSelect[livGer].options[opts-1].style.color='#004B8C'
								}
							}
						}
					}
				}
			}
		}
//		objSelect[livGer].style.display = 'block';
	}
	
	//alert ("popolaTendina 2");
						
}


function popolaAllTendina(tendina){
	var livGer = getIndexSelect(tendina);
	var xmlSelect = xmlLiv[livGer];
	//alert ("popolaTendina 1: " + objNames.length);
	//alert ("popolaTendina objNames: " + objNames);
	for(var i=livGer;i<objNames.length;i++)
		pulisciTendina(objNames[i]);
	if(xmlSelect==null)
		return true;
	var nodes = xmlSelect.documentElement.childNodes;
	var opts = 0;
	//alert ("	Num. nodi 0: " + nodes.length);
	if(nodes.length>0){
		//alert ("Nuova option");
		//FABIO
		//objSelect[livGer].options[ind++] = new Option("qualsiasi destinazione", "D000001");
				
		for(var i = 0;i<nodes.length;i++){
			
			var el = nodes[i];
			if(el.nodeType==1){
				if ((el.nodeName == "APT") || (el.nodeName.substring(0,1) == "P"))
					objSelect[livGer].options[ind++] = new Option(el.getAttribute('Dl'), el.getAttribute('value'));
				else 
					objSelect[livGer].options[ind++] = new Option(el.getAttribute('Dl'), el.nodeName);
				
				loadAllChild (el, objSelect, livGer);

			}
		}
		ind = 0;
	}
						
}


function loadAllChild (node, objSelect, livGer) {
	var childs = node.childNodes;
	if(childs.length>0){
		for(var j = 0;j<childs.length;j++){
			var ch = childs[j];
			if(ch.nodeType==1){
				if (ch.getAttribute('L')=='3'){
					objSelect[livGer].options[ind++] = new Option(".   "+ch.getAttribute('Dl'), ch.nodeName);
				} else {
					if (ch.getAttribute('L')=='4'){
						objSelect[livGer].options[ind++] = new Option(".    "+ch.getAttribute('Dl'), ch.nodeName);
					} else if (ch.getAttribute('L')=='2'){
						objSelect[livGer].options[ind++] = new Option(".  "+ch.getAttribute('Dl'), ch.nodeName);
					} else if (ch.getAttribute('L')=='5'){
						objSelect[livGer].options[ind++] = new Option(".     "+ch.getAttribute('Dl'), ch.nodeName);
					} else if (ch.getAttribute('L')=='6'){
						objSelect[livGer].options[ind++] = new Option(".      "+ch.getAttribute('Dl'), ch.nodeName);
					} //else{
						//objSelect[livGer].options[ind++] = new Option(".\240\240"+ch.getAttribute('Dl'), ch.nodeName);
					//}
				}
				
				objSelect[livGer].options[ind-1].style.color='#004B8C'
			}
			loadAllChild (ch, objSelect, livGer);
		}
	}
}

function loadChild (node, objSelect, livGer , opts){
	var childs = node.childNodes;
	if(childs.length>0){
		for(var j = 0;j<childs.length;j++){
			var ch = childs[j];
			if(ch.nodeType==1){
				objSelect[livGer].options[opts++] = new Option(".    "+ch.getAttribute('Dl'), ch.nodeName);
				objSelect[livGer].options[opts-1].style.color='#004B8C'
			}
		}
	}
}
    
function pulisciTendina(tendina){
	var obj = getObj(tendina);
	//alert ("Pulisci tendina");
	if(!obj || !obj.options){
		alert(tendina + ": tendina non caricata correttamente.");
		return false;
	}
	obj.options.length=0;
	//obj.style.display = 'none';
	return true;
	
}


function setHiddenKeyd(ctrlSelect, formName){
	
	oS=eval("document.forms['"+formName+"']."+ctrlSelect);
	oT=document.forms[formName].keyd;
	
	var descScelta = oS.options[oS.selectedIndex].text;
	var scelta = oS.value;
	var livGer = getIndexSelect(ctrlSelect);
	if(scelta =='-1')
		livGer--;
	var xmlSelect = null;
	if(livGer >= 0){
		//xmlSelect = xmlLiv[livGer];
		
		scelta = objSelect[livGer].value;
		oT.value=scelta;
	}
	
	document.forms[formName].apta.value = scelta;
	document.forms[formName].destinazione.value = descScelta;
}


function setHiddenKeydP(ctrlSelect, formName){
	oS=eval("document.forms['"+formName+"']."+ctrlSelect);
	oT=document.forms[formName].keydP;
	var descScelta = oS.options[oS.selectedIndex].text;
	var scelta = oS.value;
	var livGer = getIndexSelect(ctrlSelect);
	if(scelta =='-1')
		livGer--;
	var xmlSelect = null;
	if(livGer >= 0){
		//xmlSelect = xmlLiv[livGer];
		
		scelta = objSelect[livGer].value;
		oT.value=scelta;
	}
	
	if ((formName == "form_charter") || (formName == "form_charter_volo")) {
	 	document.forms[formName].partenza.value = scelta;
		document.forms[formName].descAptPar.value = descScelta;
		if (scelta != "-1")
			setHiddenKeydArr('destin',formName);
		else
			document.forms[formName].keydP.value = "";
	}
	else {
		document.forms[formName].aptp.value = scelta;
		document.forms[formName].descAptPar.value = descScelta;
	}
}


function setHiddenKeydArr(ctrlSelect, formName){
	oS=eval("document.forms['"+formName+"']."+ctrlSelect);
	oT=document.forms[formName].keydArr;
	var scelta = oS.value;
	
	var descScelta = oS.options[oS.selectedIndex].text;
	var scelta = oS.value;
	var livGer = getIndexSelect(ctrlSelect);
	var stringa = 'D';
	if(scelta =='-1')
		livGer--;
	var xmlSelect = null;
	if(livGer >= 0){
		//xmlSelect = xmlLiv[livGer];
		
		scelta = objSelect[livGer].value;
		oT.value=scelta;
	}
	
	
	document.forms[formName].keydArr.value = scelta;
	document.forms[formName].destin.value = scelta;
	document.forms[formName].keydNameArr.value = descScelta;
	 		
	//document.forms[formName].apta.value = scelta;
	//document.forms[formName].destinazione.value = descScelta;	
	 	
	 	

}

function setHiddenKeydJOL(ctrlSelect, formName){
	
	oS=eval("document.forms['"+formName+"']."+ctrlSelect);
	oT=document.forms[formName].keyd;
	
	var descScelta = oS.options[oS.selectedIndex].text;
	var scelta = oS.value;
	var livGer = getIndexSelect(ctrlSelect);
	if(scelta =='-1')
		livGer--;
	var xmlSelect = null;
	if(livGer >= 0){
		//xmlSelect = xmlLiv[livGer];
		
		scelta = objSelect[livGer].value;
		oT.value=scelta;
	}
	
	//var formName = 'RqDatiCHHOForm';
	document.RqDatiCHHOForm.keydh.value = scelta;
	document.forms[formName].keydJ.value = scelta.substring(1);
	document.forms[formName].descJ.value = descScelta;
	//alert (document.forms[formName].keydJ.value);
	//document.forms[formName].destinazione.value = descScelta;
}





