//mappa per la navigazione
var map;

//pagina di anteprima di stampa
var printWin = null;

//mappa statica per l'anteprima di stampa/dettaglio
var mapPrint;

var layerPuntoSel = null;
var layerSwitcher = null;
var overview = null;
var keyboardHandler = null;

//Percorsi dei file XSL
var localitaXslPath = 'xsl/buildLocalitaResponse.xsl';
var dettaglioPercorsoXslPath = 'xsl/buildDettaglioPercorso.xsl';
var xslLocalita;
var xslPercorsi;
var xslDettaglioPercorso;
var xslItinerario;
var xslDettaglioItinerario;

//Stringhe contenente l'html di dettaglio
var detailHTML = null;
var detailItinerarioHTML = null;

//Hack per correggere il bug sull'impossibilita' dell'uso del min width da parte di IE6 
var hackCSSLayerSwitcherOverlayDivSize="";
var hackCSSBodySize="";

var zoombar;
//Info attivo/disattivo
var infoActived=false;
//Layer vettoriale
var vectorLayer = null;

//Toolbar nascosta
var navToolBar = null;

//Messaggio di "elaborazione in corso"
var loadingMsg = null;

// oggetto set point per la ricerca delle località in mappa
var setPointControl = null;
//Layer dei marker
var markersLayer = null;
//Layer delle foto
var fotoLayer = null;
//Identificativi delle tratte, numero del percorso e nome del layer per scarico cartografia.
//Vengono impostati su trovaItinerario e trovaPercorso
var idsTratte = null;
var layerNameScaricoCartografia = "";
var numPercorso = "";
var scale = null;
var scaleline = null;
var scaleArray= ['900000','870000','435000','220000','110000','54000','27000','14000','7000','3500','2000'];
var mousePosition = null


var layers1=null;
var layers2=null;
var layers3=null;

