
/**
*	Inicialitzaciķ del mapa a partir de la configuraciķ del legend.xml
*/
function loadMap() {
	try{
		initProj4js();

		var hasWfs=false;
		
		OpenLayers.ImgPath="img/";

		// array on guardem els services que han fallat.
		failedImageLoad=new Array();

		if (typeof(treeContent.servicesTimedOut)!="undefined") {
			for (var i=0;i<treeContent.servicesTimedOut.length ; i++){
				var d=new Date();
				failedImageLoad.push(d.getHours()
									+":"+( (d.getMinutes()<10) ? '0'+d.getMinutes() : d.getMinutes() )
									+":"+( (d.getSeconds()<10) ? '0'+d.getSeconds() : d.getSeconds() )
									+" Timeout verificant '"+treeContent.servicesTimedOut[i].desc+"'");
			}
		//	if (treeContent.servicesTimedOut.length>0) showErrorMessages();
		}

		OpenLayers.Util.onImageLoadError = function() {
			
			// busquem quin service ha fallat a partir de la url
			var theUrl=this.src;
			var numberOfLayers=treeContent.getServiceCount();
			var i=0; var trobat=false; var modificat=false;
			while (i<numberOfLayers && !trobat){
				var service=treeContent.services[i];
				if (theUrl.indexOf(service.url)>-1) {
					trobat=true;
					var d=new Date();
					//var str=d.getDate()+"-"+(d.getMonth()+1)+"-"+d.getFullYear()+" "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds();
					var str=d.getHours()
									+":"+( (d.getMinutes()<10) ? '0'+d.getMinutes() : d.getMinutes() )
									+":"+( (d.getSeconds()<10) ? '0'+d.getSeconds() : d.getSeconds() );
					str+=" No es pot carregar '"+service.desc+"'";
					if (!failedImageLoad.contains(str)) {
						failedImageLoad.push(str);
						modificat=true;
					}
					//if (failedImageLoad.length>3) failedImageLoad=failedImageLoad.slice(failedImageLoad.length-3,failedImageLoad.length);// deixa els 3 més recents.
				} else i++;
			}
/*			if (modificat){
				showErrorMessages();
			}*/

			this.src = "img/blanc.gif";
			this.style.display = "";
		};

		OpenLayers.ProxyHost=proxyUrl;//utilitzat en peticions wfs. Definit al config.js

		// definim mapa i apliquen configuracions del legend
		var mapConfig ={controls:[]
						,units: "m" // valors per defecte. Despres sobrecarreguem amb config del legend.
						,projection: new OpenLayers.Projection( "EPSG:25831")
						,theme:null // per despres poder carregar estils propis CSS
						//,displayProjection: new OpenLayers.Projection("EPSG:4326")
						}
		map = new OpenLayers.Map( 'map' , mapConfig);

		OpenLayers.DOTS_PER_INCH = 96; // important: ajustar-ho al mateix valor que el servidor per tenir les escales correctes

		setMapConfig(treeContent,map);

		setMapLayers(treeContent,map);

		setMapIdentify(treeContent,map);

		setMapControls(treeContent,map);

		setMeasureControl(map);

		if (treeContent.conf_xmin!=null && treeContent.conf_ymin!=null && treeContent.conf_xmax!=null && treeContent.conf_ymax!=null && // si han definit l'extensio al legend tag <persona> l'utilitzem per centrar.
				treeContent.conf_xmin!="" && treeContent.conf_ymin!="" && treeContent.conf_xmax!="" && treeContent.conf_ymax!="") {
			var bounds=new OpenLayers.Bounds(treeContent.conf_xmin,treeContent.conf_ymin,treeContent.conf_xmax,treeContent.conf_ymax);
			map.zoomToExtent(bounds,true); // param2: Find the zoom level that most closely fits the specified bounds.  Note that this may result in a zoom that does not exactly contain the entire extent		
		}else{
			map.zoomToMaxExtent();
		}
			
	    
		//Inicialitzaciķ de l'objecte streetview

		widgetMaps("Google Street View", map.getCenter(), false);	

       map.div.oncontextmenu = function noContextMenu(e) {
        return false;
       };
    
        map.events.register('mousedown', map, function (e) {
			if (OpenLayers.Event.isRightClick(e)) {
				//alert(e.layerX + " - " + e.layerY);
//				var lonlat = map.getLonLatFromViewPortPx(new OpenLayers.Pixel(e.layerX,e.layerY));
				var lonlat = map.getLonLatFromViewPortPx(e.xy);
				StreetViewClick = lonlat;
				document.getElementById("streetview").innerHTML = "";
			
				var proj = new OpenLayers.Projection("EPSG:4326");
				var point = new OpenLayers.LonLat(lonlat.lon, lonlat.lat);
				point=point.transform(map.getProjectionObject(),proj);
				var theloc = new GLatLng(point.lat,point.lon);
				streetview.setLocationAndPOV(theloc);

				$('#windowMapes').dialog({width:450,height:360,resizable:true,position: 'right',show: 'slide', close: amagaNinoGoogleMaps});
				$('#windowMapes').dialog('open');
			}
		}) ;



		//var ngInfo=new OpenLayers.Control.NGIdentify({title:getLangDescription("info"),id:"identify",src:"./img/identify.gif",windowWidth:500,windowHeight:500,displayClass:"olControlButton"})

	
	   
	      
		/*if (treeContent.conf_xmin!=null && treeContent.conf_ymin!=null && treeContent.conf_xmax!=null && treeContent.conf_ymax!=null &&
			treeContent.conf_xmin!="" && treeContent.conf_ymin!="" && treeContent.conf_xmax!="" && treeContent.conf_ymax!="") {
			map.zoomToExtent(new OpenLayers.Bounds(treeContent.conf_xmin,treeContent.conf_ymin,treeContent.conf_xmax,treeContent.conf_ymax)); 
		} else {
			map.zoomToExtent(new OpenLayers.Bounds(413333.28666682134,4576971.827139697,436035.0840634522,4585379.90024956)); 
		}*/
	}
	catch (e){
		alert("Error a loadMap()\n"+e.message);
	}
}

function amagaNinoGoogleMaps() {
	if(typeof(LayerMarcadors) != 'undefined' ){
		if(LayerMarcadors.features.length > 0){
			LayerMarcadors.destroyFeatures();
		}
	}
}

function addMarcadorStreetView(coordX, coordY,sufix){

	if(typeof(LayerMarcadors) == 'undefined' ){
		LayerMarcadors= new OpenLayers.Layer.Vector("Overlay");
	    map.addLayer(LayerMarcadors);
	}
	if(LayerMarcadors.features.length > 0){
    	LayerMarcadors.destroyFeatures();
	}
    var feature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(coordX, coordY),
    {some:'data'},
    {externalGraphic: 'img/ninostview' + sufix + '.gif', graphicHeight: 31, graphicWidth: 31, graphicXOffset:-15,graphicYOffset:-30});
    LayerMarcadors.addFeatures(feature);
	if(sufix.length > 0){
		map.panTo(new OpenLayers.LonLat(coordX,coordY));
	}else{
		centraMapaAStreetView();
	}
}

function handleNoFlash(errorCode) {

	var errDesc;
	switch(errorCode){
		case 600:
			if(typeof(StreetViewClick) != 'undefined'){
				addMarcadorStreetView(StreetViewClick.lon,StreetViewClick.lat,'_disabled');
				
				errDesc = "<div style='height:60px;'></div><br><center><h2>No hi ha dades d'StreetView (Vista del carrer) en aquesta posiciķ del mapa</h2></center>";
			}
		break;
		case 601:
			errDesc = "";
		break;
		
		case 603:
			errDesc = "";
		break;
	}
	streetview.remove();
	document.getElementById("streetview").innerHTML = errDesc;
	/*	if (errorCode == "600")alert("Error: No hi ha foto panorāmica.");
	if (errorCode == "601")alert("Error: No hi ha fotos d'usuari.");
	if (errorCode == "603")alert("Error: El seu navegador no soporta flash.");*/
}



function openView(pt){
/*	if(document.getElementById("dhtmlgoodies_floating_window0").style.display=="block")activatNino=false;//desactivem icona del nino
	else{*/
		//activatNino=true;//activem icona del nino
		var proj = new OpenLayers.Projection("EPSG:4326");
		var point = new OpenLayers.LonLat(pt.lon, pt.lat);
		point=point.transform(map.getProjectionObject(),proj);
		//if (document.getElementById("dhtmlgoodies_floating_window0"))openFloatingWindow();
		$('#windowMapes').dialog({width:450,height:360,resizable:true,position: right,show: 'drop'});
		$('#windowMapes').dialog('open');
		widgetMaps("Google Street View", point, true);
		
//	}
}


/**
* Handle widget map creation and panning
* @param {string} maptype
* @param {Object} longlat
* @param {boolean} reset
*/
function widgetMaps(maptype, longlat, reset) {
	
	if (maptype == "Virtual Earth") {//no el fem servir (11/03/2010)
		if (vemap == null) {
			vemap = new VEMap('vemap');
			vemap.LoadMap(new VELatLong(longlat.lat, longlat.lon), map.getZoom() + 13,VEMapStyle.Hybrid);
		}

		if (reset) vemap.SetMapMode(VEMapMode.Mode2D);
		vemap.SetMapStyle(VEMapStyle.Road);
		vemap.SetScaleBarDistanceUnit(VEDistanceUnit.Kilometers);
		vemap.SetZoomLevel(map.getZoom() + 13);
		vemap.PanToLatLong(new VELatLong(longlat.lat, longlat.lon));

	}else if (maptype == "Google Street View") {
		var theloc = new GLatLng(longlat.lat,longlat.lon);
		if (streetview == null || reset) {
			streetview = new GStreetviewPanorama(document.getElementById("streetview"));
			GEvent.addListener(streetview, "error", handleNoFlash);
			GEvent.addListener(streetview, 'initialized', canviPosStreetView);
		}
		streetview.setLocationAndPOV(theloc);
	}
	else { return; }
}

