var R0_blue = new google.maps.MarkerImage('http://www.europeanrealestate.org/_maps/marker.png',
											new google.maps.Size(20, 30),
											new google.maps.Point(0, 0),
											new google.maps.Point(10, 30));

var R0_red = new google.maps.MarkerImage('http://www.europeanrealestate.org/_maps/marker_red.png',
											new google.maps.Size(20, 30),
											new google.maps.Point(0, 0),
											new google.maps.Point(10, 30));                                            
    	
var R0_blue_shadow = new google.maps.MarkerImage('http://www.europeanrealestate.org/_maps/marker_shadow.png',
                                            new google.maps.Size(30, 27),
                                            new google.maps.Point(0, 0),
                                            new google.maps.Point(10, 30));
                                                
var R_I_P = new google.maps.MarkerImage('http://maps.google.com/mapfiles/kml/pal4/icon25.png',
											new google.maps.Size(32, 32),
											new google.maps.Point(0, 0),
											new google.maps.Point(17, 16));

var R_I_P_shadow = new google.maps.MarkerImage('http://maps.google.com/mapfiles/kml/pal4/icon25s.png',
											new google.maps.Size(59, 32),
											new google.maps.Point(0, 0),
											new google.maps.Point(29, 16));


var map = null;
var bounds = null;
var myLatLng = null;
var myZoom = null;
var point_check = null;
var point_add = null;
var InfoWindow = new google.maps.InfoWindow({pixelOffset: new google.maps.Size(-2, 30)});
var DirectionsService = new google.maps.DirectionsService();
var DirectionsDisplay = null;


function loadmapas(div_map,latitude, longitude, zoom, type_map)
{
        div_map = div_map || 'map';
        latitude = latitude || 39.4666;
        longitude = longitude || -0.3730;
        zoom = zoom || 10;
        type_map = type_map || 'ROADMAP';
         
        switch(type_map)
        {

            case 'ROADMAP':

                var type_map = google.maps.MapTypeId.ROADMAP;

            break;
            
            case 'SATELLITE':

                var type_map = google.maps.MapTypeId.SATELLITE;  

            break;
            
            case 'HYBRID':

                var type_map = google.maps.MapTypeId.HYBRID; 

            break;
            
            case 'TERRAIN':

                var type_map = google.maps.MapTypeId.TERRAIN;   

            break;
            
        }    
        
    	
    	bounds = new google.maps.LatLngBounds();
       	
        myLatLng = new google.maps.LatLng(latitude,longitude);
       	
        myZoom = zoom;
        	
        DirectionsDisplay = new google.maps.DirectionsRenderer();
        
        var myOptions = {
              zoom: myZoom,
              mapTypeId: type_map,
              center: myLatLng,
        	  navigationControl: 1,
        	  scaleControl: 1,
        	  mapTypeControl: 1
        };
        	
       	map = new google.maps.Map(document.getElementById(div_map),myOptions);
        	
        DirectionsDisplay.setMap(map);    
}


function setPoint(marker, latitude, longitude, ref, url, text, img, idioma){
        
        marker = marker || 'marker0';
        latitude = latitude || 39.47024;
        longitude = longitude || -0.37681;
        ref = ref || 'marker0';
        url = url || "";
        text = text || "";
        img = img || "";
        idioma = idioma || 'en';
        
        var point = 'point_set_';
        var textInfoWindow = "";
        
        if(url != "" && img != ""){ textInfoWindow = "<a href="+url+"><img src="+img+" align=left width=80 height=60 style=margin-right:10px /></a>" }
         
        if(url != "" && text != ""){ 
            
            switch(idioma)
            {

            case 'es':

                textInfoWindow += "<font face=verdana size=-2><b>Ref. "+ref+"</b><br />"+text+"<br><a href="+url+">m&aacute;s info</a></font>"; 

            break;
            
            case 'en':

                textInfoWindow += "<font face=verdana size=-2><b>Ref. "+ref+"</b><br />"+text+"<br><a href="+url+">more details</a></font>";   

            break;
            
            case 'de':

                textInfoWindow += "<font face=verdana size=-2><b>Ref. "+ref+"</b><br />"+text+"<br><a href="+url+">mehr Details</a></font>"; 

            break;
            
            case 'fr':

                textInfoWindow += "<font face=verdana size=-2><b>Ref. "+ref+"</b><br />"+text+"<br><a href="+url+">plus d'info</a></font>";   

            break;
            
            case 'it':

                textInfoWindow += "<font face=verdana size=-2><b>Ref. "+ref+"</b><br />"+text+"<br><a href="+url+">Info</a></font>";   

            break;
            
            }
            
        }
        
        window[point+marker] = new google.maps.LatLng(latitude, longitude);	
       	bounds.extend(window[point+marker]);
        
        window[marker] = new google.maps.Marker ({
					position: window[point+marker],
					map: map,
					title: ref,
					icon: R0_blue,
					shadow: R0_blue_shadow }) ;
        
        if(text == "" && url != "")
        {
        
            google.maps.event.addListener(window[marker], "click", function() { document.location.href =url;});
        
        }
        else if(text != "" && url != "")
        {
            
            google.maps.event.addListener(window[marker], "click", function() {
							
                    map.panTo(window[point+marker]);
                    InfoWindow.setContent(textInfoWindow);
                    InfoWindow.open(map,window[marker]);
        
            }) ;                                
        
        }                                
        
        map.setCenter(window[point+marker]);
        map.setZoom(15);
        
        return window[point+marker];

}