function init()
{
    OpenLayers.Popup.WIDTH=310;

	//gestore dei tasti di scelta rapida per l'accessibilità
	//Inizializzazione a null necessaria per risolvere bug su IE6
	keyboardHandler = null;
    keyboardHandler = new OpenLayers.Control.KeyboardDefaults();
    
    //zoom bar
    zoombar = new MW.Control.ZoomBar({position: new OpenLayers.Pixel(20,10),moveCursoStyle:"pointer",zoomStopWidth: 20,zoomStopHeight:10,sliderIcon:"slider.gif",zoombarIcon:"zoombar.gif",sliderSize: new OpenLayers.Size(9,18),imageLocation:"./"});
    
    //scale
    scale = new OpenLayers.Control.Scale();
    //scaleline
    scaleline = new OpenLayers.Control.ScaleLine();
    
    //mouse position
    mousePosition = new OpenLayers.Control.MousePosition();
    
    /**************************************************************************************************************\
						                     CONFIGURAZIONE MAPPA
	\**************************************************************************************************************/
    var options = {
        fallThrough: true,
        resolutions: [liv10,liv9,liv8,liv7,liv6,liv5,liv4,liv3,liv2,liv1,liv0],
        maxExtent: rerMaxExtent,
        units: "m",
        projection: "EPSG:none",
        panMethod:null,
        controls: [keyboardHandler,zoombar,scale,scaleline,mousePosition,new OpenLayers.Control.MouseDefaults()]
    };
    map = new MW.Map( $('map') , options);
    
		    
	/**************************************************************************************************************\
						                     CONFIGURAZIONE DEI LAYER DAL LIVELLO 1 AL LIVELLO 2
	\**************************************************************************************************************/	
	options = {
        maxExtent: rerMaxExtent,
        projection:"EPSG:none",
        minResolution:liv2,
        maxResolution:liv0,
        buffer: 0,
        displayInLayerSwitcher:false,
        isBaseLayer:false
    };
         
    params = {
         srs: "EPSG:none",
         layers:'lyr1_2',
         layersNames: 'Territorio extra regionale,USO DEL SUOLO,Capoluoghi,PERCORSI ESCURSIONISTICI',
         format: 'image/png', 
         ratio: '1',
         transparent: 'true'	
    };    
    var layer1_2 = new OpenLayers.Layer.WMS("lyr1_2", wmsUrl,params, options);
    map.addLayer(layer1_2);
    
   /**************************************************************************************************************\
						                     CONFIGURAZIONE DEI LAYER AL LIVELLO 3
	\**************************************************************************************************************/	
	options = {
        maxExtent: rerMaxExtent,
        projection:"EPSG:none",
        minResolution:liv3,
        maxResolution:liv3,
        buffer: 0,
        displayInLayerSwitcher:false,
        isBaseLayer:false
    };
         
    params = {
         srs: "EPSG:none",
         layers:'lyr3',
         layersNames: 'SHADING 40 METRI,CTR 250.000,PERCORSI ESCURSIONISTICI',
         format: 'image/png', 
         ratio: '1',
         transparent: 'true'	
    };    
    var layer3 = new OpenLayers.Layer.WMS("lyr3", wmsUrl,params, options);      
    map.addLayer(layer3);
    
    /**************************************************************************************************************\
						                     CONFIGURAZIONE DEI LAYER AL LIVELLO 4
	\**************************************************************************************************************/	
	options = {
        maxExtent: rerMaxExtent,
        projection: "EPSG:none",
        minResolution:liv4,
        maxResolution:liv4,
        buffer: 0,
        displayInLayerSwitcher:false,
        isBaseLayer:false
    };
         
    params = {
         srs: "EPSG:none",
         layers:'lyr4',
         layersNames: 'SHADING 40 METRI CON BOSCO,CTR 250.000,Parco nazionale o regionale - Riserva naturale,PERCORSI ESCURSIONISTICI,PUNTO SELEZIONABILE',
         format: 'image/png', 
         ratio: '1',
         transparent: 'true'	
    };    
    var layer4 = new OpenLayers.Layer.WMS("lyr4", wmsUrl,params, options);      
    map.addLayer(layer4);
    
    /**************************************************************************************************************\
						                     CONFIGURAZIONE DEI LAYER AL LIVELLO 5 
	\**************************************************************************************************************/	
	options = {
        maxExtent: rerMaxExtent,
        projection: "EPSG:none",
        minResolution:liv5,
        maxResolution:liv5,
        buffer: 0,
        displayInLayerSwitcher:false,
        isBaseLayer:false
    };
         
    params = {
         srs: 'EPSG:none',
         layers:'lyr5',
         layersNames: 'SHADING 5 METRI CON BOSCO,Curve di livello (100 m. equidistanza),Fiume,Strada principale,Lago,Localita di interesse escursionistico,Parco nazionale o regionale - Riserva naturale,Pericolo valanghe,Punto panoramico,Sbarra o divieto,Sorgente o fontana,Museo,Ricovero di emergenza,Rifugio,Emergenza antropico-ambientale,Albergo,Agriturismo,Ostello,Campeggio,Parcheggio,Scuderia,Fermata Bus,Stazione ferroviaria,Farmacia,Sentieri natura,PERCORSI ESCURSIONISTICI,PUNTO SELEZIONABILE',
         format: 'image/png', 
         ratio: '1',
         transparent: 'true'	
    };    
    var layer5 = new OpenLayers.Layer.WMS("lyr5", wmsUrl,params, options);
    map.addLayer(layer5);
    
    /**************************************************************************************************************\
						                     CONFIGURAZIONE DEI LAYER AL LIVELLO 6
	\**************************************************************************************************************/	
	options = {
        maxExtent: rerMaxExtent,
        projection: "EPSG:none",
        minResolution:liv6,
        maxResolution:liv6,
        buffer: 0,
        displayInLayerSwitcher:false,
        isBaseLayer:false
    };
         
    params = {
         srs: 'EPSG:none',
         layers:'lyr6',
         layersNames: 'SHADING 5 METRI CON BOSCO,Curve di livello (50 m. equidistanza),Fiume,Strada principale,Lago,Localita di interesse escursionistico,Parco nazionale o regionale - Riserva naturale,Pericolo valanghe,Punto panoramico,Sbarra o divieto,Sorgente o fontana,Museo,Ricovero di emergenza,Rifugio,Emergenza antropico-ambientale,Albergo,Agriturismo,Ostello,Campeggio,Parcheggio,Scuderia,Fermata Bus,Stazione ferroviaria,Farmacia,Sentieri natura,PERCORSI ESCURSIONISTICI,PUNTO SELEZIONABILE',
         format: 'image/png', 
         ratio: '1',
         transparent: 'true'	
    };    
    var layer6 = new OpenLayers.Layer.WMS("lyr6", wmsUrl,params, options);            
    map.addLayer(layer6);
    
    /**************************************************************************************************************\
						                     CONFIGURAZIONE DEI LAYER AL LIVELLO 7
	\**************************************************************************************************************/	
	options = {
        maxExtent: rerMaxExtent,
        projection: "EPSG:none",
        minResolution:liv7,
        maxResolution:liv7,
        buffer: 0,
        displayInLayerSwitcher:false,
        isBaseLayer:false
    };
         
    params = {
         srs: 'EPSG:none',
         layers:'lyr7',
         layersNames: 'SHADING 5 METRI CON BOSCO,Curve di livello (25 m. equidistanza),Fiume,Strada principale,Lago,Strada secondaria,Luogo di interesse escursionistico,Parco nazionale o regionale - Riserva naturale,Pericolo valanghe,Punto panoramico,Sbarra o divieto,Sorgente o fontana,Museo,Ricovero di emergenza,Rifugio,Emergenza antropico-ambientale,Albergo,Agriturismo,Ostello,Campeggio,Parcheggio,Scuderia,Fermata Bus,Stazione ferroviaria,Farmacia,Sentieri natura,PERCORSI ESCURSIONISTICI,PUNTO SELEZIONABILE',
         format: 'image/png', 
         ratio: '1',
         transparent: 'true'	
    };    
    var layer7 = new OpenLayers.Layer.WMS("lyr7", wmsUrl,params, options);            
    map.addLayer(layer7);
    
    /**************************************************************************************************************\
						                     CONFIGURAZIONE DEI LAYER DAL LIVELLO 8 AL LIVELLO 10
	\**************************************************************************************************************/	
	options = {
        maxExtent: rerMaxExtent,
        projection: "EPSG:none",
        minResolution:liv10,
        maxResolution:liv8,
        buffer: 0,
        displayInLayerSwitcher:false,
        isBaseLayer:false
    };
         
    params = {
         srs: 'EPSG:none',
         layers:'lyr8_9_10_11',
         layersNames: 'SHADING 5 METRI,CTR 5.000 RN,CTR 5.000 RE,CTR 5.000 RA,CTR 5.000 PC,CTR 5.000 PR,CTR 5.000 MO,CTR 5.000 FC,CTR 5.000 FE,CTR 5.000 BO,Parco nazionale o regionale - Riserva naturale,Pericolo valanghe,Punto panoramico,Sbarra o divieto,Sorgente o fontana,Museo,Ricovero di emergenza,Rifugio,Emergenza antropico-ambientale,Albergo,Agriturismo,Ostello,Campeggio,Parcheggio,Scuderia,Fermata Bus,Stazione ferroviaria,Farmacia,Sentieri natura,PERCORSI ESCURSIONISTICI,PUNTO SELEZIONABILE',
         format: 'image/png', 
         ratio: '1',
         transparent: 'true'	
    };    
    var layer8_9_10_11 = new OpenLayers.Layer.WMS("lyr8_9_10_11", wmsUrl,params, options);
    map.addLayer(layer8_9_10_11);
    
    /**************************************************************************************************************\
						                     CONFIGURAZIONE DEI LAYER PUNTUALI DAL LIVELLO 5 AL LIVELLO 10
	\**************************************************************************************************************/	
	options = {
        maxExtent: rerMaxExtent,
        projection: "EPSG:none",
        minResolution:liv10,
        maxResolution:liv5,
        buffer: 0,
        displayInLayerSwitcher:false,
        isBaseLayer:false
    };
         
    params = {
         srs: 'EPSG:none',
         layers:'lyrPuntuali',
         layersNames: 'Pericolo valanghe,Punto panoramico,Sbarra o divieto,Sorgente o fontana,Museo,Ricovero di emergenza,Rifugio,Emergenza antropico-ambientale,Albergo,Agriturismo,Ostello,Campeggio,Parcheggio,Scuderia,Fermata Bus,Stazione ferroviaria,Farmacia,Sentieri natura',
         format: 'image/png', 
         ratio: '1',
         transparent: 'true'	
    };    
    var layerPuntuali = new OpenLayers.Layer.WMS("lyrPuntuali", wmsUrl,params, options);
    //map.addLayer(layerPuntuali);
    
	/**************************************************************************************************************\
						                   CONFIGURAZIONE PRIMO LAYER DI SFONDO
	\**************************************************************************************************************/	
	options = {
        maxExtent: rerMaxExtent,
        projection: "EPSG:none",
        buffer: 0,
        overlay: ['lyr1_2','lyr3','lyr4','lyr5','lyr6','lyr7','lyr8_9_10_11'],        
        isBaseLayer:true
    };
    
    //Configuriamo il primo layer di sfondo	      
    var params = {
         srs: 'EPSG:none',
         format: 'image/png',
         ratio: '1',
         transparent: 'true'	
    };    

    var sfondo1LayerWms = new MW.Layer.WMS(testoSwitcherMappaBase, wmsUrl,params, options,[]);
    sfondo1LayerWms.setVisibility(true);
    map.addLayer(sfondo1LayerWms);
  
    
    
    /* START TEST GIORGIO */
    options = {
        maxExtent: rerMaxExtent,
        projection: "EPSG:none",
        minResolution:liv3,
        maxResolution:liv3,
        buffer: 0,
        displayInLayerSwitcher:false,
        visibility:false,
        isBaseLayer:false
    };
         
    params = {
         srs: 'EPSG:none',
         layers:'layers1',
         layersNames: 'PERCORSI ESCURSIONISTICI',
         format: 'image/png', 
         ratio: '1',
         transparent: 'true'	
    };    
    layers1 = new OpenLayers.Layer.WMS("layers1", wmsUrl,params, options);
    map.addLayer(layers1);
    
    options = {
        maxExtent: rerMaxExtent,
        projection: "EPSG:none",
        minResolution:liv4,
        maxResolution:liv4,
        buffer: 0,
        displayInLayerSwitcher:false,
        visibility:false,
        isBaseLayer:false
    };
         
    params = {
         srs: 'EPSG:none',
         layers:'layers2',
         layersNames: 'PERCORSI ESCURSIONISTICI,PUNTO SELEZIONABILE',
         format: 'image/png', 
         ratio: '1',
         transparent: 'true'	
    };    
    layers2 = new OpenLayers.Layer.WMS("layers2", wmsUrl,params, options);
    map.addLayer(layers2);
    
    options = {
        maxExtent: rerMaxExtent,
        projection: "EPSG:none",
        minResolution:liv10,
        maxResolution:liv5,
        buffer: 0,
        displayInLayerSwitcher:false,
        visibility:false,
        isBaseLayer:false
    };
         
    params = {
         srs: 'EPSG:none',
         layers:'layers3',
         layersNames: 'Pericolo valanghe,Punto panoramico,Sbarra o divieto,Sorgente o fontana,Museo,Ricovero di emergenza,Rifugio,Emergenza antropico-ambientale,Albergo,Agriturismo,Ostello,Campeggio,Parcheggio,Scuderia,Fermata Bus,Stazione ferroviaria,Farmacia,Sentieri natura,PERCORSI ESCURSIONISTICI,PUNTO SELEZIONABILE',
         format: 'image/png', 
         ratio: '1',
         transparent: 'true'	
    };    
    layers3 = new OpenLayers.Layer.WMS("layers3", wmsUrl,params, options);
    map.addLayer(layers3);
    
    /* END TEST GIORGIO */
    
    
    /**************************************************************************************************************\
						                   CONFIGURAZIONE SECONDO LAYER DI SFONDO
	\**************************************************************************************************************/	
	// imposto i layers 
	options = { 
	 	layername:'agea2008', 
		type: "png", 
		format: 'image/png', 
		transitionEffect: 'resize', 	
		maxExtent: rerMaxExtent, 
		tileOrigin: new OpenLayers.LonLat(512973.0, 842779.500152), 
		minZoomVisibleLevel:4,
                buffer: 0,
                serviceVersion:'.',                 
                overlay: ['layers1','layers2','layers3'],  
                isBaseLayer:true
	}; 
	
	var sfondo2LayerWms = new OpenLayers.Layer.TMS(testoSwitcherOrtofoto, wmsUrlOrtofoto, options); 
	sfondo2LayerWms.setIsBaseLayer(true); 
	map.addLayer(sfondo2LayerWms); 
        
    
    
	/**************************************************************************************************************\
						                   CONFIGURAZIONE LAYER DEI PERCORSI
	\**************************************************************************************************************/	
	options = {
        maxExtent: rerMaxExtent,
        projection: "EPSG:none",
        displayInLayerSwitcher:false,  
        buffer: 0,        
        isBaseLayer:false        
    };
    params = {
         srs: 'EPSG:none',
         layers:'PERCORSI ESCURSIONISTICI',
         format: 'image/png',
         ratio: '1',
         transparent: 'true'	
    };   
    
	var pathsWMSLayer = new OpenLayers.Layer.WMS("Sentieri", wmsUrl,params, options);	
    //map.addLayer(pathsWMSLayer);


	/**************************************************************************************************************\
						                     CONFIGURAZIONE DEI PUNTI SELEZIONABILI DAL LIVELLO 4 AL LIVELLO 11
	\**************************************************************************************************************/	
	options = {
        maxExtent: rerMaxExtent,
        projection: "EPSG:none",
        minResolution:liv10,
        maxResolution:liv4,
        buffer: 0,
        displayInLayerSwitcher:false,
        isBaseLayer:false
    };
         
    params = {
         srs: 'EPSG:none',
         layers:'PUNTO SELEZIONABILE',
         format: 'image/png', 
         ratio: '1',
         transparent: 'true'	
    };    
    layerPuntoSel = new OpenLayers.Layer.WMS("PUNTO SELEZIONABILE", wmsUrl,params, options);
    //map.addLayer(layerPuntoSel);
        
	/**************************************************************************************************************\
						                     CONFIGURAZIONE DEI LAYER DELLE FOTO
	\**************************************************************************************************************/	
	options = {
        maxExtent: rerMaxExtent,
        projection: "EPSG:none",
        minResolution:liv10,
        maxResolution:liv4,  
        buffer: 0,        
        displayInLayerSwitcher:true,
        isBaseLayer:false      
    };
    
    params = {
         srs: 'EPSG:none',
         layers:'Foto',
         format: 'image/png', 
         ratio: '1',
         transparent: 'true'	
    };   
    
    fotoLayer = new OpenLayers.Layer.WMS(testoLayerFoto, wmsUrl,params, options);	
    map.addLayer(fotoLayer);    
    
    // aggiungo il controllo per il LayerSwitcher
    /* LAYER SWITCHER */
    options = {
    	position:new OpenLayers.Pixel(20,10),
    	rightPosition:true,
    	titleMore:testoSwitcherTematismi,
    	overlay: [layers1,layers2,layers3,layer8_9_10_11,layer7,layer6,layer5,layer4,layer3,layer1_2]
    };
    layerSwitcher = new MW.Control.SimpleLayerSwitcher(options);
    map.addControl(layerSwitcher);
    		
    //Aggiungo l'overview
    ovmapOptions = {
    	maxExtent: rerMaxExtent
    };        
       
    options = {
        layerBounds: rerMaxExtent,
        maxRatio: liv1,
        size: new OpenLayers.Size(171, 93),              
        title: testoOverview,
        zoomboxHideLevel:1,
        mapOptions: ovmapOptions    
    };
    overview =  new MW.Control.Overview(options);
    map.addControl(overview);
    overview.div.style.left="";
    overview.div.style.top="";
    overview.div.className += " MWControlFloatingPanelOverview"; 

    //map.zoomToMaxExtent(rerMaxExtent);
    if(screen.width<=1024 && screen.height<=768)
        map.zoomTo(0);
    else
	map.zoomTo(1);
	
    // inizializzo i campi di input per la ricerca
    document.getElementById('locPercInput').value = 'esempio: Cimone';
    
    zoombar.events.register('drawComplete', this, this.correctZoombarPosition);
    toggleSideBar('close');
    showResultsDiv('false');
    nero();
    //Impostiamo il focus direttamente sul div principale in modo che i tasti di scelta rapida siano subito attivi
    document.getElementById('normalPageDiv').focus();
    
	// loading xsl file
    new OpenLayers.Ajax.Request(localitaXslPath,
               {   method: 'get',
                   parameters: null,
                   onComplete: successXslLocalitaFunc,
                   onFailure: failureXslLocalitaFunc
                }
               );

    new OpenLayers.Ajax.Request(urlXslBuildPercorsiResponse,
               {   method: 'get',
                   parameters: null,
                   onComplete: successXslPercorsiFunc,
                   onFailure: failureXslPercorsiFunc
                }
               );

    new OpenLayers.Ajax.Request(urlXslBuildDettaglioPercorso,
               {   method: 'get',
                   parameters: null,
                   onComplete: successXslDettaglioPercorsoFunc,
                   onFailure: failureXslDettaglioPercorsoFunc
                }
               );

    new OpenLayers.Ajax.Request(urlXslBuildItinerarioResponse,
               {   method: 'get',
                   parameters: null,
                   onComplete: successXslItinerarioFunc,
                   onFailure: failureXslItinerarioFunc
                }
               );

    new OpenLayers.Ajax.Request(urlXslBuildDettaglioItinerario,
               {   method: 'get',
                   parameters: null,
                   onComplete: successXslDettaglioItinerarioFunc,
                   onFailure: failureXslDettaglioItinerarioFunc
                }
               );
               
     // FloatingPanel.Info.GetFeatureInfo options
     options = {
	     url: urlSentieriWebBackend,
	     xslPath: urlXslBuildGetFeatureInfo,
	     size: new OpenLayers.Size(662, 400),
	     position: new OpenLayers.Pixel(100, 50),
	     nomeProperties:"InfoGenerico",
	     title: 'Info'
     };
     
     // Initialize a new FloatingPanel.Info.GetFeatureInfo
     var floatingInfo = new MW.Control.FloatingPanel.Info.GetFeatureInfo(options);
	
     var info = new MW.Control.Info({info: floatingInfo});
     
     // Aggiungo una toolbar nascosta per mantenere le operazioni di pan e info e gestire
     // la selezioni delle due operazioni tralasciandole alle api
     navToolBar = new OpenLayers.Control.NavToolbar();
     navToolBar.addControls(info);
     
	 setPointControl = new MW.Control.SetPoint({url:urlSentieriWebBackend});     
     navToolBar.addControls(setPointControl);
	 setPointControl.events.register('loadComplete', setPointControl, addMarker);
	 setPointControl.events.register('loadFailure', setPointControl, disableSetPoint);
     
     map.addControl(navToolBar);
     
     //Attivo il controllo del pan
     navToolBar.activateControl(navToolBar.controls[0]);
     
     //Aggiungo alla mappa il messaggio di elaborazione in corso
     loadingMsg = new MW.Control.LoadingMessage();
     if (language == 'en') 
         loadingMsg.imgFileName ='loading_en.gif';
     map.addControl(loadingMsg); 
     
	 // Registro l'evento per l'info foto
	 setInfoFotoEvent();

     setSize();
	 
 
	 //Da sostituire con un dimensionamento di div fisso da usare per la stampa
//	 setSizePrintPreviewDiv();

	map.events.register('changebaselayer', map, checkSideBar);
						
}; // fine init