//Event que es produeix quan l'usuari canvia de posiciķ
//
function canviPosStreetView() {
   var pt = PTStreetView2Visor();
   if (pt != null) {
	   addMarcadorStreetView(pt.lon,pt.lat,'');
   }
}

//Funciķ que torna un Openlayers point reprojectant
//les coordenades en que es troba l'streetview a la projecciķ del mapa
function PTStreetView2Visor(){
  var glatLon =  streetview.getLatLng();
  if(glatLon != null && typeof(glatLon) != 'undefined'){
   var ptStreetView = new OpenLayers.LonLat(glatLon.x, glatLon.y);
   var proj = new OpenLayers.Projection("EPSG:4326");
   var ptVisor=ptStreetView.transform(proj,map.getProjectionObject());
   return ptVisor;
  }
  return null;
}

function centraMapaAStreetView(){
   var pt = PTStreetView2Visor();
   if (pt != null) {
	   map.panTo(pt);
   }
}


function centraEscala(coordX, coordY, zoom){
	map.setCenter(new OpenLayers.LonLat(coordX, coordY), zoom);
}



/**
* Configuraciķ de projeccions, extensions, escales, resolucions
*/
function setMapConfig(treeContent,map) {
	if (treeContent.map_projection!=null && treeContent.map_projection.length>0){
		map.projection=treeContent.map_projection;
	}
	if (treeContent.map_projection_units!=null && treeContent.map_projection_units.length>0){
		map.units=treeContent.map_projection_units;
	}
	if (treeContent.map_tilesize_x!=null && treeContent.map_tilesize_y!=null){
		map.tileSize=new OpenLayers.Size(treeContent.map_tilesize_x,treeContent.map_tilesize_y);
	}
	if (treeContent.map_maxExtent_xmin!=null && treeContent.map_maxExtent_ymin!=null && treeContent.map_maxExtent_xmax!=null && treeContent.map_maxExtent_ymax!=null){
		var b=new OpenLayers.Bounds(treeContent.map_maxExtent_xmin,treeContent.map_maxExtent_ymin,treeContent.map_maxExtent_xmax,treeContent.map_maxExtent_ymax);
		map.maxExtent=b;
	}
	if (treeContent.map_restrictedExtent_xmin!=null && treeContent.map_restrictedExtent_ymin!=null && treeContent.map_restrictedExtent_xmax!=null && treeContent.map_restrictedExtent_ymax!=null){
		var b=new OpenLayers.Bounds(treeContent.map_restrictedExtent_xmin,treeContent.map_restrictedExtent_ymin,treeContent.map_restrictedExtent_xmax,treeContent.map_restrictedExtent_ymax);
		map.restrictedExtent=b;
	}
	if (treeContent.map_scalesArray!=null && treeContent.map_scalesArray.length>0){
		var resArray=new Array(treeContent.map_scalesArray.length);
		for(var nesc=0;nesc<resArray.length;nesc++){
			resArray[nesc]=OpenLayers.Util.getResolutionFromScale(treeContent.map_scalesArray[nesc],map.units);
		}
		map.resolutions=resArray;
	} else if (treeContent.map_maxScale!=null && treeContent.map_minScale!=null){
		map.maxResolution=OpenLayers.Util.getResolutionFromScale(treeContent.map_maxScale,map.units);
		map.minResolution=OpenLayers.Util.getResolutionFromScale(treeContent.map_minScale,map.units);
	}
}

/**
* configuraciķ dels layers de l'OL
*/
function setMapLayers(treeContent,map) {
	// recorrem services del legend per anar definint layers de l'OL.
	var numberOfLayers=treeContent.getServiceCount();

	// posem sempre un layer buit.
	var base = new OpenLayers.Layer("dummy",{isBaseLayer: true});
	map.addLayer(base);

	for (var i=0; i<numberOfLayers; i++) {
		var service=treeContent.services[i];
		if (service.type=="wms") {
			var wmsLayers=treeContent.getVisibleLayersNames(service.id);
			var wmsparams={
					service: "WMS",
					layers: wmsLayers, 
					version: "1.1.1",
					request: "GetMap", 
					styles: "",
					exceptions: null,
					format: treeContent.getBestFormat(service.id),
					transparent: (service.url_transparent!=null && service.url_transparent.toLowerCase()==="true") // ull: quan transparent =true pot canviar el format per passar de jpeg a gif o png.
					//,userid: unescape(userId)
			};
			if (typeof(userId)!="undefined") wmsparams.userid=unescape(userId);

			if (service.url_bgcolor!=null) wmsparams.bgcolor=service.url_bgcolor;
			var isBaseLayer=treeContent.map_baseServices.contains(service.id);

			var otherParams={
						isBaseLayer: isBaseLayer,
						buffer:0,
						gutter:0,
						visibility: wmsLayers.length>0,
						singleTile: !service.tiled,
						ratio:1 // si ratio = 1.2 catastro a escala 1000000 no es correspon amb versiķ impresa.
					};
			if (service.minscale!==null && service.maxscale!==null && !isNaN(parseFloat(service.minscale)) && !isNaN(parseFloat(service.maxscale))){
				otherParams.minResolution=OpenLayers.Util.getResolutionFromScale(parseFloat(service.minscale),map.units);// l'escala especificada es visualitzarā.
				otherParams.maxResolution=OpenLayers.Util.getResolutionFromScale(parseFloat(service.maxscale),map.units);
			}
			//console.debug("layer WMS id:"+service.id+" isBaseLayer:"+isBaseLayer);
			var layer = new OpenLayers.Layer.WMS(
					service.id,
					service.urlArray,
					wmsparams,otherParams
			);
			
			if (
				 treeContent.map_baseServices.length===0// si no tenim cap servei definit com a base, els posem tots amb l'efecte de resize pq no ens desapareixi al fen un pan
				 || isBaseLayer // transiciķ resize només els baselayers
				) layer.transitionEffect="resize";
			else layer.transitionEffect="";

			if (service.transparency) layer.setOpacity(parseFloat(100-service.transparency)/100);
			//layer.visibility=service.type!="info";
			map.addLayer(layer);
		
		} else if (service.type=="ags92") {

			var imageExtension=treeContent.getLayerValueByAttributeValue(service.id,"format" ,"#","visible","1");
			if (imageExtension.indexOf("#")>-1) {
				alert("Error a la llegenda: El service amb id='"+service.id+"' te definits layers amb diferents formats d'imatge. S'utilitzarā el primer trobat.");
				imageExtension=imageExtension.substr(0,imageExtension.indexOf("#"));
			}

			var params={
				isBaseLayer: treeContent.map_baseServices.contains(service.id),
				layername: '_alllayers', //TODO: posar el nom del layer?
				type: imageExtension,
				tileOrigin: new OpenLayers.LonLat(treeContent.map_tileOrigin_x,treeContent.map_tileOrigin_y),
				projection: new OpenLayers.Projection(treeContent.map_projection),
				tsize: treeContent.map_tilesize_y,
				ymin: map.maxExtent.bottom
				,maxExtent: map.maxExtent.clone()
			};
			var layer = new OpenLayers.Layer.AGS( 
					service.id, 
					service.urlArray, 
					params
			);
			map.addLayer(layer);

		} else if (service.type=="wfs") {
			var wfsArray = treeContent.getWFSConfigArray(service.id);

			// Capes WFS
			for (var j=0; j<wfsArray.length; j++){
				var wfsLayerID = wfsArray[j].pop();
				var wfsLayerImageWidth = wfsArray[j].pop();
				var wfsLayerImageHeight = wfsArray[j].pop();
				var wfsLayerImagePath = wfsArray[j].pop();

				// Definim l'estil
				var layerStyle = OpenLayers.Util.applyDefaults({
					externalGraphic: wfsLayerImagePath,
					graphicWidth: wfsLayerImageWidth,
					graphicHeight: wfsLayerImageHeight,
					graphicYOffset: 0,
					graphicOpacity: 1
				}, OpenLayers.Feature.Vector.style['default']);

				var layer = new OpenLayers.Layer.WFS( 
						wfsLayerID,
		                service.url,
		                {typename: wfsLayerID,maxfeatures: 200},{style: layerStyle }
					); 
				map.addLayer(layer);

				// Si la capa no estā activa no la mostrem 
				if (!treeContent.isLayerVisible(treeContent.getVisibleLayersNames(service.id), wfsLayerID)){
					layer.setVisibility(false);
				}
			}
		}	
	}// for
}

