//Sostituire TUTTI Gli XnX con il campo corrispondente
var linguaLoc="ITA"
	//legge il file una linea per volta
// <-----> readNextLine() <-----> //
var eleAgArray=eleAg.split("#");
var actCharInd=0

function readNextLine() 
{
	maxInd=eleAgArray.length
	if (actCharInd>=maxInd)
	{
		return "@EOF";
	}
	else
	{
		retLine=eleAgArray[actCharInd];
		actCharInd++;
		return retLine;
	}
}
// <-----> X0XType(nome, arX1X, cod) <-----> //
	//creazione dei datatypes
	function X0XType(nome, arX1X, cod) 
	{
		this.nome = nome;
		this.X1X = arX1X;
		this.codice = cod;
	}
	
	function X1XType(nome, arX2X, cod) 
	{
		this.nome = nome
		this.X2X = arX2X
		this.codice = cod
	}
	
	function X2XType(nome, arX3X, cod) 
	{
		this.nome = nome
		this.X3X = arX3X
		this.codice = cod
	}
	
	function X3XType(nome, cod)
	{
		this.nome =nome
		this.codice =cod
	}

var stars="          "
var X3XDummy=new X3XType(stars,"0")
var X2XDummy=new X2XType(stars,new Array(X3XDummy),"0")
var X1XDummy=new X1XType(stars,new Array(X2XDummy),"0")
var X0XDummy=new X0XType(stars,new Array(X1XDummy),"0")
//inizializza l'albero
function initGlobTree ()  
{
	actLin=readNextLine().split(",")
	var X0X = new Array()
	indX0X = 0
	while (actLin[0]=="N" && actLin[0]!="@EOF")
	{
		actX0X = actLin[1];
		NCod = actLin[2];
		actLin = readNextLine().split(",");
		var X1X = new Array()
		indX1X = 0
		X1X[indX1X]=X1XDummy
		indX1X++
		while (actLin[0]=="R" && actLin[0]!="@EOF")
		{
			actReg=actLin[1]
			RCod  =actLin[2]
			actLin =readNextLine().split(",")
			var X2X = new Array()
			indX2X = 0
			X2X[indX2X]=X2XDummy
			indX2X++
			while (actLin[0]=="P" && actLin[0]!="@EOF")
			{
				actPro = actLin[1]
				PCod = actLin[2]
				actLin = readNextLine().split(",")
				var X3X = new Array()
				indX3X = 0
				X3X[indX3X]=X3XDummy
				indX3X++
				while (actLin[0]=="Z" && actLin[0]!="@EOF")
				{
					actZon=actLin[1]
					ZCod  =actLin[2]
					actLin =readNextLine().split(",")
					X3X[indX3X]=new X3XType(actZon,ZCod)
					indX3X++
				}
				X2X[indX2X]=new X2XType(actPro,X3X,PCod)
				indX2X++
			}
			X1X[indX1X]=new X1XType(actReg,X2X,RCod)
			indX1X++
		}
		X0X[indX0X]=new X0XType(actX0X,X1X,NCod)
		indX0X++
	}
	return X0X
}

var linVuota="__________________"
var codiciX0X=new Array()

function updateX0X(ind)
{
	tempX0X = X0X
	tot = tempX0X.length;
	lst = document.form1.X0X.options.length
	for (i = lst; i > 0; i--)
	{
		document.form1.X0X.options[i] = null;
	}
	if (ind==0)
	{
		document.form1.X0X.options[0] = new Option(stars);
		document.form1.X0X.options[0].selected = true;
	}
	else
	{
		for (i = 0; i < tot; i++)
		{
			document.form1.X0X.options[i] = new Option(tempX0X[i].nome);
			codiciX0X[i]=tempX0X[i].codice
		}
		document.form1.X0X.options[0].selected = true;
	}
}

var codiciX1X=new Array()
function updateX1X(ind)
{
	indX0X = document.form1.X0X.selectedIndex
	tempX1X = X0X[indX0X].X1X
	tot = tempX1X.length;
	lst = document.form1.X1X.options.length
	for (i = lst; i > 0; i--)
	{
		document.form1.X1X.options[i] = null;
	}
	if (ind==0)
	{
		document.form1.X1X.options[0] = new Option(stars);
		document.form1.X1X.options[0].selected = true;
	}
	else
	{
		for (i = 0; i < tot; i++)
		{
			document.form1.X1X.options[i] = new Option(tempX1X[i].nome);
			document.form1.X1X.options[i].value = tempX1X[i].nome;
			codiciX1X[i]=tempX1X[i].codice
		}
		document.form1.X1X.options[0].selected = true;
	}
}

var codiciX2X = new Array()

function updateX2X(ind)
{
	indX0X=document.form1.X0X.selectedIndex
	indX1X=document.form1.X1X.selectedIndex
	tempX2X=X0X[indX0X].X1X[indX1X].X2X;
	tot = tempX2X.length;
	lst = document.form1.X2X.options.length
	for (i = lst; i > 0; i--)
	{
		document.form1.X2X.options[i] = null;
	}
	if (ind==0)
	{
		document.form1.X2X.options[0] = new Option(stars);
		document.form1.X2X.options[0].selected = true;
	}
	else
	{
		for (i = 0; i < tot; i++)
		{
			document.form1.X2X.options[i] = new Option(tempX2X[i].nome);
			codiciX2X[i]=tempX2X[i].codice
		}
		document.form1.X2X.options[0].selected = true;
	}
}

var codiciX3X=new Array()

function updateX3X(ind)
{
	indX0X=document.form1.X0X.selectedIndex
	indX1X=document.form1.X1X.selectedIndex
	indX2X=document.form1.X2X.selectedIndex
	tempX3X=X0X[indX0X].X1X[indX1X].X2X[indX2X].X3X;
	tot = tempX3X.length;
	lst = document.form1.X3X.options.length
	for (i = lst; i > 0; i--)
	{
		document.form1.X3X.options[i] = null;
	}
	if (ind==0)
	{
		document.form1.X3X.options[0] = new Option(stars);
		document.form1.X3X.options[0].selected = true;
	}
	else
	{
		for (i = 0; i < tot; i++)
		{
			document.form1.X3X.options[i] = new Option(tempX3X[i].nome);					codiciX3X[i]=tempX3X[i].codice
		}
		document.form1.X3X.options[0].selected = true;
	}
}

function changeX0X()
{
	updateX1X(1)
	updateX2X(1)
	updateX3X(1)
}

function changeX1X()
{
	updateX2X(1)
	updateX3X(1)
}

function changeX2X()
{
	updateX3X(1)
}

var X0X=initGlobTree()

function initSelf()
{
	updateX0X(1)
	changeX0X()
}