function setCenterInterval() {
    if (!running) {
        setCenter();
        running = setInterval('setCenter()', 500);
    } else {
        clearInterval(running);
        running = false;
    }    
}

function resetElements(evt) {
    if ((evt.type == "keyup" && evt.keyCode == 13) || (evt.type != "keyup")) {
        var i;
        for (i=0; i < this.elements.length; i++) {
            var element = this.elements[i];
            element.reset();
        }
        controlRouteDiv(false);
    }
}

findPosX = function(obj) {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) {
            curleft += obj.offsetLeft;
            if (!obj.offsetParent) {
                break;
            }
            obj = obj.offsetParent;
        } else if(obj.x) {
            curleft += obj.x;
        }
    return curleft;
}

findPosY = function(obj) {
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
            curtop += obj.offsetTop;
            if(!obj.offsetParent)
            {
                break;           
            }
            obj = obj.offsetParent;
        } else if(obj.y) {
            curtop += obj.y;
        }
    return curtop;
}

/*  ***********************************
* Verifica se la sideBar e' aperta e in 
* quel caso corregge la posizione della zoombar
***********************************  */
function correctZoombarPosition()
{
    stato=document.getElementById('toggle').value;
    if ((stato=='open') && !(document.getElementById('risultati').innerHTML=='')) {
        zoombar.div.style.left='4px';
    } else if (stato=='close') {
        zoombar.div.style.left='285px';
    }
}