/**
* Configuraciķ de l'identify.
*/
function setMapIdentify(treeContent,map) {
	if (treeContent.map_controls_identifyButtonsArray.length >1) alert("LLegenda: Només estā suportat un sol boto d'identify.\nRevisa el node <identifyButtons>");

	for (var i=0;i<treeContent.map_controls_identifyButtonsArray.length ;i++ ){		
		var button=treeContent.map_controls_identifyButtonsArray[i];
		//alert("identify buttons: "+button.target+"\n"+button.usercontrol+"\n"+button.block+"\n"+button.service);
		var identifyConfig={
			usercontrol: button.usercontrol,
			target: button.target,
			targetdivid: button.targetdivid,
			treeContent: treeContent,
			service: button.service,
			infoFormat: "gml",
			exceptions: "application/vnd.ogc.se_xml"
		};
		
		map.identifyConfig=identifyConfig;

	}//for
	

	/**
	*	Crea la configuraciķ per fer una peticiķ de identify.
	*/
	/*map.getIdentifyObject = function () {
	
		var identifyParams=new Object();
		// camps per la peticiķ wms
		identifyParams.infoFormat="text/plain";
		//identifyParams.infoFormat="gml";
		identifyParams.exceptions="application/vnd.ogc.se_xml";
		identifyParams.queryLayers=null;

		identifyParams.targetAction="window";

		// capa de l'OL sobre la que fem info. Necessari per muntar url de peticiķ.
		identifyParams.layerObj=null;

		// camps de configuraciķ del popup.
		identifyParams.popupBgcolor="#ffffff";
		identifyParams.popupOpacity=0.8;
		identifyParams.popupBorder="2px solid black";

		// definim l'acciķ a realitzar al rebre la resposta d'info.
//		identifyParams.targetFunction=null; // mostrarā la info a un popup.
		identifyParams.targetFunction=processIdentifyTOCResponse; // cridarā la funciķ
		
		if (typeof(treeContent.serviceInfo)=="undefined") {
			// exemple on fem info al service d'esplugues pois amb els elements triats.
			identifyParams.queryLayers=treeContent.getVisibleLayersNames("ESPLUGUES_POIS");
			identifyParams.layerObj=this.getLayersByName("ESPLUGUES_POIS")[0];
		} else {
			
			// CAS DE SALUT		
			identifyParams.targetAction="popup";
			identifyParams.infoFormat="gml";
			identifyParams.popupSize=new OpenLayers.Size(300,250);
			identifyParams.layerObj=this.getLayersByName(treeContent.serviceInfo.id)[0];
			identifyParams.queryLayers=treeContent.getVisibleLayersNames(null,","); // TODO: falta muntar el dd amb els layers queryables a escollir per fer info.
		}
		
		return identifyParams;
		
	}*/
}

/**
* configuraciķ dels controls del mapa: barra canvi d'escala, mostrar coordenades del punt, escalimetre, mapa overview, botons canvi cartografia tipus google,...
*/
function setMapControls(treeContent,map) {

	var nav = new OpenLayers.Control.Navigation({'zoomWheelEnabled': true});
	map.addControl(nav);

	var loadingPanel = new OpenLayers.Control.LoadingPanel();
	map.addControl(loadingPanel);

	var ngInfo = new OpenLayers.Control.NGIdentify({title: getLangDescription("info"), 
															windowWidth:500,
															windowHeight:500,
														    displayClass: "olControlIdentify"});

	var ngKmlButton = new OpenLayers.Control.Button({	title: getLangDescription("downloadkml"),
														trigger: function() {
															if (this.map) {
																//googleEarthClick();
																downloadKML();
															}
														},
														displayClass: "olControlKML"});
	

	var ngPdfButton = new OpenLayers.Control.Button({	title: getLangDescription("downloadpdf"),
														trigger: function() {
															if (this.map) {
																downloadPdf();
															}
														},
														displayClass: "olControlPDF"});

	var ngHelpButton = new OpenLayers.Control.Button({	title: getLangDescription("helpusuari"),
														trigger: function() {
															downloadHelp();
														},
														displayClass: "olControlHelp"});

	var panel = new OpenLayers.Control.Panel({defaultControl: ngInfo,'div':OpenLayers.Util.getElement('toolbarDivOL')});
            panel.addControls([
				ngInfo,
				ngKmlButton,
				ngPdfButton,
				ngHelpButton
            ]);
	map.addControl(panel);

	// el control on mostrem la informaciķ.
	map.addControl(new OpenLayers.Control.NGEmptyControl());

	// barra de canvi d'escala
	map.addControl(new OpenLayers.Control.PanZoomBar());

	if(document.location.href.indexOf("layerswitcher")>-1) map.addControl(new OpenLayers.Control.LayerSwitcher());
	
	var controlScale=new OpenLayers.Control.Scale();
	controlScale.updateScale= function() {
        var scale = this.map.getScale();
        if (!scale) {
            return;
        }
		/*
        if (scale >= 9500 && scale <= 950000) {
            scale = Math.round(scale / 1000) + "K";
        } else if (scale >= 950000) {
			var s=(Math.round(scale) / 1000000);
			if (s % 1 == 0){
				scale = Math.round(scale / 1000000) + "M";
			} else {
				scale = (scale / 1000000).toFixed(1) + "M";
			}
        } else {
            scale = Math.round(scale);
        }    */
		scale=Math.round(scale);
		scale=format(scale);
		//this.element.innerHTML = "<font class='textBoldGray'>Escala:&nbsp;<input readonly value='1:"+scale+"' class='inputTextSmall' size='12'> </input></font>";
		
		var peuMapa="<font class='textBoldGray'>Escala:&nbsp;<input readonly value='1:"+scale+"' class='inputTextSmall' size='12'> </input></font><span style='margin-left:30px;'>Šinformaciķ  cartogrāfica: Institut Cartogrāfic de Catalunya</span>";
//		peuMapa+='<span style="position:absolute;right:210px;"><a href="http://www.nexusgeografics.com" target="_blank"><IMG SRC="img/nexus2.gif" WIDTH="120" HEIGHT="13" BORDER="0" ALT="www.nexusgeografics.com" style="padding-top:2px;"></a></span>';

		this.element.innerHTML = peuMapa;

//		<a href="http://www.nexusgeografics.com" target="_blank"><IMG SRC="img/logo_nexus.gif" WIDTH="107" HEIGHT="13" BORDER="0" ALT="www.nexusgeografics.com" style="padding-top:2px;"></a>
	}

	function format(nStr){
		nStr += '';
		x = nStr.split('.');
		x1 = x[0];
		x2 = x.length > 1 ? '.' + x[1] : '';
		var rgx = /(\d+)(\d{3})/;
		while (rgx.test(x1)) {
			x1 = x1.replace(rgx, '$1' + '.' + '$2');
		}
		return( x1 + x2);
	}

	map.addControl(controlScale);
    
	// mostra les coordenades del punt
	if (treeContent.map_controls_coordinates_active) {
		var options={granurality:1};
		if (treeContent.map_controls_coordinates_epsg!=null) options.displayProjection= new OpenLayers.Projection("EPSG:"+treeContent.map_controls_coordinates_epsg);
		if (treeContent.map_controls_coordinates_prefix!=null) options.prefix= treeContent.map_controls_coordinates_prefix;
		if (treeContent.map_controls_coordinates_separator!=null) options.separator=treeContent.map_controls_coordinates_separator;
		if (treeContent.map_controls_coordinates_suffix!=null) options.suffix=treeContent.map_controls_coordinates_suffix;
		if (treeContent.map_controls_coordinates_numDigits!=null) options.numDigits=treeContent.map_controls_coordinates_numDigits;
		if (treeContent.map_controls_coordinates_tooltip!=null) options.title=treeContent.map_controls_coordinates_tooltip;

		mp=new OpenLayers.Control.MousePosition(options);

		// si hem de mostrar el decimal degrees, canviem funciķ per formatejar graus mins, segons.
		if (treeContent.map_controls_coordinates_epsg!=null) {
			if (treeContent.map_controls_coordinates_epsg=="4326") {
				mp.formatCoords= function (base) {
					var t, t2;
					var degrees = Math.floor(base);
					var minutes = Math.floor(t = ( base - degrees ) * 60);
					var seconds = Math.floor(t2 = ( t - minutes ) * 3600);
					seconds = seconds / 100.00;
					return "" + degrees + "\u00B0 " + minutes + "\u0027 " + seconds + "\u0022";
				};
				mp.formatOutput= function(lonLat) {
					newHtml =  this.prefix + 
					this.formatCoords(lonLat.lon)  +
					this.separator +
					this.formatCoords(lonLat.lat) +
					this.suffix;
					return newHtml;
				};
			} else {
				mp.formatOutput= function(lonLat) {
					//return "<font class='textBoldGray'>ETRS89 FUS 31N&nbsp;X:&nbsp;<input type='text' value='"+lonLat.lon.toFixed(0)+"' readonly class='inputTextSmall' name='impcoordX' size='10'/>m&nbsp;&nbsp;Y:&nbsp;<input class='inputTextSmall' readonly  value='"+lonLat.lat.toFixed(0)+"' type='text' name='impcoordY' size='10'/>m</font></div>";
					newHtml = "<font class='textBoldGray'>" +
					this.prefix + 
					"<input type='text' value='" +
						lonLat.lon.toFixed(0) +
						"' readonly class='inputTextSmall' name='impcoordX' size='10'/>" +
					this.separator +
					"<input type='text' value='" +
						lonLat.lat.toFixed(0) +
						"' readonly class='inputTextSmall' name='impcoordY' size='10'/>" +
					this.suffix +
					"</font>";
					return newHtml;
				};
			}
		}

		map.addControl(mp);
	}
	
	// escalimetre
	if (treeContent.map_controls_scalebar_active) map.addControl(new OpenLayers.Control.ScaleLine());

	// mapa de situacio/overview
	if (treeContent.map_controls_overview_active) {

		
		var mapOverviewOptions={
						minResolution: OpenLayers.Util.getResolutionFromScale(300000,map.units),// escala mínima que volen els de l'ideib al mapa de situaciķ
						maxResolution: OpenLayers.Util.getResolutionFromScale(8000000,map.units),
						maxExtent: map.maxExtent.clone(), 
						outsideViewport: true, 
						units: map.units, 
						projection: map.projection

			};
		// Create the overview map
		var overview = new OpenLayers.Control.OverviewMap({
			mapOptions: mapOverviewOptions,
			size: new OpenLayers.Size(150,110), 
			minRatio:16,
			maxRatio:64
		});

		
		// el layer wms
		if (typeof(treeContent.map_controls_overview_service)!="undefined" && treeContent.map_controls_overview_service!=null){
			var overviewLayer = new OpenLayers.Layer.WMS(
					"overviewLayer",
					treeContent.getServiceById(treeContent.map_controls_overview_service).url,
					{
						service: "WMS",
						layers: treeContent.map_controls_overview_layers, 
						version: "1.1.1",
						request: "GetMap", 
						styles: "",
						exceptions: null,
						format: treeContent.map_controls_overview_format,
						transparent: false
					},{
						singleTile: true
					}
			);
			overview.layers=[overviewLayer];
		} else if (typeof(treeContent.map_controls_overview_imageSource)!="undefined" && treeContent.map_controls_overview_imageSource!=null){
			// mapa estātic
			var graphic = new OpenLayers.Layer.Image(
									'overview static image',
									treeContent.map_controls_overview_imageSource,
									new OpenLayers.Bounds(treeContent.map_controls_overview_xmin,treeContent.map_controls_overview_ymin,treeContent.map_controls_overview_xmax,treeContent.map_controls_overview_ymax),
									new OpenLayers.Size(126, 126),
									{numZoomLevels: 1}
			);
			overview.layers=[graphic];
		}
		
		// Adds the overview map to the map
		map.addControl(overview);
		if (treeContent.map_controls_overview_open) overview.maximizeControl(); 

		// Recenter on move end
		map.events.register("moveend",overview,overview.updateOverview);
	}

	// definim el botons tipus google
	if (treeContent.map_controls_baseButtonsArray.length>0) {
		var buttonsArray=new Array(treeContent.map_controls_baseButtonsArray.length);
		//console.debug("definim NGBUTTONSWITCHER");
		for (var i=0;i<treeContent.map_controls_baseButtonsArray.length;i++ ){
			var b=treeContent.map_controls_baseButtonsArray[i];
			//console.debug("\t>"+b.title);
			//console.debug("\t  layers:"+b.serviceArray.join("|"));
			//console.log("creaciķ botons. b.active:"+b.active);
			var button= {
				text: b.title,
				title: b.desc,
				layers: map.getLayersByName(new RegExp(b.serviceArray.join("|"))),//llista layers a activar, siguin de base o no
				active: b.active
			};
			//console.debug("\t  button.layers:"+button.layers.length);
			//console.debug(button.layers);
			buttonsArray[i]=button;

		}
		
		bSwitcher = new OpenLayers.Control.NGButtonSwitcher({
			buttons: buttonsArray,
			allowUnseleted: true,
			dummyLayer: map.getLayersByName("dummy")[0]
		});
		map.addControl(bSwitcher);
	}
}

