// aimsNewButton.js
/*
* Permette la gestione dei nuovi bottoni:
*	- Selezione multipla
*/

//per visualizzare il bottone di selezione multipla nella toolbar
//var mus_csi_useMultiSelect=true;--Parametro spostato in aimsButtonInit.js
//vettore contenente i dati/informazioni degli oggetti selezionati
var mus_csi_multiSelectDataArray = new Array();
//vettori contenenti le info necessarie per individuare sulla mappa (mediante QUERY) gli elementi selezionati
var mus_csi_multiSelectArraySelectPoint = new Array();
var mus_csi_multiSelectArrayLayerIDField = new Array();
//vettore contenente le coordinate (ENVELOPE)sulla mappa degli elementi selezionati
var mus_csi_multiSelectArray = new Array();
//informa se l'operazione selezionata precedentemente dall'utente era un "Annulla tutto"
var mus_csi_useClearSelection= false;
//informa se la pagina visualizzata su TextFrame è ""SelezioneMultipla.htm"
var mus_csi_isDisplayedData= false;
//CAROTAGGIO
var campoVerfica ="PROV";


var mus_csi_inizioRispostaDati;
var mus_csi_useClearLastSelection = false;
//MAD 26/02/03
//variabile che mi aiuta a gestire le occorrenze nella selezione degli elementi
var mus_csi_isAlreadySelected=false;
//CAROTAGGIO
var carotaggioArray = new Array();
//var inizioRispostaImg;

//Crea la request dell'oggetto selezionato con la funzione "Selezione multipla"
//Verranno memorizzate le info di response all'interno di un vettore.
function mus_csi_MakeRequest(e) {
	//alert(' toolmode==1070 function MakeRequestMultiSelect ');
	if (checkIfActiveLayerAvailable()) {
		parent.MapFrame.highlightedOne="";
		var theX = mouseX;
		var theY = mouseY;
		//alert('mouseX - '+mouseX+'       mouseY - '+mouseY);
		getMapXY(theX,theY);
		//alert('mouseX - '+mouseX+'       mouseY - '+mouseY);
		searchTolerance = (xDistance/iWidth) * pixelTolerance;
		//alert('searchTolerance - '+searchTolerance);
		//alert('mapX - '+mapX+'       mapY - '+mapY);
		var tempWest = mapX - searchTolerance;
		var tempNorth = mapY + searchTolerance;
		var tempEast = mapX + searchTolerance;
		var tempSouth = mapY - searchTolerance;
		
		//alert('selectXMLMode - '+selectXMLMode);
		//alert('identifyXMLMode - '+identifyXMLMode);
		//Prova
		queryStartRecord=1;
		var theString = writeGetFeatures2(tempWest,tempSouth,tempEast,tempNorth);
		selectEnvelope='maxy="' + forceComma(tempNorth) + '" maxx="' + forceComma(tempEast) + '" miny="' + forceComma(tempSouth) + '" minx="' + forceComma(tempWest) + '"';
		drawSelectBoundary=true;
		showBuffer=false;
		selectionMode=2;
		sendToServer(imsQueryURL,theString,selectXMLMode);
		
		
		//String per ricerca info
		//var theString = writeGetFeatures(tempWest,tempSouth,tempEast,tempNorth);
		//alert('theString - '+theString);
		//var numElem = 0;
			mus_csi_multiSelectArray.unshift(theString);
			//multiSelectDataArray.unshift(theString);
		//alert('numElem - '+multiSelectArray.unshift(theString));
			//alert(multiSelectDataArray);
		//Permette la visualizzazione della barra caricamento dati ('Caricamento/elaborazione in corso')
		//showRetrieveData();
		//Non devo spedire la richiesta al server. Per ora memorizzo la richiesta in un vettore
		//sendToServer(imsQueryURL,theString,identifyXMLMode);
		
		//sendMapXML();
	}
}