/*  ***********************************
*  Verifica lo stato della toolbar per mantenere corrette le posizioni della zoombar
***********************************  */
function checkSideBar(evt) {
	if (document.getElementById('toggle').value=='close')
	{
		toggleSideBar('open');
	}
	else
	{
		toggleSideBar('close');
	}
}


/*  ***********************************
*  Gestisce larghezza mappa e toolbar
*  modificando l'icona della sidebar
***********************************  */
function toggleSideBar(stato) {
    if (stato != 'close' && stato != 'open') 
        stato=document.getElementById('toggle').value;
    if (stato=='open'){
        // imposto il parametro di stato per la barra, visualizzo il div di output e posiziono mappa e bottone
        document.getElementById('toggle').value='close';
        document.getElementById('output').style.display='block';
        document.getElementById('button').className='closed_button';
        zoombar.div.style.left='345px';
        scale.div.style.left='341px';
        scaleline.div.style.left ='341px';
        mousePosition.div.style.left='502px';
        document.getElementById('clicker').src='img/chiudi.gif;';
    } else if (stato=='close') {
        // imposto il parametro di stato per la barra, visualizzo il div di output e posiziono mappa e bottone
        document.getElementById('toggle').value='open';
        document.getElementById('output').style.display='none';
        document.getElementById('button').className='opened_button';
        zoombar.div.style.left='4px';
        scale.div.style.left='0px';
        scaleline.div.style.left ='0px';
        mousePosition.div.style.left='16em';
        document.getElementById('clicker').src='img/apri.gif;';
    }
    document.getElementById('button').className = document.getElementById('button').className + ' btnclick';
}
/*  ***********************************
*  Imposta l'altezza della mappa
***********************************  */
function setSize() {
	//Bisogna ridimensionare solo su Explorer
	var arVersion = navigator.appVersion.split("MSIE");
	var version = parseFloat(arVersion[1]);
	 
	if (!version)
	{
	    return;
	}

	if ($('normalPageDiv').className.indexOf('show')>=0)
	{
	    var myHeight = 0;
	    if( typeof( window.innerHeight) == 'number' ) {
	        //Non-IE
	        myHeight = window.innerHeight;
	    } else if( document.documentElement && document.documentElement.clientHeight )  {
	        //IE 6+ in 'standards compliant mode'
	        myHeight = document.documentElement.clientHeight;
	        hackCSSBodySize = document.documentElement.clientWidth;
	    } else if( document.body && document.body.clientHeight )  {
	        //IE 4 compatible
	        myHeight = document.body.clientHeight;
	        hackCSSBodySize = document.body.clientWidth;
	    }
	    myHeight = myHeight-150;
	    document.getElementById('output').style.height=myHeight + 'px';
	    document.getElementById('map').style.height=myHeight + 'px';
	    document.getElementById('map').style.width=document.getElementById('normalPageDiv').offsetWidth-4 + 'px';
	    map.setCenter(map.center);
	}
}