/**
*	Configura els sistemes de referencia que utilitzarem
*/
function initProj4js() {
	// mercator
	Proj4js.defs["EPSG:54004"] = "+title=world mercator EPSG:54004 +proj=merc +lat_ts=0 +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs";

	// ed50 / UTM
	Proj4js.defs["EPSG:23029"] = "+title=ED50 / UTM zone 29N  +proj=utm +zone=29 +ellps=intl +units=m +no_defs";
	Proj4js.defs["EPSG:23030"] = "+title=ED50 / UTM zone 30N  +proj=utm +zone=30 +ellps=intl +units=m +no_defs";
	Proj4js.defs["EPSG:23031"] = "+proj=utm +zone=31 +ellps=intl +towgs84=-136.65549,-141.4658,-167.29848,-2.093111,-0.0014055,-0.1077098,11.54611 +units=m +no_defs";
	Proj4js.defs["EPSG:23032"] = "+title=ED50 / UTM zone 32N  +proj=utm +zone=32 +ellps=intl +units=m +no_defs";
	
	// ETRS89 / UTM
	Proj4js.defs["EPSG:25829"] = "+proj=utm +zone=29 +ellps=GRS80 +units=m +no_defs";
	Proj4js.defs["EPSG:25830"] = "+proj=utm +zone=30 +ellps=GRS80 +units=m +no_defs";
	Proj4js.defs["EPSG:25831"] = "+proj=utm +zone=31 +ellps=GRS80 +units=m +no_defs";
	Proj4js.defs["EPSG:25832"] = "+proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs";

	// WGS84 / UTM
	Proj4js.defs["EPSG:32629"] = "+proj=utm +zone=29 +ellps=WGS84 +datum=WGS84 +units=m +no_defs ";
	Proj4js.defs["EPSG:32630"] = "+proj=utm +zone=30 +ellps=WGS84 +datum=WGS84 +units=m +no_defs ";
	Proj4js.defs["EPSG:32631"] = "+proj=utm +zone=31 +ellps=WGS84 +datum=WGS84 +units=m +no_defs ";
	Proj4js.defs["EPSG:32632"] = "+proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m +no_defs ";

	// geografiques
	Proj4js.defs["EPSG:4326"] = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs ";// wgs84
	Proj4js.defs["EPSG:4230"] = "+proj=longlat +ellps=intl +no_defs";// ed50
	Proj4js.defs["EPSG:4258"] = "+proj=longlat +ellps=GRS80 +no_defs";// etrs89
}

/**
*	Carrega el text al bloc de informaciķ i l'expandeix. Utilitzat en l'eina info.
*/
function processIdentifyTOCResponse (responseText) {
	
	document.getElementById("infoDiv").innerHTML=responseText;

	var i=0;
	var ddColection=document.getElementsByTagName("dd");
	var openBlockId=0;
	var infoBlockId=0;
	while (i<ddColection.length) {
		if ( ddColection[i].style.display == "block" ) {
			openBlockId=i;
		} 
		var item=treeContent.getContentNode("node_"+i);
		if (item.getAttributeValue("type")=="info") infoBlockId=i;
	
		i++;
	}
	if (openBlockId!=infoBlockId) accordion_menu_expand("dt_"+infoBlockId);// expandim block info

}

/**
*	mostra els errors carregats al layer 'failedImageLoad' en un div.
*	l'estil de la caixa esta definit a styles.css
*/
function showErrorMessages() {

	var div=document.getElementById("ErrorMessageBox");
	if (div==null){
		var div = document.createElement("div");
		div.setAttribute("id", "ErrorMessageBox");
		
		div.onclick=function() {this.style.display="none";failedImageLoad=new Array();};
		div.title="prem per ocultar";
		var bodyN=document.getElementsByTagName("body")[0];
		bodyN.appendChild(div);
	} else {
		div.style.display="block";
	}
		
	var str=failedImageLoad.join("<br/>"); 
	div.innerHTML=str;
	div.scrollTop = div.scrollHeight;// scroll al final

}

/**
*	centers map to full extent
*/
function fullExtent(map,force) {
	try {
		if (typeof(force)=="undefined") force=false;

		if (typeof(urlExtent)=="undefined" || force) var initExtent=new NExtent( new NPoint(treeContent.conf_xmin,treeContent.conf_ymin) , new NPoint(treeContent.conf_xmax,treeContent.conf_ymax) );
		else initExtent=urlExtent;

		map.centerToExtent(initExtent);
	} catch(e) {
		alert("Error a fullExtent()\n"+e.message);
	}
}

// Precarga de les imatges del document
var imgarray = new Array; 
var iptr = 0;

function PreLoadImg(isrc){
	imgarray[iptr] = new Image;
	imgarray[iptr].src = isrc;
	tr = iptr;
	iptr++;
	return tr;
}


// Precarrega les imatges. S'ha d'executar al body.OnLoad
function PreloadImages(){
	// eines
	var aux;
	aux = PreLoadImg("img/treeview/checked_disabled.gif");
	aux = PreLoadImg("img/treeview/checked_mid.gif");
	aux = PreLoadImg("img/treeview/checked_off.gif");
	aux = PreLoadImg("img/treeview/checked_off_filtered.gif");
	aux = PreLoadImg("img/treeview/checked_off_filtrable.gif");
	aux = PreLoadImg("img/treeview/checked_on.gif");
	aux = PreLoadImg("img/treeview/checked_on_filtered.gif");
	aux = PreLoadImg("img/treeview/checked_on_filtrable.gif");
	aux = PreLoadImg("img/treeview/collapsed.gif");
	aux = PreLoadImg("img/treeview/empty.gif");
	aux = PreLoadImg("img/treeview/expanded.gif");
	aux = PreLoadImg("img/treeview/folder.gif");
	aux = PreLoadImg("img/treeview/identify_empty.gif");
	aux = PreLoadImg("img/treeview/identify_off.gif");
	aux = PreLoadImg("img/treeview/identify_on.gif");
	aux = PreLoadImg("img/treeview/layer.gif");
	aux = PreLoadImg("img/treeview/layer_theme.gif");
	aux = PreLoadImg("img/treeview/layer_theme_SOL.gif");
	aux = PreLoadImg("img/treeview/line.gif");
	aux = PreLoadImg("img/treeview/line2.gif");
	aux = PreLoadImg("img/treeview/menu_add.gif");
	aux = PreLoadImg("img/treeview/menu_config.gif");
	aux = PreLoadImg("img/treeview/menu_delete.gif");
	aux = PreLoadImg("img/treeview/menu_down.gif");
	aux = PreLoadImg("img/treeview/menu_filter.gif");
	aux = PreLoadImg("img/treeview/menu_in.gif");
	aux = PreLoadImg("img/treeview/menu_out.gif");
	aux = PreLoadImg("img/treeview/menu_up.gif");
	aux = PreLoadImg("img/treeview/menu_zoom.gif");
	aux = PreLoadImg("img/treeview/point.gif");
	aux = PreLoadImg("img/treeview/polygon.gif");
	aux = PreLoadImg("img/treeview/range.gif");
	aux = PreLoadImg("img/treeview/separador.gif");
	aux = PreLoadImg("img/empty.gif");

}
// Preload image buttons
PreloadImages();


// Copies current map image to clipboard
function copyToClipboard(map){
	DebugOut("copyToClipboard",DEBUG);

	var ddDiv = document.createElement("div");
	ddDiv.setAttribute("id", "copy2clipboardDiv");
	ddDiv.style.zIndex="9999";
	ddDiv.style.position="absolute";
	ddDiv.style.top="0px";
	ddDiv.style.left="0px";
	ddDiv.style.width="200px";
	ddDiv.style.height="200px";
	ddDiv.style.visibility="hidden";
	
	var url=map.getCurrentMapImageUrl();
	DebugOut("copyToClipboard URL: "+url,DEBUG);
	var str='<img id="copy2clipboardImg" src="'+url+'" onLoad="javascript:copyImageToClipBoard(this.id);" />';
	ddDiv.innerHTML =str;
	var bodyN=document.getElementsByTagName("body")[0];
	bodyN.appendChild(ddDiv);

}

