/*
	Gestisce l'evento EXTSERVICES toolMode=1080
*/
  

	/*******************************************************
 	* Definisce i parametri per l'operazione ext_services *
 	*******************************************************/



/**********************************************************************************************************
 *	Controllo sull'attivazione servizi:								  *
 *	Query-->Controlla se nel layer 'layer_campo_controllo' il campo 'nome_campo_controllo'		  *
 *	ha il valore 'val_campo' (array che specifica i valori di attivazione dei singoli servizi)	  *
 *	Se la query è ok il servizio risulta attivo --> un servizio attivo compare nella combo 		  *
 *													  *
 **********************************************************************************************************/
 
/*
	è il layer su cui si vuole fare il controllo
	Valorizzare a mano
*/
var layer_campo_controllo=2;

/*
	è il nome del campo su cui si vuole fare il controllo
	ex campo ISTAT
	Valorizzare a mano
*/
var nome_campo_controllo="SITA.TAB_COMUNI.ISTAT";

/*
	memorizza i valori del nome_campo_controllo su cui si vuole fare il controllo
	inizia dal valore 0, se presente il valore val_campo[0]---> attiva servizio 0
	Valorizzare a mano
*/
var val_campo = new Array();
val_campo[0]="001";
//val_campo[1]="004";
//val_campo[2]="001";
//val_campo[3]="001";
//val_campo[4]="001";
//val_campo[5]="001";
//val_campo[6]="001";

/*
	l'url dei servizi con i parametri richiesti, i valori vengono inseriti da una procedura
	Valorizzare a mano	 
*/

var services = new Array();
services[0]="http://testaimsvip.reteunitaria.piemonte.it:18070/website/BDUPRO/parvar.htm?";
//services[1]="http://www.repubblica.it?";
//services[2]="http://www.tiscali.it?";
//services[3]="http://www.csi.it?"
//services[4]="http://www.regione.piemonte.it?"
//services[5]="http://csiun011.csi.it:18060/GEIM/getImageQuery.jsp?OP=Q&host=lbaims2.reteunitaria.piemonte.it&servicename=SitiContaminati&US=&PW=&TP=false&UP=false&IT=true&VS=true&LV=ALL&w=612&h=372&id=5&cq=SITA.COMUNI.ISTAT&";
//services[6]="http://csiun011.csi.it:18060/GEIM/getImageQuery.jsp?OP=Q&host=lbaims.reteunitaria.piemonte.it&servicename=VIAComunale&US=&PW=&TP=false&UP=false&IT=true&VS=true&LV=ALL&w=612&h=372&id=10&cq=SITA.COMUNI.ISTAT&";

/*
	l'url dei servizi 
*/

var url = new Array();


/*
	descrizione dei servizi
	Valorizzare a mano
*/
var desc_services = new Array();
desc_services[0]="Accesso ai Pareri sulle Varianti Parziali";
//desc_services[1]="Informazioni";
//desc_services[2]="Mail";
//desc_services[3]="Azienda";
//desc_services[4]="Regione";
//desc_services[5]="Servizio csi";
//desc_services[6]="Secondo servizio csi";
/*
       abilitazioni servizi, true/false creato da una procedura
       il servizio i-esimo è attivo se :
       		abilita_servizio[i]==valore recuperato dalla query ()
       abilita_servizio 
       abilita_servizio=[i]=true // l'i-esimo servizio è al momento attivo
       Valorizzare a mano=0=non abilitato
       
*/
var abilita_servizio = new Array();
abilita_servizio[0]=0;
//abilita_servizio[1]=0;
//abilita_servizio[2]=0;
//abilita_servizio[3]=0;
//abilita_servizio[4]=0;
//abilita_servizio[5]=0;
//abilita_servizio[6]=0;

