function renderMap(){                                                                                                                             
	if (GBrowserIsCompatible()) {                                                                                                                    
			var m = document.getElementById("map");                                                                                                      
		 	map = new GMap(m);                                                                                                                           
			                                                                                                                                             
			map.centerAndZoom(new GPoint(-3,40), 11);                                                                                                    
			map.enableDragging();                                                                                                                        
			map.enableInfoWindow();                                                                                                                      
			map.addControl(new GLargeMapControl());                                                                                                      
			map.addControl(new GMapTypeControl());                                                                                                       
			map.addControl(new GScaleControl());                                                                                                         
			map.setMapType(G_HYBRID_MAP);                                                                                                            
			                                                                                                                                             
			mapExtent = new GMap(document.getElementById("mapExtent"));                                                                                  
		 	mapExtent.centerAndZoom(new GPoint(-3,40), 16);                                                                                              
		 	mapExtent.disableDragging();                                                                                                                 
		 						                                                                                                                                   
			GEvent.addListener(map, "moveend", onMoveEndMap);                                                                                            
			                                                                                                                                                                                                                                                                                                                                                             
			displayCenterLatLong();
			displayCenterXYH_UTM();
			display_h_gtopo();
			cursor();                                                                                                                                    
			                                                                                                                                             
			// Hook the mouse wheel to the zoom function                                                                                                 
	        hookMouseWheelHandlers(m);                                                                                                               
			                                                                                                                                             
			renderMapIni();                                                                                                                           
	                                                                                                                                                 
			if (window.attachEvent) {                                                                                                                    
        		window.attachEvent("onresize", function() {this.map.onResize();cursor();} );                                                           
    		} else {                                                                                                                                   
        		window.addEventListener("resize", function() {this.map.onResize();cursor();} , false);                                                 
    		}                                                                                                                                          
	                                                                                                                                                 
	}  else {                                                                                                                                        
      alert("Sorry, the Google Maps API is not compatible with this browser");                                                                     
    }                                                                                                                                              
			  			                                                                                                                                     
}                                                                                                                                                  
                                                                                                                                                   
                                                                                                                                                
function onMoveEndMap (){                                                                                                                          
		                                                                                                                                               
				var bounds = map.getBoundsLatLng();                                                                                                        
				var line = new GPolyline([new GPoint(bounds.minX, bounds.minY),                                                                            
				new GPoint(bounds.maxX, bounds.minY),                                                                                                      
				new GPoint(bounds.maxX, bounds.maxY), new GPoint(bounds.minX, bounds.maxY),                                                                
				new GPoint(bounds.minX, bounds.minY)], "#ff6600", 3, .8);                                                                                  
					  			                                                                                                                                 
		    	mapExtent.recenterOrPanToLatLng(map.getCenterLatLng());                                                                                  
					  			                                                                                                                                 
				if(map.getZoomLevel() <= 8) mapExtent.zoomTo(12);                                                                                          
				else if(map.getZoomLevel() < 9)mapExtent.zoomTo(12);                                                                                       
				else if(map.getZoomLevel() < 12)mapExtent.zoomTo(15);                                                                                      
				else mapExtent.zoomTo(15);                                                                                                                 
			                                                                                                                                             
				mapExtent.clearOverlays();                                                                                                                 
  				mapExtent.addOverlay(line);                                                                                                              
				                                                                                                                                           
				displayCenterLatLong();
				displayCenterXYH_UTM();
				display_h_gtopo();
				                                                                                                                                           
				onMoveEndMapIni();                                                                                                                         
}                                                                                                                                                  
                                                                                                                                                   
                                                                                                                                                   
/*Panoramio.com code*/                                                                                                                             
/* quick hacks */                                                                                                                                  
function Dimensions(left, top, width, height) {                                                                                                    
	this.left = left;                                                                                                                                
	this.top = top;                                                                                                                                  
	this.width = width;                                                                                                                              
	this.height = height;                                                                                                                            
}                                                                                                                                                  
                                                                                                                                                   
function getDimensions(control) {                                                                                                                  
	var tmp = control;                                                                                                                               
	var left = 0;                                                                                                                                    
	var top = 0;                                                                                                                                     
                                                                                                                                                   
	while (tmp != null) {                                                                                                                            
		left += tmp.offsetLeft;                                                                                                                        
		top += tmp.offsetTop;                                                                                                                          
		tmp = tmp.offsetParent;                                                                                                                        
	}                                                                                                                                                
                                                                                                                                                   
	return new Dimensions(left, top, control.offsetWidth, control.offsetHeight);                                                                     
}                                                                                                                                                  
                                                                                                                                                   
