Roja.Control.FloatingPanel.Info.GetFeatureInfo.prototype.loadFeature = function() {
        var uri = this.url;
        if (Roja.Proxy && this.url.startsWith("http")) {
            uri = Roja.Proxy + Roja.Util.escapeUri(this.url);
        }
        
        if ( !(this.url && this.layers && this.featureCount) ) {
            OpenLayers.Console.error("Some parameters are missing");
        }
        else {
            uri += 'REQUEST=GetFeatureInfo'
                + '&INFO_FORMAT=' + this.info_format
                + '&FORMAT=jpeg'
                + '&SRS=' + this.srs
                + '&VERSION=1.1.1'
                + '&HEIGHT=' + this.map.size.h
                + '&WIDTH=' + this.map.size.w
                + '&X=' + this.xy.x
                + '&Y=' + this.xy.y
                + '&BBOX=' + this.map.getExtent().toBBOX()
                + '&FEATURE_COUNT=' + this.featureCount
                + '&QUERY_LAYERS=' + this.layers.join(",")
                + '&STYLES=' 
                + '&LAYERS=' + this.layers.join(",");        
        }
        new OpenLayers.Ajax.Request(
            uri, 
            {   method: 'get', 
                parameters: null,
                onComplete: this.successLoadFeature.bind(this),
                onFailure: this.errorLoadFeature.bind(this)
            }
        );
    }
    
    
    /**
    * @private
    * Method: successLoadFeature
    * This method is called when the WMS request 
    * is sent successfully.
    * Set the main div content with the html received.
    * 
    * Parameters:
    * response
    */
    Roja.Control.FloatingPanel.Info.GetFeatureInfo.prototype.successLoadFeature = function (response) {
    	/*if ( (response.responseXML && response.responseXML.getElementsByTagName('ServiceException')[0] != null) 
            || this.statusCode == "loadFailure") {
            OpenLayers.Console.error('Error in response from server: ' + response.responseText);
            this.divInfo.innerHTML = "<b>Errore nella richiesta, contattare l'amministratore.<b>";
        }
        else if (response.responseText) {
	        if (this.info_format.toUpperCase()=='TEXT/HTML') {
	        	var bodyLength = 6;
	            var r = response.responseText;
	            // Ottine la parte di html contenuta all'interno del tag body
	            var body = r.substring(r.indexOf("<body>") + bodyLength, r.indexOf("</body>"));
	            // Richiama la stringClean per ripulire la stringa dai caratteri di escape
	            if (this.stringClean(body) == "") {
	                this.divInfo.innerHTML = "<b>Nessun oggetto trovato nell'area selezionata.</b>";
	            }
	            else {
	                this.divInfo.innerHTML = response.responseText; 
	            }   
        	} else {        	
	        	var xml = response.responseText;
	        	
	        	xml = this.replaceSpecialChars(xml);
	        	var html = Roja.transformXml(xml,this.xsl);
			html=html.replace(/&lt;/g , "<");
			html=html.replace(/&gt;/g , ">");
			
			//Remove html page tags
			html=html.substring(html.indexOf('<body>'));
			html=html.substring(0,html.indexOf('</body>'));
			this.divInfo.innerHTML = html;				
        	}
        }  
        this.statusCode = "loadComplete";
        this.events.triggerEvent("loadComplete");
        this.div.style.display = 'block';
        this.div.style.height = this.size.h + 'px'; 
        var sizechild = this.size.h - 25;
        this.childElement.style.height = sizechild + 'px';
        //if child Element is not present (p.e. toggleChild has be run), when this insert it
        if (document.getElementById(this.childElement.id)==null) {
            this.div.appendChild(this.childElement);
            var imgReset = document.getElementById('sbImgNascondi' + this.idname);
            if(imgReset!=null) {
                // Substitute the image
                imgReset.src = OpenLayers.ImgPath + 'floating/nascondi.gif';
            }
        } */
        this.loading.stopLoad();       
      	info.deactivate();  
     }
     
    
   /** 
     * Method: redraw
     * Goes through and takes the current state of the Map and rebuilds the
     *     control to display that state. Groups base layers into a 
     *     radio-button group and lists each data layer with a checkbox.
     *
     * Returns: 
     * {DOMElement} A reference to the DIV DOMElement containing the control
     */  
    Roja.Control.SimpleLayerSwitcher.prototype.redraw = function() {
        //if the state hasn't changed since last redraw, no need 
        // to do anything. Just return the existing div.
        if (!this.checkRedraw()) { 
            return this.div; 
        } 
		
        //clear out previous layers 
        this.clearLayersArray();
        
        var containsBaseLayers = false;
        
        // Save state -- for checking layer if the map state changed.
        // We save this before redrawing, because in the process of redrawing
        // we will trigger more visibility changes, and we want to not redraw
        // and enter an infinite loop.
        this.layerStates = [];//new Array(this.map.layers.length);
        for (var i = 0; i < this.map.layers.length; i++) {
            var layer = this.map.layers[i];
            if(layer.CLASS_NAME == 'Roja.Layer.WMS' && layer.layers != null && layer.layers.length > 0) {
            	for(var j=0; j<layer.layers.length;j++) {
            		var state = {
	            		'name': layer.logicalName, 
               			'visibility': layer.visibility,
                		'inRange': layer.inRange,
                		'id': layer.id
	            	}
	            	this.layerStates.push(state);
            	}	
            }
            else {
            	var state = {
            		'name': layer.name, 
	                'visibility': layer.visibility,
	                'inRange': layer.inRange,
	                'id': layer.id
            	}
            	this.layerStates.push(state);
            	/*this.layerStates[i] = {
	                'name': layer.name, 
	                'visibility': layer.visibility,
	                'inRange': layer.inRange,
	                'id': layer.id
            	};*/
            }
        }    

        //var layers = this.map.layers.slice();
        var layers = this.getAllLayers();
        if (!this.ascending) { layers.reverse(); }
	    
	    //reset input checkbox of groups
	    if (this.layerMoreDiv && this.layerMoreDiv!=null)
	    {
	        var groups = this.overlayDiv.childNodes;
	        for(var k=0; k<groups.length; k++) {
	            var group = groups[k];
	            group.getElementsByTagName('input')[0].checked=false;
	            group.getElementsByTagName('input')[0].defaultChecked=false;
	        }
	    }
	    //controllo se esiste almeno un layer con il gruppo associato
	    var hasGroups = false;
	    for( var i = 0; i < layers.length && hasGroups == false; i++) {
	    	if(layers[i].group != null && layers[i].group != '')
	    	  hasGroups = true;  
	    }
	    
	
        var j=0;
        for( var i = 0; i < layers.length; i++) {
            var layer = layers[i];
            var baseLayer = layer.isBaseLayer;
			
			/* this section is cut, hiding the base layers for sardegnamappe use*/
			if (layer.displayInLayerSwitcher && !baseLayer && layer.name != "GeocodedAddresses")
          	  {
          	  	
          	  //	console.log(this);
   			
          	  	
            	if (this.layerMoreDiv==null )
            		{
	                this.layerMoreDiv = document.createElement("div");
					this.layerMoreDiv.id = this.id + "_layermorediv";
	                this.layerMoreDiv.className = "buttonClassUnselected moreDivUnselected";
					       
					// create span
	                var labelSpan = document.createElement("span");
	                
	                labelSpan.innerHTML = this.titleMore;
	                
	                this.layerMoreDiv.appendChild(labelSpan);
	                
	                this.overlayDiv = document.createElement("div");
					this.overlayDiv.id = this.id + "_overlaydiv";
	         /*       this.overlayDiv.className = "overlayDiv hidden";*/
	         		this.overlayDiv.className = "overlayDiv";
	                
	                var context = {
	                	'layerMoreDiv': this.layerMoreDiv,
	                    'overlayDiv': this.overlayDiv,
	                	'layerSwitcher': this
	                }
					
					OpenLayers.Event.observe(this.layerMoreDiv, "mouseup", OpenLayers.Function.bindAsEventListener(this.showOverlayDivEvent,context));
					
					//this corrects malfunctions in IE7&8									
					while(document.getElementById('tematismi75').hasChildNodes())
						{
						document.getElementById('tematismi75').removeChild(document.getElementById('tematismi75').firstChild); 
						}
					document.getElementById('tematismi75').appendChild(this.layerMoreDiv);
					
					
                    this.div.appendChild(this.overlayDiv);
            	}
            	
            	
            	//creare nuovo div del layer
            	var rowDiv = document.createElement("div");
                rowDiv.id = "div_" + layer.name;
                if(hasGroups)   
                    rowDiv.className = "layerDiv";         


		        if (layer.legendUrl) {
               	var legendDiv = this.createLegendDiv(layer);
	            var IconLayerSpan = document.createElement("span");
	            
		        IconLayerSpan.innerHTML = '<img src="'+baseUrl+'/roja/resources/img/plus2.gif" />';
		        if(this.legend[legendDiv.id] == 'block') {
			        IconLayerSpan.innerHTML = '<img src="'+baseUrl+'/roja/resources/img/minus2.gif" />';
		        }
		        rowDiv.appendChild(IconLayerSpan);
		        IconLayerSpan.className = "IconLayertitle";
		        }

                // create input element
                var inputElem = document.createElement("input");
                inputElem.id = "input_" + layer.name + "_" +i;
                inputElem.name = layer.name;
                inputElem.type = "checkbox";
                inputElem.value = layer.name;
                inputElem.className = "inputLayerDiv";  
                
                var checked = null;
                var enabled = null;
                if(layer.CLASS_NAME == 'Roja.WMSLayer') {
                    checked = layer.calculateInRange(this.map.getZoom()) && layer.getVisibility();
                    enabled = layer.calculateInRange(this.map.getZoom());
                }
                else {
                    checked = layer.calculateInRange() && layer.getVisibility();
                    enabled = layer.calculateInRange();
                }
                if (!enabled) {
                    inputElem.disabled = "disabled";
                }
                else {
                    inputElem.disabled = "";
                }
                inputElem.checked = checked;
                inputElem.defaultChecked = checked;
                rowDiv.appendChild(inputElem);
                
                                
                var labelSpan = document.createElement("span");
                labelSpan.innerHTML = layer.name;
                labelSpan.className = 'titleLayer'
                rowDiv.appendChild(labelSpan);
                if (layer.legendUrl) {
                //	var legendDiv = this.createLegendDiv(layer);
	                rowDiv.appendChild(legendDiv);
	            }
                
                
  				var context = {
                    'overlay': layer,
                    'inputElem': inputElem,
                    'layerSwitcher': this,
                    'legendDiv': legendDiv,
                    'legend': this.legend
               }
                
                OpenLayers.Event.observe(inputElem, "mouseup", OpenLayers.Function.bindAsEventListener(this.onInputOverlayClick,context));

                OpenLayers.Event.observe(inputElem, "keyup", OpenLayers.Function.bindAsEventListener(this.onInputOverlayKeyPress,context));
                
                //OpenLayers.Event.observe(labelSpan, "mouseup", OpenLayers.Function.bindAsEventListener(this.onInputOverlayClick,context));
                if (layer.legendUrl) {
	            OpenLayers.Event.observe(labelSpan, "mouseup", OpenLayers.Function.bindAsEventListener(this.onTitleLayerClick,context));
                OpenLayers.Event.observe(IconLayerSpan, "mouseup", OpenLayers.Function.bindAsEventListener(this.onTitleLayerClick,context));
                }
                
                                                    
                if (this.overlayDivOpened)
                {
                    this.showOverlayDiv();
                }
            	
            	
                //insert new group if not exist
                if(hasGroups) {
                    this.insertLayerDivToOverlay(rowDiv, layer,checked,enabled)	
                }
                else {
                	this.overlayDiv.appendChild(rowDiv);
                }
                
            }
        }
                
        //mettere alla fine il layer altri temi
        /*if(hasGroups && this.outGroupDiv != null) {
        	//this fixs malfunctions in IE7&8									
		//	while(this.overlayDiv.hasChildNodes())
			//			{
						this.overlayDiv.removeChild(this.outGroupDiv);	 
				//		}
            this.overlayDiv.appendChild(this.outGroupDiv);
        }*/
        //mettere alla fine il layer altri temi
        /* modifica del 2010.09.14 - andrea: corregge 
         * il malfunzionamento tra l'etichetta Tematismi e Strumenti, 
         * per cui gl istrumenti non switchavano nè funzionavano correttamente
         */
       /* if (document.getElementById('contenitore_tematismi').style.display=='block' && document.getElementById('contenitore_tematismi').style.visibility=='visible') {
			if(hasGroups && this.outGroupDiv != null) {
				this.overlayDiv.removeChild(this.outGroupDiv);	
				this.overlayDiv.appendChild(this.outGroupDiv);
			}
		}*/
        return this.div;
    }
    
    //ridefinizione metodo per evitare un bug nella overview: la mappa di ov si vede spostata rispetto al centro
	Roja.Control.FloatingPanel.Overview.prototype.update =  function() {
        //Update must not run if overview map is hidden. 
        //This is true if the document page doesn't contain childElement element.
        if (document.getElementById(this.childElement.id)==null) {
        	return;
        }
        if(this.ovmap == null) {
			this.createMap();
		}
		//Bloccato per evitare lo spostamento dell'overview
		if(!this.isSuitableOverview()&&this.map.getZoom()==0) {
			//this.updateOverview();
		}

		// update extent rectangle
		this.updateRectToMap();

	}
	
    