// Copies this img id to clipboard: only IE
function copyImageToClipBoard(imgObjId){
	var oRng=document.body.createControlRange();
	oRng.addElement(document.getElementById(imgObjId));
	oRng.execCommand("Copy");

	alert("Imatge copiada al portapapers.\n(funcional només a IE)");

	var bodyN=document.getElementsByTagName("body")[0];
	var nestedN=document.getElementById("copy2clipboardDiv");
	var throwaway_node = bodyN.removeChild(nestedN);
}

// Centers to the coords specified at hidden inputs. From WS searches
function zoomToSearch(){
	var x1=document.getElementById("zoomSearchX1").value;
	var y1=document.getElementById("zoomSearchY1").value;
	var x2=document.getElementById("zoomSearchX2").value;
	var y2=document.getElementById("zoomSearchY2").value;
	var searchText=document.getElementById("wsTextInput").value;

	if (x1=="" && y1=="") return;

	if (x2!="" && y2!="") {
		// zoom to box
		var x1v=parseFloat(x1);
		var y1v=parseFloat(y1);
		var x2v=parseFloat(x2);
		var y2v=parseFloat(y2);

		var ext=new NExtent(new NPoint(x1v,y1v),new NPoint(x2v,y2v));
		map.pois.clear();
		var poi=new NPoi(ext.getCenter(),"img/poi.gif",20,20,"identifier",searchText,searchText);
		map.pois.add(poi);

		//DebugOut("zoomToSearch() 2: [" + (x1v) + "," + (y2v)+"] ["+ (x2v) + "," + (y2v) + "]",DEBUG);
		map.centerToExtent(ext);

	} else {
		// creem un poi
		map.pois.clear();
		var poi=new NPoi(new NPoint(x1,y1),"img/poi.gif",20,20,"identifier",searchText,searchText);
		map.pois.add(poi);

		// zoom to coords+scale
		map.centerAndZoom(new NPoint(x1,y1),25000);
	}
}

/**
*
*/
function soapServerChanged() {
	var obj=document.getElementById("wsTextInput");
	obj.value="";
}

/**
*
*/
function zoomToExtent(x0,y0,x1,y1) {
	var catExtent=new NExtent( new NPoint(parseFloat(x0),parseFloat(y0)) , new NPoint(parseFloat(x1),parseFloat(y1)) );
	map.centerToExtent(catExtent);
}

/**
*	to activate debug type "javascript: debugon();" at explorers url
*/
function debugon() {
	debugLevel=DEBUG;
	if (document.getElementById("debugoutput").style.display=="block") var d="none";
	else  var d="block";
	document.getElementById("debugoutput").style.display=d;
	document.getElementById("debugbutton").style.display=d;
	
}

/**
*	show tree with main page variables
*/
function debugtree() {
//	javascript:s=document.body.appendChild(document.createElement('script'));s.id='sst';s.language='javascript';void(s.src='library/js_tree/js_tree.js');
}

function addItems2Array(sourceList, targetArray) {
	var array1=sourceList.split("$");
	var targetArrayCount=targetArray.length;
	if (targetArrayCount>0)targetArrayCount++;

	for (var i=0;i<array1.length-1 ;i++ ){
		var array2=array1[i].split("#"); //name#title#desc
		var obj= {};
		obj["name"]=array2[0];
		obj["title"]=array2[1];
		obj["desc"]=array2[2];
		targetArray[targetArrayCount+i]=obj;
		//DebugOut(" >> " + targetArray[targetArrayCount+i]["name"] + "   " + targetArray[targetArrayCount+i]["title"] + "   " + targetArray[targetArrayCount+i]["desc"] , DEBUG);
	}
}

/**
*	Opens the dropdown to select the queryable layers
*/
function identifyDropdownShow(target) {

	var queryListVisible=treeContent.getQueryableLayersNames(true,1);
	var queryListNoVisible=treeContent.getQueryableLayersNames(true,2);
	//alert(treeContent.getQueryableLayersNames(true,0)+"\n\n\n"+treeContent.getQueryableLayersNames(true,1)+"\n\n\n"+treeContent.getQueryableLayersNames(true,2));
	
	var arrayVisible= new Array();
	var arrayNoVisible= new Array();

	addItems2Array(queryListVisible,arrayVisible);
	addItems2Array(queryListNoVisible,arrayNoVisible);

	function mysortfn(a,b) {
		try {
			var txt1=a["title"].replaceKnownCharacters().toUpperCase();
			var txt2=b["title"].replaceKnownCharacters().toUpperCase();
			if (txt1<txt2) return -1;
			if (txt1>txt2) return 1;
			return 0;
		}
		catch (e) {
			alert("Error a mysortfn()\n"+e.message);
		}
	}
	arrayVisible.sort(mysortfn);
	arrayNoVisible.sort(mysortfn);

	var ddContent=new CDropdownContent();

	for (var i=0;i<arrayVisible.length ;i++ ){
		ddContent.addItem(arrayVisible[i]["name"],arrayVisible[i]["title"],arrayVisible[i]["desc"]);
	}
	//ddContent.addItem("","-","");
	ddContent.addSeparator();

	for (var i=0;i<arrayNoVisible.length ;i++ ){
		ddContent.addItem(arrayNoVisible[i]["name"],arrayNoVisible[i]["title"],arrayNoVisible[i]["desc"]);
	}


	var dd = new CDropdown(target,ddContent,260);
	dd.processFunction= function(code,text,title) {
		try {
			var textObj=document.getElementById("identifyLayersText"); // la 1a peticiķ en IE dona error, fet un catch + repetir ja funciona. raro raro raro...
			identifyClick();// activem eina identify
			map.setIdentifyLayers(code);
			textObj.firstChild.nodeValue=text;
		}
		catch (e) {
			var textObj=document.getElementById("identifyLayersText");
			identifyClick();// activem eina identify
			map.setIdentifyLayers(code);
			textObj.firstChild.nodeValue=text;
		}
	};
	dd.show(false);

}

// opens the dropdown list
function openIdentifyDropDown() {
	var obj=document.getElementById("identifyDropDownDiv");
	identifyDropdownShow(obj);

}

// Obtener el valor de un parámetro de la url
function GetURLParam(param,url) {						
	if (typeof(url)=="undefined")
		var url = document.location.href + "&";

	var sep = "&";
	var i = url.indexOf(sep+param+"=");
	if (i < 0 ) {
		sep = "?";
		i = url.indexOf(sep+param+"=");
		if (i < 0) {
			return "";
		}
	}

	url = url.substr(i+param.length+2);

	i = url.indexOf("&");
	if (i < 0 ) {
		return "";
	}

	url = url.substring(0, i);

	return unescape(url);
}



/**
*	Rep un error capturat amb un try/catch
*/
function errorHandler(e) {
	var str="";
	for(var i in obj){
		var tmp = '(error)';
		if(i.match(/^(expose|header|footer|ivn|dygolk|ad_)/))
		  tmp = '(excluding as a known custom method or property)';
		else{
		  try{ tmp = obj[i]; } catch(e){}
		}
		str += i+':'+tmp;

	}
	alert("errorHandler:"+str);
}


/**
*
*/
function openPrint() {

	openDojoPane(null,"Impressiķ","modalPrint2.html?cache="+new Date(),130,130,330,300);
	return false;
}

/**
*
*/
function returnFunction() {
		//	alert("returnFunction");
		}

/**
*
*/
function closePoi(e) {

	if (!e) var e = window.event;
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();

		map.pois.clear();
		return true;
		
}

/**
*
*/
function openDojoPane(dojoWidget,title,url,left,top,width,height) {
	if (typeof(title)=="undefined") title="";
	if (typeof(left)=="undefined") left=50;
	if (typeof(top)=="undefined") top=50;
	if (typeof(width)=="undefined") width=500;
	if (typeof(height)=="undefined") height=400;

	if (typeof(dojoWidget)!="undefined" && typeof(identifyDojoPaneDestroyed)!="undefined" && !identifyDojoPaneDestroyed) {
		dojoWidget.setUrl(url);
		return dojoWidget;
	}
	
	// Set DOJO Debug
	var djConfig = {isDebug: true};
	djConfig.debugAtAllCosts = true;

	// Import DOJO Modules
	//dojo.require("dojo.widget.Toolbar");
	dojo.require("dojo.widget.FloatingPane");	
	dojo.require("dojo.widget.ContentPane"); 
	
	// Open DOJO FloatingPane
	dojo.debug("Testing DOJO FloatingPane");
	var properties = {
		hasShadow: false,
		displayMinimizeAction: false,
		displayMaximizeAction: false,
		displayCloseAction: true,
		href: url,
		executeScripts: true,
		style: "",
		title: title,
		titleHeight: "20",
		id: "testing"
	};

	properties.id = "testing";
	node = document.createElement(properties.id);
	node.style.position = "absolute";
	node.style.width = ""+width+"px";
	node.style.height = ""+height+"px";
	node.style.left = ""+left+"px";
	node.style.top = ""+top+"px";
	document.body.appendChild(node);

	var fig = dojo.widget.createWidget("FloatingPane",properties,node);

	identifyDojoPaneDestroyed=false;
	fig.destroy = function () {
		identifyDojoPaneDestroyed=true;
	};
	return fig;
}

//---------------------


resizeCount=0;
resizeDate=new Date();