/*
       parametri servizi, elenca i parametri, per ogni servizio, che devono essere passati
       nella url del servizio 
       Valorizzare a mano
*/
var parametri_servizio = new Array();
parametri_servizio[0]="SITA.TAB_COMUNI.ISTAT|SITA.TAB_COMUNI.TOPONIMO";
//parametri_servizio[1]="SITA.TAB_AUTOSTRADE.AUTO|SITA.TAB_AUTOSTRADE.NOME";
//parametri_servizio[2]="URBA.AREA_NORM.SIGLA";
//parametri_servizio[3]="SITA.TAB_COMUNI.ISTAT|SITA.TAB_COMUNI.TOPONIMO";
//parametri_servizio[4]="URBA.AREA_NORM.SIGLA";
//parametri_servizio[5]="SITA.TAB_COMUNI.ISTAT";
//parametri_servizio[6]="SITA.TAB_COMUNI.ISTAT";

/*
	specifica il nome del parametro da mettere nell'url, 
	segue la stessa struttura dell'array parametri_servizio
*/
var nomeurl_parametro = new Array();
nomeurl_parametro[0]="ISTAT|TOPONIMO";
//nomeurl_parametro[1]="ID_AUTOSTRADE|NOME_AUTOSTRADE";
//nomeurl_parametro[2]="SIGLA";
//nomeurl_parametro[3]="ISTAT|TOPONIMO";
//nomeurl_parametro[4]="SIGLA";
//nomeurl_parametro[5]="vq";
//nomeurl_parametro[6]="vq";

/*
	elenco dei layer da interrogare in cui sono presenti i valori dei parametri 
	Valorizzare a mano
*/
var layer_parametri=new Array();
layer_parametri[0]=2;
//layer_parametri[1]=9;
//layer_parametri[2]=42;

/*
       valori parametri servizi, elenca i valori dei parametri, per ogni servizio, che devono essere passati
       nella url del servizio 
*/
var val_parametri_servizio = new Array();

var index=0;  //è l'indice dell'array delle risposte
var index1=0; //è l'indice per scorrere layer_parametri
var replyArray=new Array();//array delle risposte
var risposta_completa="";
query_controllo="";//contiene la risposta della query di copntrollo
var mia=3;
var tempWest  =0;
var tempNorth =0;
var tempEast  =0;
var tempSouth =0;

/***********************************************************************************************************/

function extServices(e){
	if (useTextFrame)parent.TextFrame.document.location= appDir + "text.htm";
	var i=0;
	var temp="";
	var num_abilitati=0;
	var abilitati="";
	//inizializza valori
	while(i<url.length){url.length="";i++;}
	i=0;
	while(i<abilita_servizio.length){abilita_servizio[i]=0;i++;}
	query_controllo="";
	i=0;	
	
	/*
		prende l'id del primo layer da interrogare
	*/
	
	inviaRichiesta(layer_campo_controllo);
}

//gestisce l'invio e la ricezione delle richieste necessarie per ottenere i valori dei parametri
//necessari alle url dei servizi
function doService(theReply){
	if(query_controllo=="")query_controllo=theReply;
	else {
		replyArray[index] = theReply;
   		index++;
   		index1++;
   	}
   	if(index1<layer_parametri.length) inviaRichiesta(layer_parametri[index1]);
   	if(index1==layer_parametri.length){
   		index=0;
   		index1=0;
   		elaboraRisposta();
   		abilitaServizi(query_controllo);
   		showServces();
   		
   	}
   	
}

//elabora la risposta del server ottenendo i valori necessari per costrirel'url dei servizi
function elaboraRisposta(){
	
	var i=0;
	var count=0;
	risposta_completa="";
	while(i<replyArray.length){//crea una srtinga contenente tutte le risposte
		risposta_completa=risposta_completa+replyArray[i];
		i++;	
	}
	i=0;
	while(i<parametri_servizio.length){
		recuperaValParametro(i);//recupera i valori dei parametri specificati nella prima stringa dell'array
		i++;
	}
}

function recuperaValParametro(j){
	var temp=new Array();//contiene l'elenco dei parametri del primo servizio 'esploso in un array'
	var i=0;
	var murl="";
	temp=creaArray(parametri_servizio[j],"|");//eplode parametri_servizio[0] in un array
	temp1=creaArray(nomeurl_parametro[j],"|");//eplode nomeurl_parametro[0] in un array
	while(i<temp.length){
		murl=murl+temp1[i]+"="+estraiValore(temp[i],risposta_completa)+"&";
		i++;
	}
	url[j]=services[j]+murl;
}