// Cancella l'eventuale elenco di punti precedentemente selezionati con la "Selezione multipla"
function mus_csi_ClearMultiSelectArray(e) {
	//alert('function ClearMultiSelectArray(e) si aimsNewButton.js');
	var numero = mus_csi_multiSelectDataArray.length;
	//alert('numero - '+numero);
	for(i=0; i<numero; i++) {
		mus_csi_multiSelectArray.shift();
		mus_csi_multiSelectDataArray.shift();
		mus_csi_multiSelectArraySelectPoint.shift();
		mus_csi_multiSelectArrayLayerIDField.shift();
		//alert('i - '+i);
	}
	//Prova MAD 03/03/03
	//parent.MapFrame.highlightedOne="";
	
	if (toolMode==1070){
		//alert('multiSelectArray - '+multiSelectArray);
		//alert('multiSelectDataArray - '+multiSelectDataArray);
		//alert('multiSelectArraySelectPoint - '+multiSelectArraySelectPoint);
		//alert('multiSelectArrayLayerIDField - '+multiSelectArrayLayerIDField);
		mus_csi_useClearLastSelection=true;
		mus_csi_showSelectedObj();
		//Prova MAD 03/03/03
		parent.MapFrame.highlightedOne="";
	}
}

// Cancella l'ultimo elemento selezionato con la "Selezione multipla"
function mus_csi_ClearLastSelectMultiSelectArray(e) {
	//alert('Elem tolto ');
	mus_csi_multiSelectArray.shift();
	mus_csi_multiSelectDataArray.shift();
	mus_csi_multiSelectArraySelectPoint.shift();
	mus_csi_multiSelectArrayLayerIDField.shift();
	
	mus_csi_useClearLastSelection=true;
	mus_csi_showSelectedObj();
}

//Salva le response relative ai dati e alle immagini ella multiSelezione
//tipoRisposta --> XMLMode
//risposta     --> theReplyIn
function mus_csi_saveResponseMultiSelect(risposta,tipoRisposta) {
	//alert('saveResponseMultiSelect ');
	switch(tipoRisposta) {
	case 1:	
		//Caso in cui riceve per response la mappa: l'operazione di salvataggio su array è già eseguita su "showSelectedObj"
		//alert('selectPoints - '+selectPoints);
		//alert('Salva punti selezionati per immagine');
		//multiSelectArraySelectPoint.unshift(selectPoints[0]);
		//Pe ril momento non necessario ma potrà tornare l'utile nel caso in cui la multi selezione avvenga su più layer
		//multiSelectArrayLayerIDField.unshift(LayerIDField[ActiveLayerIndex]);
	
		//alert('multiSelectArraySelectPoint - '+multiSelectArraySelectPoint);
		//alert('multiSelectArrayLayerIDField - '+multiSelectArrayLayerIDField);
		
		break;
	case 6:	
		//Caso in cui riceve per response i dati
 		var testo = risposta;
 		//alert('testo - '+testo);
 		var posizioneInizio = testo.indexOf("<FEATURE>");
 		//alert('posizioneInizio - '+posizioneInizio);
 		var posizioneFine = testo.indexOf("</FEATURE>");
 		//alert('posizioneFine - '+posizioneFine);
 		if ((posizioneInizio!=-1) &&(posizioneFine!=-1)){
 			//ho trovato la posizione della prima occorrenza
 			var daSalvare = testo.substring(posizioneInizio, posizioneFine+10);
 			
 			//MAD 26/02/03
 			for (i=0; i<mus_csi_multiSelectDataArray.length; i++){
 				if (mus_csi_multiSelectDataArray[i]== daSalvare){
 					mus_csi_isAlreadySelected=true;
 				}
 			}
 			if (mus_csi_isAlreadySelected==true){
 				alert('ELEMENTO GIA\' SELEZIONATO');
 			}else{	
 				mus_csi_multiSelectDataArray.unshift(daSalvare);
 			}
 			
 			
 			//alert('multiSelectDataArray - '+multiSelectDataArray);
 		}
 		mus_csi_inizioRispostaDati= testo.substring(0,posizioneInizio);
 		//alert('mus_csi_inizioRispostaDati - '+mus_csi_inizioRispostaDati);
		break;
	default:
		//alert('Tipo di Response non gestita');
		parent.TextFrame.document.location = appDir + "Bottoni_mus_csi.htm";			
	}
}