function windowResize() {
	try {
		if ((new Date()-resizeDate)<1000) {
			return;
		}
		resizeDate=new Date();
		resizeCount++;
//		resizeid=setTimeout("windowResizeFunc("+resizeDate.getTime()+")",500);
		mapMaximized=!mapMaximized;
		resizeid=setTimeout("maximizeMap()",500);
		
	}
	catch (e) {
		alert("Error a windowResize()\n"+e.message);
	}
}
/*
windowclientWidth=getAvailableWidth();
windowclientHeight=getAvailableHeight();

function windowResizeFunc(calledTime) {
	try {
		
		resizeTime=resizeDate.getTime();
		if (calledTime<resizeTime) {
			//res a fer, hi ha una nova peticio
		} else {
			if (windowclientWidth!=getAvailableWidth() && windowclientHeight!=getAvailableHeight()) {
				DebugOut("window change/resize: " + window.clientWidth ,INFO);

				placeMapDiv();
				map.updateSize();
				windowclientWidth=getAvailableWidth();
				windowclientHeight=getAvailableHeight();

			} else {
				DebugOut("window NOT change: " + window.clientWidth ,INFO);
			}
		}
	}
	catch (e) {
		alert("Error a windowResizeFunc()\n"+e.message);
	}
}*/

function ubicar_buscar() {
	alert("crida a ubicar_buscar");
}

/**
*
*/
function print_escalaChange(obj) {
	try {
		
		var printScale=obj.value;
		if (printScale=="actual") printScale=map.getScale();

		var printPixWidth=600;
		var printPixHeight=400;
		
		var pixWidth=printPixWidth;
		var pixHeight=printPixHeight;
		var centerPoint=map.getCenter();
		var scaleDen=printScale;
		var coord1=map.pixelsToCoordsWithParams (0,0,pixWidth,pixHeight,centerPoint,scaleDen);
		var coord2=map.pixelsToCoordsWithParams (printPixWidth,printPixHeight,pixWidth,pixHeight,centerPoint,scaleDen);

		map.setDrawBboxExtent(new NExtent(coord1,coord2));


	
	}
	catch (e) {
		alert("Error a ubicar_buscar()\n"+e.message);
	}
}


/**
*	Click a radio de de escala o mida
*/
function previewPrintRadioChange(radioId) {
	try {
		var obj=document.getElementById(radioId);
		if (obj.checked) previewPrintChange(obj);
	}
	catch (e) {
		alert("Error a previewPrintRadioChange()\n"+e.message);
	}
}

/**
*	Click a checkbox de previsualitzar caixa de impressiķ. També cridat en canviar les opcions d'impressiķ.
*/
function previewPrintChange(obj) {
	//try {

		if (obj.checked) {
			showPrintPreview();
		} else {
			hidePrintPreview();
		}
	/*}
	catch (e) {
		alert("Error a previewPrintChange()\n"+e.message);
	}*/
}

/**
*	Mostra un preview de l'area d'impressiķ sobre el mapa.
*/
function showPrintPreview(skipRegisterEvent) {
	if (typeof(skipRegisterEvent)=="undefined") skipRegisterEvent=false;
	//setPrintParameters(true);
	if (typeof(printObj)=="undefined"){
		printObj=new printBase({
			map: map,
			config: {},
			afterLayerCreated: function() {
				//alert("ole ole... afterLayerCreated");
			},
			setCurRotation: function(rotation) {//no es crida en final, es crida continuament
				//alert("rotation changed");
				document.getElementById("printAngle").value=-rotation;
			},
			setCurCenter: function(center) {//no es crida en final, es crida continuament
				//alert("center changed: "+center);
				map.panTo(center);
			}
		});
	}

	printObj.onHideEvent();
	printObj.onShowEvent();

	var center=map.getCenter();

	var printConfig=getPrintConfig(72);
	var scale=printConfig.scale;
	var layout={
		map: {
			width:printConfig.width,
			height:printConfig.height
		}
	};
	var rotation=-printConfig.rotation;
	var feature=printObj.createRectangle(center, scale, layout, rotation);
	printObj.createRotateHandle(feature);
	
//	map.layers[0].events.register("loadstart", map.layers[0], printLoadStart);
	globalVarPrintScale=scale;
	map.events.unregister("moveend", map, printLoadEnd);
	if (!skipRegisterEvent) map.events.register("moveend", map, printLoadEnd);
		
}

function printLoadEnd() {
	if (Math.abs(this.getScale()-globalVarPrintScale)>10){
		// canvi d'escala
		showPrintPreview(true);
	}
}

/**
*
*/
function hidePrintPreview() {

	map.events.unregister("moveend", map, printLoadEnd);
	printObj.onHideEvent();
}

/*
*	retorna un objecte amb la configuraciķ d'impressiķ del a interficie.
*/
function getPrintConfig(dpi) {
	// angle 
	var angle=document.getElementsByName("angle")[0];
	var angleValue=0;
	if (typeof(angle)!="undefined") angleValue=parseFloat(angle.value);

	// escala 
	var escales=document.getElementsByName("escala");
	var printScale=0;
	for (var i=0;i<escales.length ;i++ ) {
		if (escales[i].checked) printScale=escales[i].value;
	}
	if (printScale=="actual") printScale=map.getScale();

	// paper
	var mides=document.getElementsByName("mida");
	var pixWidth=0;
	var pixHeight=0;
	for (var i=0;i<mides.length ;i++ ) {
		if (mides[i].checked) {
			var cmWidth=parseFloat(mides[i].attributes.mapWidth.nodeValue);
			var cmHeight=parseFloat(mides[i].attributes.mapHeight.nodeValue);
			var pixWidth=Math.round(cmWidth*0.3937008*dpi);
			var pixHeight=Math.round(cmHeight*0.3937008*dpi);
		}
	}

	return {
		rotation:angleValue,
		scale:printScale,
		width:pixWidth,
		height:pixHeight
	};
}


/**
*	Mostra un preview de l'area d'impressiķ sobre el mapa.
*/
function setPrintParameters(printer,showPreview) {
	try {
		var printConfig=getPrintConfig(96);
		var angleValue=printConfig.rotation;
		var printScale=printConfig.scale;
		var pixWidth=printConfig.width;
		var pixHeight=printConfig.height-5;

		if (typeof(printObj)=="undefined"){
			var centerPoint=map.getCenter();
			var scaleDen=parseFloat(printScale);
		} else {
			var centerPoint=printObj.rectangleFeature.geometry.getBounds().getCenterLonLat();
			var scaleDen=printObj.curScale;
		}

		var coordArray = new NPois();
		//coordArray.add(new NPoi(map.getCenter(),"http://ms.nexusgeografics.com/scugat2/images/ban_bulleti.gif",0,0));
		
//		var pixelArray=new NPois();
		//pixelArray.add(new NPoi(new NPoint(pixWidth/2,pixHeight-20), urlImatges+"marcaAigua.gif",0,0));

		printer.printerServlet=urlOpenImprimir;// TODO
		printer.setPrintConfig(pixWidth,pixHeight,scaleDen,centerPoint,angleValue,showPreview,null,null,null,coordArray,null);
		//Exemple de peticiķ definint el servidor:	map.setPrintConfig(pixWidth,pixHeight,scaleDen,centerPoint,angleValue*180/Math.PI,showPreview,"http://shagrat.icc.es/lizardtech/iserv/ows?","mtc50m,","image/png",coordArray,pixelArray);
		
	} catch (e) {
		alert("error a previewPrint()\n"+e.message);
	}
}

/**
*
*/
function imprimir() {

	try {
		var printer=new OpenLayers.NGPrint(map,treeContent);
		setPrintParameters(printer,false);

		//printer.createRectangle(map.getCenter(), map.getScale(), null, null);

		var now=new Date();
		var date=now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear();
		var size="A4";
		var orientation="H";
		var pages="1";
		var scale=parseInt(map.getScale());

		var mides=document.getElementsByName("mida");
		for (var i=0;i<mides.length ;i++ ) {
			if (mides[i].checked)size=mides[i].value;
		}

		var escales=document.getElementsByName("escala");
		for (var i=0;i<escales.length ;i++ ) {
			if (escales[i].checked)scale=escales[i].value;
		}
		if(scale=="actual")scale=map.getScale();

		scale=Math.round(scale);
		scale=format(scale);

		printer.createPDF("legendUrl",treeContent.servletUrl,
			"formatsize",size,
			"formatorientation",orientation,
			"formatpages",pages,
			"title",printTitle,
			"comment",printComment,
			"scale",scale,
			"date",date);
		return;
		
	}
	catch (e) {
		alert("error a imprimir()\n"+e.message);
	}
}


	function format(nStr){
		nStr += '';
		x = nStr.split('.');
		x1 = x[0];
		x2 = x.length > 1 ? '.' + x[1] : '';
		var rgx = /(\d+)(\d{3})/;
		while (rgx.test(x1)) {
			x1 = x1.replace(rgx, '$1' + '.' + '$2');
		}
		return( x1 + x2);
	}