function addPoint(marker, latitude, longitude, ref, url, text, img, idioma){
      
        marker = marker || 'marker1';
        latitude = latitude || 38.7893;
        longitude = longitude || 0.1665;
        ref = ref || 'marker1';
        url = url || "";
        text = text || "";
        img = img || "";
        idioma = idioma || 'en';

        var point = 'point_add_';
        var textInfoWindow = "";
        
        if(url != "" && img != ""){ textInfoWindow = "<a href="+url+"><img src="+img+" align=left width=80 height=60 style=margin-right:10px /></a>" }
         
        if(url != "" && text != ""){ 
            
            switch(idioma)
            {

            case 'es':

                textInfoWindow += "<font face=verdana size=-2><b>Ref. "+ref+"</b><br />"+text+"<br><a href="+url+">m&aacute;s info</a></font>"; 

            break;
            
            case 'en':

                textInfoWindow += "<font face=verdana size=-2><b>Ref. "+ref+"</b><br />"+text+"<br><a href="+url+">more details</a></font>";   

            break;
            
            case 'de':

                textInfoWindow += "<font face=verdana size=-2><b>Ref. "+ref+"</b><br />"+text+"<br><a href="+url+">mehr Details</a></font>"; 

            break;
            
            case 'fr':

                textInfoWindow += "<font face=verdana size=-2><b>Ref. "+ref+"</b><br />"+text+"<br><a href="+url+">plus d'info</a></font>";   

            break;
            
            case 'it':

                textInfoWindow += "<font face=verdana size=-2><b>Ref. "+ref+"</b><br />"+text+"<br><a href="+url+">Info</a></font>";   

            break;
            
            }
            
        }
        
        window[point+marker] = new google.maps.LatLng(latitude, longitude);	
       	bounds.extend(window[point+marker]);
        
        window[marker] = new google.maps.Marker ({
					position: window[point+marker],
					map: map,
					title: ref,
					icon: R0_blue,
					shadow: R0_blue_shadow }) ;
        
        if(text == "" && url != "")
        {
        
            google.maps.event.addListener(window[marker], "click", function() { document.location.href =url;});
        
        }
        else if(text != "" && url != "")
        {
            
            google.maps.event.addListener(window[marker], "click", function() {
							
                    map.panTo(window[point+marker]);
                    InfoWindow.setContent(textInfoWindow);
                    InfoWindow.open(map,window[marker]);
        
            }) ;                                
        
        }
        
        map.fitBounds(bounds);
        map.setZoom(map.getZoom()-1);
        
        return window[point+marker];

}