/*  ***********************************
*  Imposta l'altezza della mappa per l'anteprima di stampa
***********************************  */
function setSizePreview(){
//	setSizePrintPreviewDiv();
    mapPrint.zoomToExtent(map.getExtent());                                             	                          	                         	
}

/*  ***********************************
*  Imposta l'altezza del div della mappa per l'anteprima di stampa
***********************************  */
function setSizePrintPreviewDiv(){
    var myHeight = 0;
    if( typeof( window.innerHeight) == 'number' ) {
        //Non-IE
        myHeight = window.innerHeight;
    } else if( document.documentElement && document.documentElement.clientHeight )  {
        //IE 6+ in 'standards compliant mode'
        myHeight = document.documentElement.clientHeight;
    } else if( document.body && document.body.clientHeight )  {
        //IE 4 compatible
        myHeight = document.body.clientHeight;
    }
    myHeight = myHeight-100;
    $('mapPrint').style.height=myHeight + 'px';
}

/*  ***********************************
*  Modifica e gestisce il colore dei campi di input
*  nero se modificato
*  grigio con valore di  default
***********************************  */
function nero() {
    
    //nascondiamo l'eventuale pannello dell'autocompletamento
	if (trovaLocalitaDiv != null){
		trovaLocalitaDiv.className = "hidden";
	}
    
    var val=document.getElementById('locPercInput').value;
    if (val!='esempio: Cimone') document.getElementById('locPercInput').style.color='black'
    else document.getElementById('locPercInput').style.color='#999999';
    
    var val=document.getElementById('namePercInput').value;
    if (val!='esempio: 141') document.getElementById('namePercInput').style.color='black'
    else document.getElementById('namePercInput').style.color='#999999';
                
    val=document.getElementById('start').value;
    if (val!='') document.getElementById('start').style.color='black'
    else document.getElementById('start').style.color='#999999';
    
    val=document.getElementById('viaPoint1').value;
    if (val!='') document.getElementById('viaPoint1').style.color='black'
    else document.getElementById('viaPoint1').style.color='#999999';
    
    val=document.getElementById('viaPoint2').value;
    if (val!='') document.getElementById('viaPoint2').style.color='black'
    else document.getElementById('viaPoint2').style.color='#999999';

    val=document.getElementById('end').value;
    if (val!='') document.getElementById('end').style.color='black'
    else document.getElementById('end').style.color='#999999';
    
    val=document.getElementById('localitaInput').value;
    if (val!='esempio: Diga di Ridracoli') document.getElementById('localitaInput').style.color='black'
    else document.getElementById('localitaInput').style.color='#999999';
}