/**
*	Click al boto de maximitzar o tornar a mida normal.
*/
function maximizeMap() {
	try {
		var maximizeDiv=document.getElementById("maximizeDiv");			
		var toolbarDivOL=document.getElementById("toolbarDivOL");
		var mapDiv=document.getElementById("map");
		var treeviewDiv=document.getElementById("treeviewDiv");
//		var iniciarSessioLink=document.getElementById("iniciarSessioLink");

		if (!mapMaximized) {// maximitzar
			if (OpenLayers.Util.getBrowserName()=="firefox"){
				var windowclientWidth="100%";
				var windowclientHeight="100%";
			} else {
				var windowclientWidth=getAvailableWidth();
				var windowclientHeight=getAvailableHeight();
			}

			maximizeDiv.style.position="absolute";// si fem resize dels altres perō no del maximizeDiv, l'IE fa desapareixer mapa al fer pans.
			maximizeDiv.style.top="0px";
			maximizeDiv.style.left="0px";
			maximizeDiv.style.width=windowclientWidth;
			maximizeDiv.style.height="100%";

			/*toolbarDivOL.style.float="left";
			toolbarDivOL.style.top="0px";*/
			
			toolbarDivOL.style.left="350px";
			toolbarDivOL.style.width=windowclientWidth;

			/*mapDiv.style.float="left";
			mapDiv.style.top="0px";
			mapDiv.style.left="0px";*/
			mapDiv.style.width=windowclientWidth;
			mapDiv.style.height=windowclientHeight;

			// per l'ie6 hem d'ocultar el toc: els elements select, combos, ... queden visibles sobre el mapa
			treeviewDiv.style.display="none";

			mapMaximized=!mapMaximized;
		} else {// minimitzar
			maximizeDiv.style.position="relative";// si fem resize dels altres perō no del maximizeDiv, l'IE fa desapareixer mapa al fer pans.
			maximizeDiv.style.top="";
			maximizeDiv.style.left="";
			maximizeDiv.style.width="100%";
			maximizeDiv.style.height="";
			
			/*toolbarDivOL.style.position="relative";
			toolbarDivOL.style.top="";
			toolbarDivOL.style.left="";
			toolbarDivOL.style.zIndex=999999;
			toolbarDivOL.style.opacity=0.7;
			toolbarDivOL.style.filter="alpha(opacity=70)";*/
			toolbarDivOL.style.width="";

			/*mapDiv.style.position="relative";
			mapDiv.style.top="";
			mapDiv.style.left="";*/
			mapDiv.style.width="55px";
			mapDiv.style.height="55px";

			// per l'ie6 hem d'ocultar el toc: els elements select, combos, ... queden visibles sobre el mapa
			treeviewDiv.style.display="block";
			
			mapMaximized=!mapMaximized;
			placeMapDiv();
		}
		if (typeof(map)!="undefined") map.updateSize();// evitar error en ie6 carrega inicial
			
	
	}
	catch (e) {
		alert("Error a maximizeMap()\n"+e.message);
	}
}

/**
*	Retorna cert si el mapa esta maximitzat.
*	@return {boolean}
*/
function mapIsMaximized() {
	var obj=document.getElementById("maximizeDiv");
	return obj.style.position=="absolute";
}



/**
*	Genera una url amb la configuraciķ actual de continguts i reemplaįa la url del navegador.
*/
function permalink() {
	try {
		var url=getPermalink();

		//window.location.replace(url.join(""));
		window.location.href=url;
	}
	catch (e) {
		alert("error a permalink()\n"+e.message);
	}
}

/**
*	Genera una url amb la configuraciķ actual de continguts i reemplaįa la url del navegador.
*/
function getPermalink() {
	var separador="~";
	try {
		// config capes i capes visibles
		var services="";
		var layers="";
		var target=document.getElementById("configDiv_sel");
		for (var i=0; i<target.options.length; i++ ) {
			var id=target.options[i].value;
			var transpValue=treeContent.getServiceById(id).transparency;

			if (services!="") services+=separador;
			services+=id+":"+transpValue;

			if (layers!="") layers+=separador;
			layers+=treeContent.getVisibleLayersNames(id,separador);
		}

		var url=new Array();
		url.push(hostname+"/"+context+"/index.html");
		url.push("?extent="+map.getExtent().serialize());
		url.push("&layers="+layers);
		url.push("&services="+services);

		return url.join("");
	}
	catch (e) {
		alert("error a getPermalink()\n"+e.message);
	}
}

/**
*	Obre la finestra de enviar per correu electrōnic.
*/
function sendMail() {
	try {
		var lang="ca";
		var url="";
		// hem de passar un parametre link amb la url: centre+escala+categories+
		url=getPermalink()+"&lang="+lang;

		//window.open(urlOpenCorreu+"?link="+escape(url)+"&lang="+lang,"",urlOpenCorreuConf);
		showPopWin(urlOpenCorreu+"?link="+escape(url)+"&lang="+lang, 345,260, null);
	}
	catch (e) {
		alert("error a sendMail()\n"+e.message);
	}
}

function obrirPDF() {	
	window.open(hostname+"/"+context+"/llegenda.html","",'width=1200,height=700,menubar=yes, status=yes,location=yes,toolbar=yes,resizable=yes,scrollbars=yes'); 
	return false;
}
//mida de finestra anterior width=1200,height=700

function popUpIDEIBLeyend(url,w,h,l,t) {
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(url, '" + id + "', 'toolbar=no,scrollbars=yes,location=no,statusbar=no,menubar=no,resizable=yes,left="+l+",top="+t+",width="+w+",height="+h+"');");
}

function openLogin() {
	var url="login.jsp";
	var retFunc= function() {
		// recarreguem toc
		map.destroy();
		loadContents();
	}
	
	showPopWin(url, 200, 160, retFunc);
}

function clearPoisLoad() {
	try {
		clearTimeout(timeoutId);
	} catch(e) {}
}

function loadProj4jConfig() {

}

// toc_coordenades.jsp
function coordSystemDD_Change(select) {
	var v=select.options[select.selectedIndex].value;
	
	var x1=document.getElementById("coordSystemX");
	var x2=document.getElementById("coordSystemX2");
	var x3=document.getElementById("coordSystemX3");
	var y1=document.getElementById("coordSystemY");
	var y2=document.getElementById("coordSystemY2");
	var y3=document.getElementById("coordSystemY3");
	var spanx1=document.getElementById("coordSystemXspan");
	var spanx2=document.getElementById("coordSystemX2span");
	var spanx3=document.getElementById("coordSystemX3span");
	var spany1=document.getElementById("coordSystemYspan");
	var spany2=document.getElementById("coordSystemY2span");
	var spany3=document.getElementById("coordSystemY3span");
	var spanFus=document.getElementById("coordSystemFusSpan");
	var fus=document.getElementById("coordSystemFus");

	if (v==="utm") {
		x2.style.display="none";
		x3.style.display="none";
		y2.style.display="none";
		y3.style.display="none";
		spanx1.style.display="none";
		spanx2.style.display="none";
		spanx3.style.display="none";
		spany1.style.display="none";
		spany2.style.display="none";
		spany3.style.display="none";
		fus.style.display="inline";
		spanFus.style.display="inline";
		x1.style.width="80px";
		y1.style.width="80px";
	}else if (v==="geo1") {
		x2.style.display="none";
		x3.style.display="none";
		y2.style.display="none";
		y3.style.display="none";
		spanx1.style.display="block";
		spanx2.style.display="none";
		spanx3.style.display="none";
		spany1.style.display="block";
		spany2.style.display="none";
		spany3.style.display="none";
		fus.style.display="none";
		spanFus.style.display="none";
		x1.style.width="80px";
		y1.style.width="80px";
	}else if (v==="geo2") {
		x2.style.display="block";
		x3.style.display="none";
		y2.style.display="block";
		y3.style.display="none";
		spanx1.style.display="block";
		spanx2.style.display="block";
		spanx3.style.display="none";
		spany1.style.display="block";
		spany2.style.display="block";
		spany3.style.display="none";
		fus.style.display="none";
		spanFus.style.display="none";
		x1.style.width="30px";x2.style.width="80px";
		y1.style.width="30px";y2.style.width="80px";
	}else if (v==="geo3") {
		x2.style.display="block";
		x3.style.display="block";
		y2.style.display="block";
		y3.style.display="block";
		spanx1.style.display="block";
		spanx2.style.display="block";
		spanx3.style.display="block";
		spany1.style.display="block";
		spany2.style.display="block";
		spany3.style.display="block";
		fus.style.display="none";
		spanFus.style.display="none";
		x1.style.width="30px";x2.style.width="30px";x3.style.width="30px";
		y1.style.width="30px";y2.style.width="30px";y3.style.width="30px";
	}

}

