var baseIcon = new GIcon(G_DEFAULT_ICON);
baseIcon.iconSize = new GSize(32, 32);
baseIcon.shadowSize = new GSize(56, 32);
baseIcon.iconAnchor = new GPoint(16, 32);
baseIcon.infoWindowAnchor = new GPoint(16, 0);

var baseIconGroupBefreelance = new GIcon(G_DEFAULT_ICON);
baseIconGroupBefreelance.iconSize = new GSize(20, 34);
baseIconGroupBefreelance.shadow = '/images/shadow50.png';
baseIconGroupBefreelance.shadowSize = new GSize(37, 34);
baseIconGroupBefreelance.iconAnchor = new GPoint(10, 34);
baseIconGroupBefreelance.infoWindowAnchor = new GPoint(10, 0);

var baseIconBefreelance = new GIcon(G_DEFAULT_ICON);
baseIconBefreelance.iconSize = new GSize(20, 34);
baseIconBefreelance.shadow = '/images/shadow50-hombre.png';
baseIconBefreelance.shadowSize = new GSize(37, 34);
baseIconBefreelance.iconAnchor = new GPoint(10, 34);
baseIconBefreelance.infoWindowAnchor = new GPoint(9, 2);
baseIconBefreelance.infoShadowAnchor = new GPoint(18, 25);


var redIcon = new GIcon(baseIcon, "http://www.google.com/intl/en_us/mapfiles/ms/micons/red-dot.png");
var blueIcon = new GIcon(baseIcon, "http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png");
var pinkIcon = new GIcon(baseIcon, "http://www.google.com/intl/en_us/mapfiles/ms/micons/pink-dot.png");
var yellowIcon = new GIcon(baseIcon, "http://www.google.com/intl/en_us/mapfiles/ms/micons/yellow-dot.png");
var greenIcon = new GIcon(baseIcon, "http://www.google.com/intl/en_us/mapfiles/ms/micons/green-dot.png");
var groupBefreelanceIcon = new GIcon(baseIconGroupBefreelance, "/images/markerff-befreelance.gif");
var befreelanceIcon = new GIcon(baseIconBefreelance, "/images/markerff-hombre.gif");


function LoadingControl() {
}

LoadingControl.prototype = new GControl();

LoadingControl.prototype.initialize = function(map) {
  var container = document.createElement("div");
	
  var zoomOutDiv = document.createElement("div");
  this.setButtonStyle_(zoomOutDiv);
  container.appendChild(zoomOutDiv);
  zoomOutDiv.appendChild(document.createTextNode("...buscando..."));
  
  map.getContainer().appendChild(container);
  return container;
}

LoadingControl.prototype.getDefaultPosition = function() {
  return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(70, 70));
}

// Define el CSS adecuado para un elemento de botón determinado.
LoadingControl.prototype.setButtonStyle_ = function(button) {
  button.style.fontWeight = "bold";
  button.style.color = "#000000";
  button.style.backgroundColor = "#E77B00";
  button.style.fontFamily = "Arial";
  button.style.fontSize = "2em";
  button.style.border = "2px dashed black";
  button.style.padding = "1px";
  button.style.marginBottom = "1px";
  button.style.textAlign = "center";
  button.style.width = "10em";
  button.style.cursor = "wait";
  button.style.opacity = "0.85";
}


var group_markers="";
var loading_control=new LoadingControl();

function GroupObj(object) {
    this.latlng = new GLatLng(object.lt, object.ln);	
	this.maxlat=object.maxlt;
	this.maxlng=object.maxln;
	this.minlat=object.minlt;
	this.minlng=object.minln;
    this.id = object.id;    
	this.freelances = object.fr;
	this.link_text = object.lk;
}
GroupObj.prototype.getLatLng = function() {
    return this.latlng;
};

GroupObj.prototype.getMaxLat = function() {
    return this.maxlat;
};

GroupObj.prototype.getMaxLng = function() {
    return this.maxlng;
};
GroupObj.prototype.getMinLat = function() {
    return this.minlat;
};

GroupObj.prototype.getMinLng = function() {
    return this.minlng;
};

GroupObj.prototype.getId = function() {
    return this.id;
};

GroupObj.prototype.getLinkText = function() {
    return this.link_text;
};

GroupObj.prototype.getFreelances = function() {
    return this.freelances;
};

GroupObj.prototype.getInfoSandwich = function() {
    var sandwich = "<div class='type-normal'><p class='header-results-2'><span class='header-results-title'>" + 
		this.getFreelances() + " freelances </span></p></div>";
    return sandwich;
};


function showGroupMarkers() {	
    markers = [];
    //map.clearOverlays();
    if (typeof(group_markers) == "string") {
        group_markers = eval(group_markers);
    }
    showMarkers(group_markers);	
	
}

function showMarkers(elements) {
	map.removeControl(loading_control);
    for (var i = 0; i < elements.length; i++) {
        var element; 		
 		element = new GroupObj(elements[i]);
		
		marker = createMarker(element);		
        map.addOverlay(marker);
    }
}