//ritorna il valore del parametro estratto dalla risposta completa
function estraiValore(str,risposta){
	//var indice=risposta_completa.indexOf(str);
	var indice=risposta.indexOf(str);
	var valore="";
	if(indice >= 0){
		indice=indice+str.length;
		indice++;indice++;//supera il carattere = e ", punta al primo carattere utile
		while(risposta.charAt(indice)!="\""){
			//valore=valore+risposta_completa.charAt(indice);
			valore=valore+risposta.charAt(indice);
			indice++;
		}
		return valore;
	}
	else alert("IMPOSSIBILE RECUPERARE VALORI PER QUESTA COORDINATA");
}

//crea un array a partire da str utilizzando c come carattere delimitatore
function creaArray(str,c){
	var temparray=new Array();
	temparray[size]="";
	var size=0;
	var temp="";
	var count=0;
	while(count<str.length){
		if(str.charAt(count)==c) {count++;size++;temparray[size]="";}
		if(count==0)temparray[size]=str.charAt(count);
		else temparray[size]=temparray[size]+str.charAt(count);
		count++;
	}
	return temparray;
}

function conferma(val){
	wind=window.open("val","val","width=700,height=500");
	wind.location=val;
	
}

//invia la richiesta al server
function inviaRichiesta(numlayer){
	var all="#ALL#";
	var theString="";
	var theX = mouseX;
	var theY = mouseY;
	if(index==0){//inizializza se è la prima request
		   getMapXY(theX,theY);
		   searchTolerance = (xDistance/iWidth) * pixelTolerance;
		   tempWest = mapX - searchTolerance;
		   tempNorth = mapY + searchTolerance;
		   tempEast = mapX + searchTolerance;
		   tempSouth = mapY - searchTolerance;
	}	
		
	theString = '<ARCXML version="1.1">\n<REQUEST>\n<GET_FEATURES outputmode="xml" envelope="false" checkesc ="true" geometry="false" featurelimit="' + maxFeaturesReturned + '">\n';
	theString += '<LAYER id="'+numlayer+'" />';
	theString += '<SPATIALQUERY subfields="' + all + '">';
	theString += '<SPATIALFILTER relation="area_intersection" >';
	theString += '<ENVELOPE maxy="' + forceComma(tempNorth) + '" maxx="' + forceComma(tempEast) + '" miny="' + forceComma(tempSouth) + '" minx="' + forceComma(tempWest) + '" />';
	theString += '</SPATIALFILTER>';
	theString += '</SPATIALQUERY>';
	//if (useLimitExtent) {
		// keep this within the limitExtent
		//alert("limit");
		//theString += '<SPATIALFILTER relation="area_intersection">\n';
		//theString += '<ENVELOPE maxx="' + forceComma(limitRight) + '" maxy="' + forceComma(limitTop) + '" minx="' + forceComma(limitLeft) + '" miny="' + forceComma(limitBottom) + '" />\n';
		//theString += '</SPATIALFILTER>\n';
	//}
	theString += '</GET_FEATURES>';
	theString += '</REQUEST>';
	theString += '</ARCXML>';
	sendToServer(imsQueryURL,theString,identifyXMLMode);			


}

//controlla il valore di query_controllo e attiva i servizi attivabili
function abilitaServizi(response){
	var i=0;
	var temp=estraiValore(nome_campo_controllo,query_controllo);
	//codice ad hoc per il controllo sulle 3 cifre istat
	var temp1=temp.charAt(0)+temp.charAt(1)+temp.charAt(2);
	temp=temp1;
	while(i<val_campo.length){
		if(temp==val_campo[i])abilita_servizio[i]=1;
		//alert("servizio_abilitato"+i+"="+abilita_servizio[i]);
		i++;
	}
}

function showServces(){
	var myurl = appDir + "displayExtServices.htm";
	if (useTextFrame)   parent.TextFrame.document.location = myurl;
	}