// toc_coordenades.jsp
function coordSystemCentra() {
	try{
		var select=document.getElementById("coordSystemSelect");
		var v=select.options[select.selectedIndex].value;
		var x1=document.getElementById("coordSystemX");
		var x2=document.getElementById("coordSystemX2");
		var x3=document.getElementById("coordSystemX3");
		var y1=document.getElementById("coordSystemY");
		var y2=document.getElementById("coordSystemY2");
		var y3=document.getElementById("coordSystemY3");
		
		if(x1.value>2 || x1.value<1){
			alert("La longitud introduīda no pertany a la Regiķ Metropolitana de Barcelona.");
			return
		}
		if(y1.value!=41){
			alert("La latitud introduīda no pertany a la Regiķ Metropolitana de Barcelona.");
			return
		}

		if (v==="utm") {
			var lonStr=x1.value;
			var latStr=y1.value;
			var lon=parseFloat(lonStr);
			var lat=parseFloat(latStr);
		}else if (v==="geo1") {
			var lonStr=x1.value;
			var latStr=y1.value;
			var lon=parseFloat(lonStr);
			var lat=parseFloat(latStr);
		}else if (v==="geo2") {
			var lon=parseFloat(x1.value)+parseFloat(x2.value)/60;
			var lat=parseFloat(y1.value)+parseFloat(y2.value)/60;
		}else if (v==="geo3") {
			var lon=parseFloat(x1.value)+parseFloat(x2.value)/60+parseFloat(x3.value)/3600;
			var lat=parseFloat(y1.value)+parseFloat(y2.value)/60+parseFloat(y3.value)/3600;
		}

		if (isNaN(lon) ||isNaN(lat)){
			alert("Error: Revisa les coordenades");
			return;
		}
		// epsg escolit
		var fusSel=document.getElementById("coordSystemFus");
		var datumSel=document.getElementById("coordSystemDatum");
		var fus=fusSel.options[fusSel.selectedIndex].value;
		var datum=datumSel.value;
		
		if (v==="utm") {
			var epsg;
			if (datum==="WGS84") epsg="326"+fus;
			else if (datum==="ED50") epsg="230"+fus;
			else if (datum==="ETRS89") epsg="258"+fus;
			var sourceProj= new OpenLayers.Projection("EPSG:"+epsg);
		} else {// geo
			var epsg;
			if (datum==="WGS84") epsg="4326";
			else if (datum==="ED50") epsg="4230";
			else if (datum==="ETRS89") epsg="4258";
			var sourceProj= new OpenLayers.Projection("EPSG:"+epsg);
		}
		
		//var sourceProj= new OpenLayers.Projection("EPSG:4326");
		var targetProj= map.getProjectionObject();

		//var p = new OpenLayers.Geometry.Point(lon, lat);
		var lonlat=new OpenLayers.LonLat(lon, lat);

		lonlat.transform(sourceProj, targetProj);
		
		this.map.setCenter(lonlat,map.getZoomForResolution(OpenLayers.Util.getResolutionFromScale(5000,'m'),true));

		//------------------------------------------------
		// TODO: CREAR UNA CLASSE PER GESTIONAR ELS MARCADORS I ELS POPUPS. UNIFICAR AMB NGCatastroWS.js i dropdown.js
		if (this.map.getLayersByName("Markers").length>0) 
			var markers = this.map.getLayersByName("Markers")[0];
		else {
			var markers = new OpenLayers.Layer.Markers( "Markers" );
			this.map.addLayer(markers);
		}
		
		var size = new OpenLayers.Size(15,15);
		var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
		var icon = new OpenLayers.Icon("img/poi.gif",size,offset);
		var marker=new OpenLayers.Marker(lonlat,icon);
		markers.addMarker(marker);
		var bubble = new OpenLayers.Popup.FramedCloud("theid",
										lonlat,
                                        new OpenLayers.Size(200,70),
                                        "<div style='padding:5px;'>Coordenades:<br/>"+lonlat.lon.toFixed(0)+","+lonlat.lat.toFixed(0)+"</div>",
										icon,
										true,
										null
		);
		bubble.backgroundColor="#E6E6E6";

		this.map.addPopup(bubble);

		marker.popup=bubble;
		marker.events.register('mousedown', marker, 
			function(evt) { 
					this.popup.toggle();
					OpenLayers.Event.stop(evt); 
			}
		);
		//------------------------------------------------

		
	}
	catch (e){
		alert("Error al conversor de coordenades\n"+e.message);
	}
}

function tocUbicar_RefCadBuscar_Click() {
	var q=new OpenLayers.NGCatastroWS({
		map:map,
		serverUrl:catastroWSUrl
	});
	q.queryRC(document.getElementById("tocUbicar_RefCad").value);
}


function handleMeasurements(event) {
	var geometry = event.geometry;
	var units = event.units;
	var order = event.order;
	var measure = event.measure;
	var control=map.getControlsBy("CLASS_NAME","OpenLayers.Control.NGMeasureInfo")[0];
	control.show();
	var element = control.element;
	var out = "";
	if(order == 1) {
		out += "distāncia: " + measure.toFixed(2) + " " + units;
		if (map.getProjection() == "EPSG:4326") {
			out += "<br /> Great Circle Distance: " + 
				calcVincenty(geometry).toFixed(3) + " km *"; 
		}        
	} else {
		out += "ārea: " + measure.toFixed(2) + " " + units + "<sup>2</" + "sup>";
	}
	element.innerHTML = out;
}

function setMeasureControl(map) {
	
	// el control on mostrem la informaciķ.
	map.addControl(new OpenLayers.Control.NGMeasureInfo({divId:"NGMeasureInfoDivId"}));
	
	var measureControls;
	// style the sketch fancy
		sketchSymbolizers = {
			"Point": {
				pointRadius: 4,
				graphicName: "square",
				fillColor: "white",
				fillOpacity: 1,
				strokeWidth: 1,
				strokeOpacity: 1,
				strokeColor: "#333333"
			},
			"Line": {
				strokeWidth: 3,
				strokeOpacity: 1,
				strokeColor: "#666666",
				strokeDashstyle: "dash"
			},
			"Polygon": {
				strokeWidth: 2,
				strokeOpacity: 1,
				strokeColor: "#666666",
				fillColor: "white",
				fillOpacity: 0.3
			}
		};
		var style = new OpenLayers.Style();
		style.addRules([
			new OpenLayers.Rule({symbolizer: this.sketchSymbolizers})
		]);
		var styleMap = new OpenLayers.StyleMap({"default": style});
		
		var options = {
			handlerOptions: {
				style: "default", // this forces default render intent
				layerOptions: {styleMap: styleMap},
				persist: true
			}
		};
		measureControls = {
			line: new OpenLayers.Control.Measure(
			  OpenLayers.Handler.Path, options
			),
			polygon: new OpenLayers.Control.Measure(
				OpenLayers.Handler.Polygon, options
			)
		};
		
		var control;
		for(var key in measureControls) {
			control = measureControls[key];
			control.events.on({
				"measure": handleMeasurements,
				"measurepartial": handleMeasurements
			});
			map.addControl(control);
		}

		   
			
		
	//----------------------------
}

/*
*	Torna el primer Id de layer del mapa actual que
*	amb el mateix nom que passa per parāmetre
*/
function getIdLayerByName (LayerName) {
	var layer;
	for(var i = 0; i < map.layers.length;i++){
		layer = map.layers[i];
		if(layer.name.toLowerCase() == LayerName.toLowerCase()){
			return i;
		}
	}
	return -1;
}

function googleEarthClick(){

	try {

		var printer=new OpenLayers.NGPrint(map,treeContent);
		setPrintParameters(printer,false);

		printer.printerServlet=urlKml;

		var now=new Date();
		var date=now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear();
		var size="A4";
		var orientation="H";
		var pages="1";
	//	var scale=parseInt(map.getScale());

	/*	var mides=document.getElementsByName("mida");
		for (var i=0;i<mides.length ;i++ ) {
			if (mides[i].checked)size=mides[i].value;
		}

		var escales=document.getElementsByName("escala");
		for (var i=0;i<escales.length ;i++ ) {
			if (escales[i].checked)scale=escales[i].value;
		}
		if(scale=="actual")scale=parseInt(map.getScale());*/

		printer.createPDF("legendUrl",treeContent.servletUrl,
			"formatsize",size,
			"formatorientation",orientation,
			"formatpages",pages,
			"title",printTitle,
			"comment",printComment,
			"scale",parseInt(map.getScale()),
			"date",date);

		return;
		
	}
	catch (e) {
		alert("error a googleEarth()\n"+e.message);
	}
}

function downloadPdf(){
	documentPdf = open("pdf/Font_de_les_dades_SIMAE.pdf", "Document", "status=no, directories=no, toolbar=no, width=800, height=600, left=200, top=200");
//	documentPdf.document.title = 'Font de les Dades';
}

//Mostra el dialeg d'ajuda de l'usuari
function downloadHelp(){

	$('#dialegsHelp').dialog({width:450,height:250,resizable:true,position: 'center',show: 'drop',title:'Ajuda'});
	$('#dialegsHelp').dialog('open');
	$('#ajuda').show();
}

function downloadKML(){
	$('#infoandkml').html("<center><div><img src='img/loading.gif' style='margin-top:80px;'/></div><div>Carregant...</div></center>");
	$('#infoandkml').load("kml.html",function() {
		$('#dialegsKML').dialog({width:450,height:270,resizable:true,position: 'center',show: 'drop'});
		$('#dialegsKML').dialog('open');
	});

	//documentAjuda = open("kml.html", "Document", "status=no, directories=no, toolbar=no, width=468, height=260, left=300, top=300");
}

//Crea un objecte tipus tooltip
function creaQTip(element,posicio,desplegament){
   $(element).qtip({
          position: {
             corner: {
                target: posicio,
                tooltip: desplegament
             }
          },
          style: {
             name: 'light',
             padding: '7px 20px',
             width: {
                max: 210,
                min: 0
             },
             tip: true
          }
      });
}


//Mostra o amaga tots els divs del mateix nivell del pare que
//tenen la mateixa familia
function mostrarAmagarAbre(ParentDiv,idFamilia){
	$(ParentDiv).siblings("div [id='fam_" +idFamilia+ "']").toggleClass('arbreVisible');
}




/*
function testHL() {
	// pan per veure el resultat
	map.panTo(new OpenLayers.LonLat(431653,4581604));

	// només volem tenir una sola instāncia.
	if (!searchHL) searchHL=new OpenLayers.NGSearchHighlight({map:map});

	var serviceId="Cadastre_wms";
	var parameters={LAYERS:"limites",refcat: "1516607DF3811F"};// queda al port de barcelona
	searchHL.highlight(serviceId,parameters);
}

function testHL2() {
	// pan per veure el resultat
	map.panTo(new OpenLayers.LonLat(431653,4581604));

	// només volem tenir una sola instāncia.
	if (!searchHL) searchHL=new OpenLayers.NGSearchHighlight({map:map});

	var serviceId="esquematic";
	var parameters={layers: "MunisRMB",transparent:"true",sld: "http://cervia:8080/simae/sld.xml"};
	searchHL.highlight(serviceId,parameters);
}


function testHL3() {
	// pan per veure el resultat
	map.panTo(new OpenLayers.LonLat(431653,4581604));

	// només volem tenir una sola instāncia.
	if (!searchHL) searchHL=new OpenLayers.NGSearchHighlight({map:map});

	var serviceId=treeContent.properties["search.municipi.sld_service"];
	var paramName=treeContent.properties["search.municipi.sld_paramname"];
	var paramValue=treeContent.properties["search.municipi.sld_paramvalue"];
	var layers=treeContent.properties["search.municipi.sld_layers"];

	paramValue=paramValue.replace("[VALOR]","080155");

	var parameters={layers: layers, transparent:"true"};
	parameters[paramName]=paramValue;
console.log(parameters);
	searchHL.highlight(serviceId,parameters);
}

*/