//Permette la visualizzazione degli attributi degli oggetti selezionati con la selezione multipla
function mus_csi_displayAttributeDataMultiSelect(theReply) {
	//alert('function displayAttributeDataMultiSelect ');
	setLayerFields(ActiveLayerIndex);
	var url = appDir + "displayAttributeData_mus_csi.htm";
	if (useTextFrame) {
		parent.TextFrame.document.location = url;
	} else {
		var Win1 = open(url,"DataWindow","width=575,height=250,scrollbars=yes,resizable=yes");
	}

}

//Questa funzione permette la visualizzazione delle info relative a tutti gli oggetti selezionati da utente con la MultiSelezione
//Viene lanciato solo quando utente clicca sul tasto "Inoltra Richiesta"
//In realtà la richiesta non viene inoltrata al server in quanto tutte le info sono già memorizzate all'interno del vettore multiSelectDataArray
function mus_csi_ShowMultiSelectDataArray(e) {
	//alert('ShowMultiSelectDataArray');
	mus_csi_isDisplayedData=true;
	parent.MapFrame.XMLMode = 7;
	mus_csi_displayAttributeDataMultiSelect();
}

function mus_csi_closeShowMultiSelectArray(){
	mus_csi_isDisplayedData=false; 
	parent.TextFrame.document.location = appDir + "Bottoni_mus_csi.htm";
}

//La funzione permette la visualizzazione sulla mappa degli oggetti selezionati con la multiSelezione
function mus_csi_showSelectedObj() {
	//alert('function showSelectedObj(selNum) su aimsNewButton.js');
	//alert('selNum - '+selNum);
	//Questo parametro memorizza la query
	//parent.MapFrame.highlightedOne = LayerIDField[ActiveLayerIndex] + " = " + selectPoints[selNum];
	//alert('selectPoints - '+selectPoints);
	parent.MapFrame.highlightedOne="";
	if (mus_csi_useClearLastSelection){
		//se useClearLastSelection==true allora l'utente ha selezionato "Annulla ultima selezione"
		//quindi non esiste elemento da memorizzare
		mus_csi_useClearLastSelection=false;
		selectPoints.shift();
		selectCount=0;
	}else{
		mus_csi_multiSelectArraySelectPoint.unshift(selectPoints[0]);
		mus_csi_multiSelectArrayLayerIDField.unshift(LayerIDField[ActiveLayerIndex]);
	}
	for(i=0; i<mus_csi_multiSelectArrayLayerIDField.length; i++){
		parent.MapFrame.highlightedOne+=mus_csi_multiSelectArrayLayerIDField[i];
		parent.MapFrame.highlightedOne+=" = ";
		parent.MapFrame.highlightedOne+=mus_csi_multiSelectArraySelectPoint[i];
		if (i+1<mus_csi_multiSelectArrayLayerIDField.length){
			parent.MapFrame.highlightedOne+=" or ";
		}
	}
	//alert('parent.MapFrame.highlightedOne - '+parent.MapFrame.highlightedOne);
	
	sendMapXML();
	//Prova Mari
	//window.setTimeout("sendMapXML()", 1000);	
}