/*  ***********************************
*  Inizializza i valori dei campi di input, esegue lo switch e chiude la SideBar
***********************************  */
function reset_init(cosa) {

	if (cosa=='itinerari') {
		
		document.getElementById('ricercaItinerarioLocDiv').className = document.getElementById('ricercaItinerarioLocDiv').className.replace('hidden','show');
		document.getElementById('ricercaItinerarioPuntiDiv').className = document.getElementById('ricercaItinerarioPuntiDiv').className.replace('show','hidden');

        document.getElementById('start').value=''; //partenzavalue;
        document.getElementById('viaPoint1').value=''; //tappa1value;
        document.getElementById('viaPoint2').value=''; //tappa2value;
        document.getElementById('end').value=''; //arrivovalue;

        document.getElementById('indicazioni').className='todo_bar';
        document.getElementById('ricercaItinerario').className='search_panel left';
        document.getElementById('cerca').className='outscreen';
        document.getElementById('ricercaPercorso').className='outscreen';
        document.getElementById('localita').className='outscreen';
        document.getElementById('ricercaLocalita').className='outscreen';
        
        document.getElementById('start').focus();
	    document.getElementById('start').select();
	    	
    }
    if (cosa=='itinerariPoints') {
        document.getElementById('startId').value='';
        document.getElementById('viaPoint1Id').value='';
        document.getElementById('viaPoint2Id').value='';
        document.getElementById('endId').value='';

		setPointControl.geomPointList=[];
		
		//Pulisco il radio button
		clearRadio();
		
		if(document.getElementById('ricercaItinerarioPuntiDiv').className.indexOf('show')>=0)
		{
		    document.getElementById('itinerariRadio1').focus();
		    document.getElementById('itinerariRadio1').select();
		}	  
    }
    if (cosa=='itinerariPointsMap') {
    	
        document.getElementById('partenzaRadioImg').src=OpenLayers.ImgPath + "dot.gif";
        document.getElementById('tappa1RadioImg').src=OpenLayers.ImgPath + "dot.gif";
        document.getElementById('tappa2RadioImg').src=OpenLayers.ImgPath + "dot.gif";
        document.getElementById('arrivoRadioImg').src=OpenLayers.ImgPath + "dot.gif";
        
        //ripuliamo gli elementi HTML che contengono i valori delle geometrie selezionate
        clearGeom();        
        
        if (markersLayer != null)
        {
	        markersLayer.clearMarkers();
        }
        navToolBar.activateControl(navToolBar.controls[0]);               
    }
    if (cosa=='percorsi') {
    	
    	//Rimuoviamo il layer dei punti selezionabili in mappa
		/*if(map.getLayersByName('PUNTO SELEZIONABILE').length > 0)
			map.removeLayer(layerPuntoSel);
		*/
                
        document.getElementById('locPercInput').value='esempio: Cimone';
		document.getElementById('namePercInput').value='esempio: 141';

        document.getElementById('indicazioni').className='outscreen';
        document.getElementById('ricercaItinerario').className='outscreen';
        document.getElementById('cerca').className='todo_bar';
        document.getElementById('ricercaPercorso').className='search_panel left';
        document.getElementById('localita').className='outscreen';
        document.getElementById('ricercaLocalita').className='outscreen';
        
        if(document.getElementById('ricercaPercorsiLocDiv').className.indexOf('show')>=0)
        {
	    	document.getElementById('locPercInput').focus();
	    	document.getElementById('locPercInput').select();
	    }
    }
    if (cosa=='localita') {
    	
    	//Rimuoviamo il layer dei punti selezionabili in mappa
		/*if(map.getLayersByName('PUNTO SELEZIONABILE').length > 0)
			map.removeLayer(layerPuntoSel);
		*/
                
        document.getElementById('localitaInput').value='esempio: Diga di Ridracoli';
        document.getElementById('indicazioni').className='outscreen';
        document.getElementById('ricercaItinerario').className='outscreen';
        document.getElementById('cerca').className='outscreen';
        document.getElementById('ricercaPercorso').className='outscreen';
        document.getElementById('localita').className='todo_bar';
        document.getElementById('ricercaLocalita').className='search_panel left';
	    document.getElementById('localitaInput').focus();
	    document.getElementById('localitaInput').select();
    }
    nero();
}

function reset_Textbox()
{
	//ricerca percorso per località
	document.getElementById('locPercInput').value='esempio: Cimone';
	//ricerca percorso per nome o numero
	document.getElementById('namePercInput').value='esempio: 141';
	//ricerca itinerario per località
	document.getElementById('start').value=''; //partenzavalue;
    document.getElementById('viaPoint1').value=''; //tappa1value;
    document.getElementById('viaPoint2').value=''; //tappa2value;
    document.getElementById('end').value=''; //arrivovalue;
    document.getElementById('startId').value='';
    document.getElementById('viaPoint1Id').value='';
    document.getElementById('viaPoint2Id').value='';
    document.getElementById('endId').value='';
	//ricerca località
	document.getElementById('localitaInput').value='esempio: Diga di Ridracoli';		            					
}
/*  ***********************************
*  Funzioni per la gestione dell'handler sui tasti veloci
***********************************  */
function activateKeyboardHandler()
{
    keyboardHandler.activate();
}