function cursor(){                                                                                                                                 
    var m = $("map");                                                                                                                              
	d = getDimensions(m);                                                                                                                            
	                                                                                                                                                 
	// reposition the crosshair                                                                                                                      
	                                                                                                                                                 
	var ch = $("crosshair");                                                                                                                         
	ch.style.display = "block";                                                                                                                      
	ch.style.top = (d.top + Math.round((d.height - ch.height) / 2)) + "px";                                                                          
	ch.style.left = (d.left + Math.round((d.width - ch.width) / 2)) + "px";                                                                          
	                                                                                                                                                 
}                                                                                                                                                  
/* === functions to implement smooth zoom with mouse wheel === */                                                                                  
GMap.prototype.applyZoom = function(a)                                                                                                             
{                                                                                                                                                  
	var b = this;                                                                                                                                    
	var c = Math.floor(Math.log(b.viewSize.width) * Math.LOG2E - 2);                                                                                 
	var d = clamp(b.zoomLevel - a, -c, c);                                                                                                           
	var e = Math.pow(2, d);                                                                                                                          
	b.div.style.zoom = e;                                                                                                                            
	var f = b.viewSize.width * b.centerScreen.x;                                                                                                     
	var h = b.viewSize.height * b.centerScreen.y;                                                                                                    
	b.div.style.left = exO((this._savedOffset.x - f) * e + f);                                                                                       
	b.div.style.top = exO((this._savedOffset.y - h) * e + h);                                                                                        
}                                                                                                                                                  
                                                                                                                                                   
GMap.prototype.smoothZoomTo = function(zoom_in) {                                                                                                  
	var a = this;                                                                                                                                    
	                                                                                                                                                 
	if (!a._zoomInterval)                                                                                                                            
		a._targetZoom = parseInt(a.getZoomLevel());                                                                                                    
	                                                                                                                                                 
	a._targetZoom = clamp(a._targetZoom + (zoom_in ? 1 : -1), 0, 17);                                                                                
	if (a.div.style.zoom == undefined) {                                                                                                             
		a.zoomTo(a._targetZoom);                                                                                                                       
		return;                                                                                                                                        
	}                                                                                                                                                
	                                                                                                                                                 
	if (a._zoomInterval)                                                                                                                             
		return;                                                                                                                                        
                                                                                                                                                   
	a._currentZoom = parseInt(a.getZoomLevel());                                                                                                     
	a._savedOffset={"x" : a.div.offsetLeft, "y" : a.div.offsetTop};                                                                                  
	a.hideOverlays();                                                                                                                                
                                                                                                                                                   
	this._zoomInterval = setInterval(function() {                                                                                                    
		a._currentZoom += 0.3 * (a._targetZoom - a._currentZoom);                                                                                      
		                                                                                                                                               
		if (Math.abs(a._targetZoom - a._currentZoom) < 0.15) {                                                                                         
			if (a._savedOffset) {                                                                                                                        
				a.div.style.left=exO(a._savedOffset.x);                                                                                                    
				a.div.style.top=exO(a._savedOffset.y);                                                                                                     
			}                                                                                                                                            
			a.div.style.zoom = 1;                                                                                                                        
			a.showOverlays();                                                                                                                            
			a.zoomTo(a._targetZoom);                                                                                                                     
			a._savedOffset = null;                                                                                                                       
			window.clearInterval(a._zoomInterval);                                                                                                       
			a._zoomInterval = null;                                                                                                                      
		}                                                                                                                                              
		else {                                                                                                                                         
			a.applyZoom(a._currentZoom);                                                                                                                 
		}                                                                                                                                              
	}, 50);                                                                                                                                          
}                                                                                                                                                  
                                                                                                                                                   
function hookMouseWheelHandlers(d)                                                                                                                 
{                                                                                                                                                  
	Event.observe(d, 'mousewheel', zoom, false);                                                                                                     
}                                                                                                                                                  
                                                                                                                                                   
function zoom(oEvent)                                                                                                                              
{                                                                                                                                                  
	map.smoothZoomTo(Event.wheelDelta(oEvent) < 0);                                                                                                  
	Event.stop(oEvent);                                                                                                                              
}                                                                                                                                                  
//////////////////////////////////////////                                                                                                         
                                                                                                                                                   
/* some additions to prototype.js, effects.js and controls.js by Joaquin Cuenca Abela */                                                           
function clamp(i,a,b){return i<=a?a:i>=b?b:i}                                                                                                      
function exO(a){return Math.round(a)+"px"}                                                                                                         
///////////////////////////////////////////                                                                                                        
                                                                                                                                                   
    // Add a zoom listener to display latitude and longitude                                                                                       