function createCarotaggio(){
	//alert('multiSelectArray - '+multiSelectArray);
	//alert('multiSelectDataArray - '+multiSelectDataArray);
	//alert('multiSelectArraySelectPoint - '+multiSelectArraySelectPoint);
	//alert('multiSelectArrayLayerIDField - '+multiSelectArrayLayerIDField);
	for(i=0; i<mus_csi_multiSelectDataArray.length; i++) {
		var posizioneInizio = mus_csi_multiSelectArray[i].indexOf("<ENVELOPE");
 		var posizioneFine = mus_csi_multiSelectArray[i].indexOf("</SPATIALFILTER>");
 		if ((posizioneInizio!=-1) &&(posizioneFine!=-1)){
 			//ho trovato la posizione della prima occorrenza
 			var daSalvare = mus_csi_multiSelectArray[i].substring(posizioneInizio, posizioneFine);
 			daSalvare+="-";
 			posizioneInizio = mus_csi_multiSelectDataArray[i].indexOf(campoVerfica);
 			if (posizioneInizio!=-1){
 				posizioneFine=mus_csi_multiSelectDataArray[i].indexOf("\"",posizioneInizio+campoVerfica.length+2 );
 				if (posizioneFine!=-1){
 					daSalvare+=mus_csi_multiSelectDataArray[i].substring(posizioneInizio, posizioneFine+1);
 					carotaggioArray.unshift(daSalvare);
 				}
 			}
 		}	
	}
	
	alert('carotaggioArray - '+carotaggioArray);
	
	for(i=0; i<carotaggioArray.length; i++) {
		carotaggioArray.shift();
	}
}


//serve quando visualizzo i dati degli oggetti selezionati
function mus_csi_zoomToReturnedRecordsMultiSelect(){
	parent.MapFrame.calcSelectEnvelope();
	var fWidth = selMaxEnvelope[2] - selMaxEnvelope[0];
	var fHeight = selMaxEnvelope[3] - selMaxEnvelope[1];
	var mWMargin = 0;
	var mHMargin = 0;
	if ((fWidth==0) && (fHeight==0)) {			
		mWMargin = fullWidth * selectPointMargin;
		mHMargin = fullHeight * selectPointMargin;
		if (mWMargin > xDistance/2) {
			mWMargin = xDistance/2;
			mHMargin = yDistance/2;
		}
	} else {
		mWMargin = fWidth * selectMargin;
		mHMargin = fHeight * selectMargin; 
	}
	parent.MapFrame.saveLastExtent();
	eLeft = selMaxEnvelope[0] - mWMargin;
	eRight = selMaxEnvelope[2] + mWMargin;
	eTop = selMaxEnvelope[3] + mHMargin;
	eBottom = selMaxEnvelope[1] - mHMargin;
	//Riutilizzo la variabile booleana per comodità ...per non crearne una nuova!
	mus_csi_useClearLastSelection=true;
	mus_csi_showSelectedObj();
}


//serve quando visualizzo i dati degli oggetti selezionati
function mus_csi_showHighlightMultiSelect(selNum){
	highlightedOne = LayerIDField[ActiveLayerIndex] + " = " + selectPoints[selNum];
	//alert(selectLeft[selNum] + "," + selectRight[selNum]);
	var fWidth = selectRight[selNum] - selectLeft[selNum];
	var fHeight = selectTop[selNum] - selectBottom[selNum];
	var mWMargin = 0;
	var mHMargin = 0;
	if (selectType=="point") {			
		mWMargin = fullWidth * selectPointMargin;
		mHMargin = fullHeight * selectPointMargin;
		if (mWMargin > xDistance/2) {
			mWMargin = xDistance/2;
			mHMargin = yDistance/2;
		}
	} else {
		mWMargin = fWidth * selectMargin;
		mHMargin = fHeight * selectMargin; 
	}
	saveLastExtent();
	eLeft = selectLeft[selNum] - mWMargin;
	eRight = selectRight[selNum] + mWMargin;
	eTop = selectTop[selNum] + mHMargin;
	eBottom = selectBottom[selNum] - mHMargin;
	//alert(highlightedOne);
		legendTemp=legendVisible;
		legendVisible=false;
	mus_csi_useClearLastSelection=true;
	mus_csi_showSelectedObj();
}