function addInterestPoint(Startpoint, marker, latitude, longitude, ref, url, text, img, idioma){


        ref = ref || 'Point of Interest';
        url = url || "";
        text = text || "";
        img = img || "";
        idioma = idioma || 'en';
        
        if(img != ""){ img = '<img src=\"'+img+'" align=\"left\" hspace=3 />'; } 
        
        var apelo = '';
        var html = '';
        var point = 'point_interest_';
        var original_point = Startpoint;
        
        var textInfoWindow = "";
        
        window[point+marker] = new google.maps.LatLng(latitude, longitude);	
       	bounds.extend(window[point+marker]);
        
        var walking = {
        
            origin:original_point, 
            destination:window[point+marker],
            travelMode: google.maps.DirectionsTravelMode.WALKING
        
        };
        
        var driving = {
        
            origin:original_point, 
            destination:window[point+marker],
            travelMode: google.maps.DirectionsTravelMode.DRIVING
        
        };
        
        window[marker] = new google.maps.Marker ({
					position: window[point+marker],
					map: map,
					title: ref,
					icon: R_I_P,
					shadow: R_I_P_shadow }) ;

        //alert(DirectionsService);
        
        DirectionsService.route(walking, function(response, status) {
				  
                //alert(status);
                if (status == google.maps.DirectionsStatus.OK) {
				  	
                        
                        var d=response.routes[0].legs[0].distance.value;
					
                        if (d>1000) {
						
                            apelo = Math.round(d.toFixed(5)/10)/100 +" km.";
                            html = " <br /> a "+ apelo;
						
                        }
                        else
                        { 
						
                            apelo = Math.round(d.toFixed(5)) + " m."; 
                            html = "<br /> a "+ apelo;
						
                        }
                }
				  
                document.getElementById("dist_"+marker).innerHTML = html;
                
                switch(idioma)
                {
        
                    case 'es':
        
                        textInfoWindow = img + "Punto de <br />inter&eacute;s:<br>" + ref + "<br />a " + apelo + " de la propiedad<br />(en l&iacute;nea recta)<br /> <a href=\"javascript:google.maps.event.trigger(" + marker + ", 'dirs');\" title=\"Ver ruta\"> ruta en coche </a>";
        
                    break;
                    
                    case 'en':
        
                        textInfoWindow = img + "Marker:<br>" + ref + "<br />at " + apelo + " from property<br />(straight line)<br /> <a href=\"javascript:google.maps.event.trigger(" + marker + ", 'dirs');\" title=\"see route\"> Car route </a>";  
        
                    break;
                    
                    case 'de':
        
                        textInfoWindow = img + "Interessanter<br />Ort:<br>" + ref + "<br />" + apelo + " vom Objekt <br />entfernt<br /> <a href=\"javascript:google.maps.event.trigger(" + marker + ", 'dirs');\" title=\"Strecke anschauen\"> Strecke anschauen </a>";
        
                    break;
                    
                    case 'fr':
        
                        textInfoWindow = img + "Point <br />d'int&eacute;r&ecirc;t:<br>" + ref + "<br />a " + apelo + " de la propri&eacute;t&eacute;<br />(en ligne droite)<br /> <a href=\"javascript:google.maps.event.trigger(" + marker + ", 'dirs');\" title=\"Itin&eacute;raire\"> Itin&eacute;raire en voiture</a>";  
        
                    break;
                    
                    case 'it':
                    
                        textInfoWindow = img + "Zona di <br />interesse:<br>" + ref + "<br />a " + apelo + " dalla propriet&aacute;<br />(in linea retta)<br /> <a href=\"javascript:google.maps.event.trigger(" + marker + ", 'dirs');\" title=\"tragitto in macchina\"> tragitto in macchina </a>";   
        
                    break;
                    
                }

        });
        
        

        google.maps.event.addListener(window[marker], "dirs", function() {
			
                DirectionsService.route(driving, function(response, status) {
						
                                if (status == google.maps.DirectionsStatus.OK) {	
			
                                    DirectionsDisplay.setDirections(response);
                                    map.panTo(window[point+marker]);
							
                                    InfoWindow.setContent(textInfoWindow);
                                    InfoWindow.open(map,window[marker]);
                                }
                });
                
        }) ;
	
	 	google.maps.event.addListener(window[marker], "click", function() {

                map.panTo(window[point+marker]);
                InfoWindow.setContent(textInfoWindow);    
                InfoWindow.open(map,window[marker]);
        }) ;

        map.fitBounds(bounds);
        map.setZoom(map.getZoom()-1);

        return window[point+marker];

}

function mapAdjust(){ 
						
        InfoWindow.close();
        map.fitBounds(bounds);
                
}

function newZoom(x){ 
						
        window.setTimeout(function() {
	    
            map.setZoom(x);
    	
        }, 1000);
                      
}

function clickInterestPoint(marker){ 
						
        google.maps.event.trigger(marker,'dirs');
                
}


function clickPoint(marker){

        google.maps.event.trigger(marker,"click");

}

function onMouseOverPoint(marker){

        window[marker].setMap(window[marker].getMap()); 
        window[marker].setIcon(R0_red);

}

function onMouseOutPoint(marker){

        window[marker].setIcon(R0_blue);

}

function deletePoint(marker){
		
        window[marker].setMap(null);
		map.fitBounds(bounds);
		map.setZoom(map.getZoom(bounds));
		
}






















function fourCorners(){

        var southWest = bounds.getSouthWest();
        var northEast = bounds.getNorthEast();
        
        var NE = new Array(2);
        var NW = new Array(2);
        var SE = new Array(2);
        var SW = new Array(2);
        
        NE[0] = northEast.lat();
        NE[1] = northEast.lng();
        
        SW[0] = southWest.lat();
        SW[1] = southWest.lng();
        
        NW[0] = NE[0]*(-1);
        NW[1] = NE[1];
        
        SE[0] = SW[0];
        SE[1] = SW[1]*(-1);
        
        var triangleCoords = [
        new google.maps.LatLng(NE[0], NE[1]),
        new google.maps.LatLng(SW[0], SW[1]),
        new google.maps.LatLng(NW[0], NW[1]),
        new google.maps.LatLng(SE[0], SE[1])
        ];

        // Construct the polygon
        bermudaTriangle = new google.maps.Polygon({
            paths: triangleCoords,
            strokeColor: "#FF0000",
            strokeOpacity: 0.8,
            strokeWeight: 2,
            fillColor: "#FF0000",
            fillOpacity: 0.35
        });

   bermudaTriangle.setMap(map);

        
        document.write('NE : '+NE[0]+','+NE[1]+' ');
        document.write('SW : '+SW[0]+','+SW[1]+' ');
        document.write('NW : '+NW[0]+','+NW[1]+' ');
        document.write('SE : '+SE[0]+','+SE[1]+' ');

}

        
        