var displayingMarkerInfo=false
var current_marker=null;
function createMarker(element) {        
    	var marker=null;
        marker = new GMarker(element.getLatLng(), {
            icon: groupBefreelanceIcon,
            draggable: false,
            title: element.getFreelances() + " freelances"
        });
	    marker.element = element;
		results_link='/';
		if (element.getFreelances() == "1") {
			results_link="/freelance_profile/view_from_map?latitude="+element.getMaxLat() +"&longitude="+element.getMaxLng();
		} else {
			results_link="/portal/global_search?maxlat="+element.getMaxLat() +"&minlat="+element.getMinLat() +"&maxlng="+element.getMaxLng() +"&minlng="+element.getMinLng();
		}
        marker.myHtml = "<div class='sandwich-text' style='height:20px;width:220px'>" + element.getInfoSandwich() +
        "&nbsp;&nbsp;[<a href='"+results_link+"' class='toplinks' style='color:#E77B00;padding-left:10px'>" +element.getLinkText() + "</a>] " +
        "[<a class='toplinks' style='color:#E77B00;padding-left:10px' id='href_" +
        marker.element.id + "' href='#' onClick='map.zoomIn(current_marker.getLatLng(),true);return false;'>Zoom</a>]</div>";
		GEvent.addListener(marker, "dblclick",
        function() {
			current_marker = marker;			
			map.zoomIn(current_marker.getLatLng(),true);
        });    
		
        GEvent.addListener(marker, "click",
        function() {
			displayingMarkerInfo=true;
			map.savePosition();
            map.openInfoWindowHtml(marker.getLatLng(), marker.myHtml);
			current_marker = marker;
        });    
		
		

    return marker;
}
	var map;
	 function initialize_map(div_id){
	 	if (GBrowserIsCompatible()) {
	 		map = new GMap2(document.getElementById(div_id));
            if (google.loader.ClientLocation) {
                map.setCenter(new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude), 6);
            } else {
                map.setCenter(new GLatLng(36.0313, -5.3613), 4);
            }
            map.setUIToDefault();
            GEvent.addListener(map, "moveend", function(){
                    populateMap();
            });
            GEvent.addListener(map, "zoomend", function(){
                    map.clearOverlays();
            });
	 	}
	 }

function populateMap(){
	if (!displayingMarkerInfo) {
		map.addControl(loading_control);
	} 
	var bounds = map.getBounds();
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast();
	  
  	new Ajax.Request("/portal/populate_map?lat1="+northEast.lat()+"&lng1="+northEast.lng() +
  				"&lat2="+southWest.lat()+"&lng2="+southWest.lng() +"&zoom="+map.getZoom());
				
	displayingMarkerInfo=false;
				
}


/* -------------------- profile maps begin ----------------- */

    var profileMap=null;
    var geocoder = null;
    var addressMarker;
    
    function getDefinedAddress() {
        var address = $('freelance_profile_address').value;
        var options_country = $('country');        
        var country = options_country.options[options_country.selectedIndex].text;
        var city = $('city').value;
        return address+", "+city+", "+country;        
    }
    function setLatLng(addressMarker) {
        $('freelance_profile_latitude').value = addressMarker.getLatLng().lat();
        $('freelance_profile_longitude').value = addressMarker.getLatLng().lng();        
    }
    function showAddress() {
      var address = getDefinedAddress();
      if (geocoder && address!=null) {
        geocoder.getLatLng(address,
          function(point) {
            if (!point) {
              alert("'"+address + "' no se encuentra.\n\nIntente especificar más la dirección,p.ej.:\n'Calle Cochabamba 19 28016, Madrid'");
            } else {
              if (addressMarker) {
                profileMap.removeOverlay(addressMarker);
              }
              addressMarker = new GMarker(point);
              profileMap.setCenter(point,16);
              profileMap.addOverlay(addressMarker);
              setLatLng(addressMarker);
            }
          }
        );
      }
    }     
    function loadProfileMap() {
      if (GBrowserIsCompatible()) {
        profileMap = new GMap2(document.getElementById("map_canvas"));
        profileMap.addControl(new GSmallMapControl());
        
        latitude=pageParam('freelance_profile_latitude');
        longitude=pageParam('freelance_profile_longitude');
        zoom_level=16;
		
        if (latitude == 0 || longitude == 0) {
			zoom_level=12;
			if (google.loader.ClientLocation) {				
				latitude = google.loader.ClientLocation.latitude;
				longitude = google.loader.ClientLocation.longitude;
				
			} else {
				latitude = 40.4174822969993;
				longitude = -3.7032508850097656				
			} 	 	 
		            
        }         
        var gLatLng = new GLatLng(latitude, longitude);    
        addressMarker = new GMarker(gLatLng);
        profileMap.setCenter(gLatLng,zoom_level);
        profileMap.addOverlay(addressMarker);        
        
        
        profileMap.setMapType(G_NORMAL_MAP);
        geocoder = new GClientGeocoder();        
        if(navigator.userAgent.indexOf('MSIE') != -1) {
          setTimeout("window.scrollTo(0,0)",2000);
        }
      } else {
        alert("Su navegador no es compatible con los Mapas de Google");
      }
    }
   
/* -------------------- profile maps begin ----------------- */