function displayCenterLatLong(){                                                                                                                   
                                                                                                                                                   
        var center = map.getCenterLatLng(); 
		var zoomactual = map.getZoomLevel()
        //var latLngStr = '(' + center.y + ', ' + center.x + ')';                                                                                  
        //document.getElementById("message").innerHTML = latLngStr; 
		
		document.getElementById("londeg").innerHTML = center.x.toFixed(6)+"º";
		document.getElementById("latdeg").innerHTML = center.y.toFixed(6)+"º";
		
		var tuposicion = "<a href='http://gmaps.cartesia.org/?lat="+center.y+"&lon="+center.x+"&z="+zoomactual+"'>Guarda tu posición</a>";
		document.getElementById("guardaposicion").innerHTML = tuposicion;		
		
		var lngdeg = dec2sex (center.x, 'x');                                                                                                          
        document.getElementById("longgmmss").innerHTML = lngdeg;                                                                                    
		var latdeg = dec2sex (center.y, 'y');                                                                                                          
        document.getElementById("latggmmss").innerHTML = latdeg;   
}                                                                                                                                                  
                                                                                                                                                   
function dec2sex (dec, dir) {                                                                                                                      
  // dec = A decimal measurement, perhaps a GPoint.x or .y                                                                                         
  // dir = 'x' or 'y'                                                                                                                              
  // returns a string such as 47&deg; 22' 40" N                                                                                                    
     var plus=Math.abs(dec);                                                                                                                       
     var degr=Math.floor(plus);                                                                                                                    
     var minu=Math.floor(60*(plus-degr));                                                                                                          
     var sec=Math.floor(60*(60*(plus-degr)-minu));                                                                                                 
     var compass="?"                                                                                                                               
     if (minu<10) {minu="0"+minu};                                                                                                                 
     if (sec<10) {sec="0"+sec};                                                                                                                    
     if (dir=='y') compass=dec<0?"S":"N";                                                                                                          
     else compass=dec<0?"W":"E";                                                                                                                   
                                                                                                                                                   
                                                                                                                                                   
return ""+degr+"° "+minu+"' "+sec+'" '+compass;                                                                                                    
                                                                                                                                                   
}                                                                                                                                                  
                                                                                                                                                   
                                                                                                                                               
// Creates a marker whose info window displays the given number                                                                                    
// Sólo se puede pintar un "marker", por eso hay que sacarlo fuera de la funcion. tfsevillla                                                       
function createMarker(point, html, icon) {                                                                                                               
                                                                                                                                                   
		var marker = new GMarker(point,icon);                                                                                                               
		                                                                                                                                               
		GEvent.addListener(marker, "click", function() {                                                                                               
		    marker.openInfoWindowHtml(html);                                                                                                           
  			});	                                                                                                                                       
                                                                                                                                                   
        return marker;                                                                                                                             
 }  
 
 //////
 function displayCenterXYH_UTM(){                                                                                                                   
                                                                                                                                                   
        var center = map.getCenterLatLng();                                                                                                        
		var XYHUTM=new Array(3);
		XYHUTM = geo2utm(center.y,center.x);
		document.getElementById("XUTM").innerHTML = parseInt(XYHUTM[1])+" m"
		document.getElementById("YUTM").innerHTML = parseInt(XYHUTM[2])+" m" 
		document.getElementById("HUTM").innerHTML = "Huso "+XYHUTM[0];                                                                                                                                                                                          
}   

 
//Correspondencia entre coordenadas

//Código Original

//--- Carlos Sabando Grasa
//--- Trabajos Catastrales, S.A.
//--- e-mail: webmaster@tracasa.es

//Adaptado por tfsevilla@cartesia.org 01-04-2006

var hayford=new Array(2)
hayford.e2=0.0067395
hayford.c=6399593.63

var wgs84=new Array(2)
//Excentricidad al cuadrado
//wgs84.e2=0.00669451
wgs84.e2=0.0067395
//Radio meridiano para latitud=90º
wgs84.c=6399593.63