function deactivateKeyboardHandler()
{
    keyboardHandler.deactivate();
}
function coloraIstruzione(nr){
    sbiancaIstruzione();
    document.getElementById('istruzione'+nr).style.backgroundColor='#FFCC66';
    document.getElementById('istruzione'+nr).style.border='1px solid #F29E00';
};
function sbiancaIstruzione(){
    var i=2;
    while (document.getElementById('istruzione'+i)!= null) {
        document.getElementById('istruzione'+i).style.backgroundColor='#ffffff';
        document.getElementById('istruzione'+i).style.border='0px solid #ffffff';
        i++;
    }
};

/* *************************************
 * Esegue lo switch dei layer
 ************************************ */
function SwitchLayer(layerName) {
    var layer = map.getLayerByName(layerName);
    if (layer.minZoomVisibleLevel != null )
    {
        if (layer.minZoomVisibleLevel > layer.map.zoom)
        {                        
            alert(mapNotVisible);            
            return; 
        }
    }
    
    //Set button as selected
    layer.map.setBaseLayer(layer);
    if(layer.backgroundColor != null){
        layer.map.viewPortDiv.style.backgroundColor = layer.backgroundColor;
    }else{
        layer.map.viewPortDiv.style.backgroundColor = null;
    }
            
    if (layerSwitcher.overlay && layerSwitcher.overlay.length > 0)
    {
        for(var i = 0;i<layerSwitcher.overlay.length;i++){
            layerSwitcher.overlay[i].setVisibility(false);
        }
    }
    if (layer.overlay && layer.overlay.length > 0)
    {
        for(var i = 0;i<layerSwitcher.overlay.length;i++){
            if(layer.overlay[i]){
                layerSwitcher.overlay[i] = layer.map.getLayerByName(layer.overlay[i]);
                layerSwitcher.overlay[i].setVisibility(true);
            }
        }
    }        
}

/**********************************************************************************
*	 PROCEDURA PER LA VISUALIZZAZIONE DELL'ANTEPRIMA DI STAMPA/DETTAGLIO
**********************************************************************************/
function stampa() {
	var olon = new MW.Format.OLON();	
	olonSaveStrMap = olon.write(map, true);  
	if (printWin!=null)
	{
		printWin.close();
	}	         
	
	//recuperiamo i parametri in query string per vedere se ï¿½ stata selezionata una lingua
	var queryParams = window.location.search.substring(0);

   printWin = window.open('./faces/print.jsp'+ queryParams,'','');
   printWin.focus();	
}


/* *************************************
 * Esegue lo switch dei div dei percorsi
 ************************************ */
function switchRicercaPercorsi(){	
	
	//nascondiamo l'eventuale pannello dell'autocompletamento
	if (trovaLocalitaDiv != null){
		trovaLocalitaDiv.className = "hidden";
	}
    
    
	if (document.getElementById('ricercaPercorsiLocDiv').className.indexOf('show')>=0)
	{
		document.getElementById('ricercaPercorsiLocDiv').className = document.getElementById('ricercaPercorsiLocDiv').className.replace('show','hidden');
		document.getElementById('ricercaPercorsiNomeDiv').className = document.getElementById('ricercaPercorsiNomeDiv').className.replace('hidden','show');
	}
	else
	{
		document.getElementById('ricercaPercorsiLocDiv').className = document.getElementById('ricercaPercorsiLocDiv').className.replace('hidden','show');
		document.getElementById('ricercaPercorsiNomeDiv').className = document.getElementById('ricercaPercorsiNomeDiv').className.replace('show','hidden');
	}
}

/* *************************************
 * Esegue lo switch dei div degli itinerari
 ************************************ */
function switchRicercaItinerario(){
	
	//nascondiamo l'eventuale pannello dell'autocompletamento
	if (trovaLocalitaDiv != null){
		trovaLocalitaDiv.className = "hidden";
	}
    
	if (document.getElementById('ricercaItinerarioLocDiv').className.indexOf('show')>=0)
	{
		if(map.getZoom() < 3)
		{
			alert(selItinPerPuntiDisabled + ' ' + scaleArray[3]);
		}
		else
		{
			document.getElementById('ricercaItinerarioLocDiv').className = document.getElementById('ricercaItinerarioLocDiv').className.replace('show','hidden');
			document.getElementById('ricercaItinerarioPuntiDiv').className = document.getElementById('ricercaItinerarioPuntiDiv').className.replace('hidden','show');
			
			//Aggiungiamo il layer dei punti selezionabili in mappa
	    	/*map.addLayer(layerPuntoSel);*/
		}
	}
	else
	{
		document.getElementById('ricercaItinerarioLocDiv').className = document.getElementById('ricercaItinerarioLocDiv').className.replace('hidden','show');
		document.getElementById('ricercaItinerarioPuntiDiv').className = document.getElementById('ricercaItinerarioPuntiDiv').className.replace('show','hidden');
				
		//Rimuoviamo il layer dei punti selezionabili in mappa
		/*if(map.getLayersByName('PUNTO SELEZIONABILE').length > 0)
			map.removeLayer(layerPuntoSel);		
                */
	}
}

/* *************************************
 * Mostra o nasconde il div della legenda
 ************************************ */
function showLegendContents(){
	if ($('legendContentsDiv').className.indexOf('show')>=0)
	{
		$('legendContentsDiv').className = $('legendContentsDiv').className.replace('show','hidden');
		$('sbImgLegendDiv').src='img/ripristina.gif';
	}
	else
	{
		$('legendContentsDiv').className = $('legendContentsDiv').className.replace('hidden','show');
		$('sbImgLegendDiv').src='img/nascondi.gif';
	}
}

/* *************************************
 * Mostra o nasconde il div dei risultati
 ************************************ */
function showResultsContents(){
	if ($('resultsContentsDiv').className.indexOf('show')>=0)
	{
		$('resultsContentsDiv').className = $('resultsContentsDiv').className.replace('show','hidden');
		$('sbImgResultsDiv').src='img/ripristina.gif';
	}
	else
	{
		$('resultsContentsDiv').className = $('resultsContentsDiv').className.replace('hidden','show');
		$('sbImgResultsDiv').src='img/nascondi.gif';
	}
}