function calcularBsubPhi(phi)
{
	var A1,A2,J2,J4,J6,alpha,beta,gamma
	var cos2phi=Math.pow(Math.cos(phi),2)
	A1=Math.sin(2*phi)
	A2=A1*cos2phi
	J2=phi+A1/2
	J4=(3*J2+A2)/4
	J6=(5*J4+A2*cos2phi)/3
	alpha=3/4*wgs84.e2
	beta=5/3*Math.pow(alpha,2)
	gamma=35/27*Math.pow(alpha,3)
	return 0.9996*wgs84.c*(phi-alpha*J2+beta*J4-gamma*J6)
}
function meridCentralHuso(huso)
{
	return 6*huso-183
}
function determHuso(lambda)
{
	var huso=(lambda/6)+31
	while(huso<1)
		huso+=60
	return parseInt(huso)
}
function geo2utm2(lat,lon,huso)
{
	var xi,A,n,nu,tseta,BsubPhi,deltaLambda,lambda0,lambda,phi,cos2phi,husoXY
	phi=lat*Math.PI/180
	lambda=lon*Math.PI/180
	husoXY=new Array(3)
	husoXY[0]=huso
	lambda0=meridCentralHuso(huso)*Math.PI/180
	deltaLambda=lambda-lambda0
	A=Math.cos(phi)*Math.sin(deltaLambda)
	xi=1/2*Math.log((1+A)/(1-A))
	n=Math.atan2(Math.tan(phi),Math.cos(deltaLambda))-phi
	cos2phi=Math.pow(Math.cos(phi),2)
	nu=wgs84.c*0.9996/Math.pow((1.0+wgs84.e2*cos2phi),0.5)
	tseta=wgs84.e2/2*xi*xi*cos2phi
	BsubPhi=calcularBsubPhi(phi)
	husoXY[2]=n*nu*(1+tseta)+BsubPhi
	//tfsevilla@cartesia.org 01-04-2006
	//Para latitudes por debajo del ecuador
	if (husoXY[2] < 0) {husoXY[2] += 10000000;}
	//
	husoXY[1]=xi*nu*(1+tseta/3)+500000
	return husoXY
}
function geo2utm(lat,lon)
{
	return geo2utm2(lat,lon,determHuso(lon))
}
function utm2geo(huso,x,y)
{
	var phi,nu,a,b,tseta,xi,eta,senhXi,deltaLambda,t
	var cos2phi,BsubPhi,lat,lon,latLon,sumando1,sumando2,corchete,lambda0
	x-=500000
	phi=y/6366197.724/0.9996
	cos2phi=Math.pow(Math.cos(phi),2)
	nu=wgs84.c*0.9996/Math.pow((1+wgs84.e2*cos2phi),0.5)
	a=x/nu
	BsubPhi=calcularBsubPhi(phi)
	b=(y-BsubPhi)/nu
	tseta=wgs84.e2*a*a/2*cos2phi
	xi=a*(1-tseta/3)
	eta=b*(1-tseta)+phi
	senhXi=(Math.exp(xi)-Math.exp(-xi))/2
	deltaLambda=Math.atan2(senhXi,Math.cos(eta))
	t=Math.atan(Math.cos(deltaLambda)*Math.tan(eta))
	sumando1=wgs84.e2*cos2phi
	sumando2=3/2*wgs84.e2*Math.sin(phi)*Math.cos(phi)*(t-phi)
	corchete=1+sumando1-sumando2
	lambda0=meridCentralHuso(huso)*Math.PI/180
	latLon=new Array(2)
	lat=phi+corchete*(t-phi)
	lon=deltaLambda+lambda0
	latLon[0]=lat*180/Math.PI
	latLon[1]=lon*180/Math.PI
	return latLon
}
function escribirZ(i)
{
	return (","+perfil[i][1])
}
function cambioHuso(x,y,husoOrig,husoDest)
{
	var geo=utm2geo(husoOrig,x,y)
	return geo2utm2(geo[0],geo[1],husoDest)
}
/////////////

//tfsevilla@cartesia.org
//Obtener la altura del punto
function display_h_gtopo(){
	  
	  var center = map.getCenterLatLng();
	                                                                                                                
      var request = GXmlHttp.create();                                                                                                             
	  var center = map.getCenterLatLng();                                                                                                            
	  var target = "http://ws.geonames.org/gtopo30?lat="+center.y+"&lng="+center.x;  
	  var url = "http://gmaps.cartesia.org/yproxy.php?" + encodeURI(target);                                                                        
      var myRequest = request.open("GET", url, true);                                                                                                              
                                                                                                                                                   
	  request.onreadystatechange = function() {                                                                                                                                                                                                                                                  
	  	if (request.readyState == 4) {                                                                                                                 
	  	  document.getElementById("hgtopo30").innerHTML = request.responseText +"m snm";                                                                                                                                                                                                                                                 
      	}
	  }
      request.send(null);
}

//test
function hgtopo302(lat,lon){

	//var opt = {
	// función a llamar cuando reciba la respuesta
	//	onSuccess: function(t) {
	//		altura_gtopo = t.responseText;
	//	}
	//}
 
	var target = "http://ws.geonames.org/gtopo30?lat="+lat+"&lng="+lon;  
	var url = "http://gmaps.cartesia.org/yproxy.php?" + encodeURI(target);
	var url = "http://gmaps.cartesia.org/yproxy.php";
	var pars = encodeURI(target);
	var myAjax = new Ajax.Request(url, {method: 'get', parameters: pars, onSuccess: showAlturaGtopo});
	//var myAjax = new Ajax.Request(url, op);
	
	return altura_gtopo;
	
}
                                                                                                                                                