/* *************************************
 * Mostra o nasconde il div dei risultati sulla base del parametro impostato
 ************************************ */
function showResultsDiv(show){
	if (show=='true')
	{
		$('risultatiDiv').className = $('risultatiDiv').className.replace('hidden','show');
		toggleSideBar('open');
	}
	else
	{
		$('risultatiDiv').className = $('risultatiDiv').className.replace('show','hidden');
	}
}

/* *************************************
 * Crea la legenda a partire dai parametri impostati
 ************************************ */
function createLegend(){
	$('legendContentsDiv').innerHTML = $('tempLegendContainer').innerHTML;
}

function successXslLocalitaFunc(request) {
    xslLocalita = request.responseXML;
}

function failureXslLocalitaFunc(request) {
	alert(xslLocalitaLoadError);
}

function successXslPercorsiFunc(request) {
    xslPercorsi = request.responseXML;
}

function failureXslPercorsiFunc(request) {
	alert(xslPercorsiLoadError);
}

function successXslDettaglioPercorsoFunc(request) {
    xslDettaglioPercorso = request.responseXML;
}

function failureXslDettaglioPercorsoFunc(request) {
	alert(xslPerDetailLoadError);
}

function successXslItinerarioFunc(request) {
    xslItinerario = request.responseXML;
}

function failureXslItinerarioFunc(request) {
	alert(xslItinerarioLoadError);
}

function successXslDettaglioItinerarioFunc(request) {
    xslDettaglioItinerario = request.responseXML;
}

function failureXslDettaglioItinerarioFunc(request) {
	alert(xslItDetailLoadError);
}

/* *************************************
 * Attiva o disattiva l'info sulla mappa
 ************************************ */
function switchInfo(actived){
	//Ripuliamo eventuali selezioni presenti in mappa
	clearMapSelection();
	
	infoActived = !infoActived;
	if (actived!=null)
	{
		infoActived = (actived == "true");
	}
	if (infoActived)
	{
		$('infoDiv1').className = $('infoDiv1').className.replace('unselected','selected');
		$('infoDiv2').className = $('infoDiv2').className.replace('unselected','selected');
		$('infoDiv3').className = $('infoDiv3').className.replace('unselected','selected');
		$('infoDiv1').getElementsByTagName('a')[0].innerHTML = disattivaInfo;
		$('infoDiv2').getElementsByTagName('a')[0].innerHTML = disattivaInfo;
		$('infoDiv3').getElementsByTagName('a')[0].innerHTML = disattivaInfo;
		$('infoDiv1').getElementsByTagName('a')[0].title = disattivaInfo;
		$('infoDiv2').getElementsByTagName('a')[0].title = disattivaInfo;
		$('infoDiv3').getElementsByTagName('a')[0].title = disattivaInfo;
		//Attivo il controllo dell'info
		navToolBar.activateControl(navToolBar.controls[2]);
	}
	else
	{
		if ($('infoDiv1').className.indexOf('unselected')<0)
		{
			$('infoDiv1').className = $('infoDiv1').className.replace('selected','unselected');
			$('infoDiv2').className = $('infoDiv2').className.replace('selected','unselected');
			$('infoDiv3').className = $('infoDiv3').className.replace('selected','unselected');
			$('infoDiv1').getElementsByTagName('a')[0].innerHTML = attivaInfo;
			$('infoDiv2').getElementsByTagName('a')[0].innerHTML = attivaInfo;
			$('infoDiv3').getElementsByTagName('a')[0].innerHTML = attivaInfo;
			$('infoDiv1').getElementsByTagName('a')[0].title = attivaInfo;
			$('infoDiv2').getElementsByTagName('a')[0].title = attivaInfo;
			$('infoDiv3').getElementsByTagName('a')[0].title = attivaInfo;
		}
		//Attivo il controllo del pan
		navToolBar.activateControl(navToolBar.controls[0]);
	}
}

/* *************************************
 * Imposta l'html di risposta all'info
 ************************************ */
    function setHTML(response) {
	    var xmlResponse = response.responseXML;
	    if (!xmlResponse || response.fileType!="XML") {
	    	xmlResponse = OpenLayers.parseXMLString(response.responseText);
	    }
    };
	
/* *************************************
 * Funzione per il ripristino della modalitï¿½ di default sui cambi ricerca
 ************************************ */
function setPanMode() {
	//disattivo l'info
	switchInfo("false");
	//attivo il controllo per la gestione della ricerca della localitï¿½ a partire da punto
	navToolBar.activateControl(navToolBar.controls[0]);
}
	
	
/* *************************************
 * Funzione per lo scarico della cartografia dalla pagina di anteprima di stampa
 ************************************ */
function stampaScaricoCartografia() {
	if (idsTratte==null)
	{
		alert(noScarico);
	}
	else
	{
		//var copyright = downloadCopyright;
		copyrightAlert(urlSentieriWebBackend+"?locale=" +language+"&senum="+numPercorso+"&command=ScaricoCartografia&idsTratte="+idsTratte+"&layerName="+layerNameScaricoCartografia);	    
	}
}



function visualizzaPuntiInMappa(geom)
{
	// <gml:Point><gml:coordinates>667705.299016385,888922.825241797</gml:coordinates></gml:Point>
	geom = geom.replace(/&lt;/g, '<').replace(/&gt;/g, '>');
	geom = '<response xmlns:gml="http://www.opengis.net/gml">'+geom+"</response>"
	
	var gmlObj = new OpenLayers.Format.GML();
	var features = gmlObj.read(geom);
	
	if (vectorLayer != null)
	{
		this.vectorLayer.destroyFeatures();
	}
	//else
	//{
		var style= {
	        strokeColor: "yellow",
	        strokeOpacity: 0.7,
	        strokeWidth: 5,
	        pointRadius: 6,
	        pointerEvents: "visiblePainted"
	   };
		   
		var options = {
		   style: style,
		   displayInLayerSwitcher:false
		}	
	    vectorLayer = new OpenLayers.Layer.Vector("Punti",options);
	    map.addLayer(vectorLayer);
	//}
	
	vectorLayer.addFeatures(features);	
}
