//Autor: Luciano Condé - luciano@vericia.com
//Versão 1.0.2
//Alterações
//1.0.1 - Alteração para suportar "ShowOnMap"
//1.0.2 - Correção de bug de ícone.

    //Constantes Globais
   //var ImageNormal = "http://www.google.com/mapfiles/marker.png";
    var ImageOver = "/static/img/vericia_amarelo.png";
    var ImageNormal = "/static/intro4.gif";
    var ImageOut = "/static/intro4.gif";
    
    
    
    //Variaveis Globais
	var IsCompatible = false;
	var map;
	var point;

    var tooltip = null; 

    var intContador = -1;
    var oPoints = null;
    var oEnderecos = null;
    var oUrlDoImovels = null;
    var oUrlDaFotos = null;
    var oMarkers = null;
    var oPrecoS = null;
    var oNomeCityS = null;
    var oQtdImoveisS = null;
    var oUrlDaCidadeS = null;
    
    //Patched - 1.0.1
    var oIDs = null;
    
    var intIndexActive = -1;
    

    function InitData() {
        oPoints = new Array();
        oEnderecos = new Array();
        oMarkers = new Array();
        oUrlDaFotos = new Array();
        oUrlDoImovels = new Array();
        oPrecoS = new Array();
        oNomeCityS = new Array();
        oQtdImoveisS = new Array();
        oUrlDaCidadeS = new Array();

        //Patched - 1.0.1        
        oIDs = new Array();
        
        intContador = -1;
    }
    
    
	function PrepareSimpleMap() {
		if (GBrowserIsCompatible()) {
		
			InitData();
		
			map = new GMap2(document.getElementById("map"));
			map.addControl(new GSmallMapControl());

			tooltip = document.createElement("div");
			tooltip.style.visibility="hidden";
			map.getPane(G_MAP_FLOAT_PANE).appendChild(tooltip);
			
			intContador = -1;
			IsCompatible = GBrowserIsCompatible();
			

		
		}
	}

	function PrepareMap() {
		if (GBrowserIsCompatible()) {
		
		    InitData()
		
			map = new GMap2(document.getElementById("map"));
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
			map.addControl(new GScaleControl());		
			map.addControl(new GOverviewMapControl());
			
			tooltip = document.createElement("div");
            			tooltip.style.visibility="hidden";
			map.getPane(G_MAP_FLOAT_PANE).appendChild(tooltip);
			
			intContador = -1;
			IsCompatible = GBrowserIsCompatible();
		}
	}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//Patched - 1.0.1
    //Adição do parâmetro ID
	function ShowPropertyWithOutBox(Latitude, Longitude, Endereco, Preco, UrlDoImovel, UrlDaFoto, Zoom, ID) {
    	point = new GLatLng(Latitude, Longitude );  
    	map.setCenter(point, Zoom);
      intContador = intContador + 1;
      //Patched - 1.0.1
      //Adição do parâmetro ID         
      DisplayBoxPropertyWithOutBox(intContador, point, Endereco, Preco, UrlDoImovel, UrlDaFoto, ID);
      return point;
	}    
    
    	 
	function ShowProperty(Latitude, Longitude, Endereco, Preco, UrlDoImovel, UrlDaFoto, Zoom, ID) {
    	point = new GLatLng(Latitude, Longitude );  
    	map.setCenter(point, Zoom);
        intContador = intContador + 1;
        //Patched - 1.0.1
        //Adição do parâmetro ID         
        DisplayBoxProperty(intContador, point, Endereco, Preco, UrlDoImovel, UrlDaFoto, ID);
        ClickMarker(intContador);
        return point;
	}

    //Patched - 1.0.1
    //Adição do parâmetro ID    
	function PlotProperty(Latitude, Longitude, Endereco, Preco, UrlDoImovel, UrlDaFoto, Zoom, ID) {
    	point = new GLatLng(Latitude, Longitude );  
    	map.setCenter(point, Zoom);    	
    	intContador = intContador + 1;
    	 //Patched - 1.0.1
        //Adição do parâmetro ID
	    DisplayBoxProperty(intContador, point, Endereco, Preco, UrlDoImovel, UrlDaFoto, ID)
	    return point;
	}


	function DisplayBoxPropertyWithOutBox(index, Point, Endereco, Preco, UrlDoImovel, UrlDaFoto, ID) {
		var icon = new GIcon();
	    icon.image = ImageNormal;	
 		icon.iconSize = new GSize(27, 33);
  		icon.iconAnchor = new GPoint(10, 33);
  		icon.infoWindowAnchor = new GPoint(5, 1);  		
  		var marker = new GMarker(Point,icon);  	
  			
  		oMarkers[index] = marker;
        oPoints[index] = Point;        
        oEnderecos[index] = Endereco;
        oUrlDoImovels[index] = UrlDoImovel; 
        oUrlDaFotos[index] = UrlDaFoto;
        oPrecoS[index] = Preco;
        
        //Patched - 1.0.1
        //Criação do Array e adição do campo
        oIDs[index] = ID;

		

        map.addOverlay(marker);
        
     
        GEvent.addListener(marker, "mouseover", function() {
	        ShowMouseOver(index, true);
        });
        
        GEvent.addListener(marker, "mouseout", function() {
	        ShowMouseOut(index);
        });     
        
        GEvent.addListener(marker, "infowindowclose", function() {
	        ClickMarkerOut(index);
        });     

	}

    //Patched - 1.0.1
    //Adição do parâmetro ID
	function DisplayBoxProperty(index, Point, Endereco, Preco, UrlDoImovel, UrlDaFoto, ID) {
		var icon = new GIcon();
	    icon.image = ImageNormal;	
 		icon.iconSize = new GSize(27, 33);
  		icon.iconAnchor = new GPoint(10, 33);
  		icon.infoWindowAnchor = new GPoint(5, 1);  		
  		var marker = new GMarker(Point,icon);  	
  			
  		oMarkers[index] = marker;
        oPoints[index] = Point;        
        oEnderecos[index] = Endereco;
        oUrlDoImovels[index] = UrlDoImovel; 
        oUrlDaFotos[index] = UrlDaFoto;
        oPrecoS[index] = Preco;
        
        //Patched - 1.0.1
        //Criação do Array e adição do campo
        oIDs[index] = ID;

  		GEvent.addListener(marker, "click", function() {
    	    ClickMarker(index); 
		});		

        map.addOverlay(marker);
        
     
        GEvent.addListener(marker, "mouseover", function() {
	        ShowMouseOver(index, true);
        });
        
        GEvent.addListener(marker, "mouseout", function() {
	        ShowMouseOut(index);
        });     
        
        GEvent.addListener(marker, "infowindowclose", function() {
	        ClickMarkerOut(index);
        });     

	}
	
	function ClearMap() {
		
		if(map != null) {
			//Remove todas as marcas do Mapa
			ClearAllMarks();
		}		
		//Remove os objetos da memória
		InitData();
	}
	
	function ClearItemMarkByPropertyId(PropertyId) {
		var marker;
		var intCount;
		for(intCount=0;intCount <= intContador;intCount++) {
			if(oIDs[intCount] == PropertyId) {
				ClearItemMark(intCount);
			}
		}
	}
	
	function ClearItemMark(index) {
		var marker;
		marker = oMarkers[index]
		map.removeOverlay(marker);
	}
	
	function ClearAllMarks() {
		var index;
		//Para item dentro do array
		for(index = 0; index <= intContador; index++) {
			ClearItemMark(index);
		}
	}
	
	function ClickMarkerOut(index) {        
        var marker = oMarkers[index];
        marker.setImage(ImageNormal);    
	}
	
	function ClickMarker(index) {
	
	    var htmlImovel;
	    htmlImovel = '<div style="float: left"><img src="' + oUrlDaFotos[index] + '" alt="' + oEnderecos[index] +  '" border="0" style="margin-right: 5px" /></div><span><b>' + oEnderecos[index] + '</b><br /><b>' + oPrecoS[index] +  '</b><br><br><a href="' + oUrlDoImovels[index] + '">Mais detalhes</a><br /></span>';
	    var marker = oMarkers[index];
        tooltip.style.visibility="hidden";

	    marker.openInfoWindowHtml(htmlImovel);
	    marker.setImage(ImageOver);    
	    intIndexActive = index;
 	    
	}

	
	function ShowMouseOut(index) {	 
        var marker = oMarkers[index];  
        marker.setImage(ImageNormal);
        tooltip.style.visibility="hidden";
	}
	
	
    function ShowMouseOver(index, overrideTooltip) {
        if (!IsCompatible) return;
        
        var icon;
        var marker = oMarkers[index];    
        tooltip.innerHTML = oEnderecos[index];
        tooltip.innerHTML = "<div class='tooltip' align='left'>&nbsp;" + oEnderecos[index] + "<BR/>" + oPrecoS[index] +"</div>";
        var point = map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
        var offset = map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
        var anchor = marker.getIcon().iconAnchor;
        var width = marker.getIcon().iconSize.width;
        var height = tooltip.clientHeight;
        var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y -height));
        pos.apply(tooltip);
        tooltip.style.visibility = "visible";
        
        //Show de icon
        marker.setImage(ImageOver);       
        
    }
    
    
         //Patched - 1.0.1
     //Criação do Método
    function MouseOnMap(ID) {
        var intCount;
        for(intCount=0;intCount<=intContador;intCount++) {
            if(oIDs[intCount]==ID) {
                ShowMouseOver(intCount, true);
                break;            
            }          
        }
    }

    //Patched - 1.0.1
    //Criação do Método
    function MouseOutOnMap(ID) {
        var intCount;
        for(intCount=0;intCount<=intContador;intCount++) {
            if(oIDs[intCount]==ID) {
                ShowMouseOut(intCount);
                break;            
            }          
        }
    }
    
     //Patched - 1.0.1
     //Criação do Método
    function ShowOnMap(ID) {
        var intCount;
        for(intCount=0;intCount<=intContador;intCount++) {
            if(oIDs[intCount]==ID) {
                ClickMarker(intCount);
                break;            
            }          
        }
    }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function PlotCity(Latitude, Longitude, Nome, QtdImoveis, UrlDaCidade, Zoom) {
 
    	point = new GLatLng(Latitude, Longitude );  
    	map.setCenter(point, Zoom);
    	
    	intContador = intContador + 1;


	    DisplayBoxCity(intContador, point, Nome, QtdImoveis, UrlDaCidade)

	    return point;
	}

function DisplayBoxCity(index, Point, Nome, QtdImoveis, UrlDaCidade) {

		var icon = new GIcon();
		
		icon.image = ImageNormal;
 		// icon.iconSize = new GSize(25, 37);
 		icon.iconSize = new GSize(27, 33);
  		icon.iconAnchor = new GPoint(10, 33);
  		icon.infoWindowAnchor = new GPoint(5, 1);
  		
  		var marker = new GMarker(Point,icon);
  		
  		
  		oMarkers[index] = marker;
  		oPoints[index] = Point;
 
  		
  		oNomeCityS[index] = Nome;
  		

  		oUrlDaCidadeS[index] = UrlDaCidade;
  		oQtdImoveisS[index] = QtdImoveis;        
	    

  		GEvent.addListener(marker, "click", function() {
    	    ClickMarkerCity(index); 
		});		

        map.addOverlay(marker);
        
      
        
       GEvent.addListener(marker, "mouseover", function() {
	        ShowMouseOverCity(index, true);
        });
        
        GEvent.addListener(marker, "mouseout", function() {
	        ShowMouseOut(index);
        });     
	}
	
function ClickMarkerCity(index) {
	
	    var htmlImovel;
	    htmlImovel = '<span><b>' + oNomeCityS[index] + '</b>&nbsp;--&nbsp;<b>' + oQtdImoveisS[index] +  ' im&oacute;veis.</b><br><br><a href="' + oUrlDaCidadeS[index] + '">Ver os im&oacute;veis</a></span>';
	    
	    var marker = oMarkers[index];
	    
	    
	    marker.openInfoWindowHtml(htmlImovel);
	    marker.setImage(ImageOver);    
	    
	}
	
	
	
    function ShowMouseOverCity(index, overrideTooltip) {
        if (!IsCompatible) return;
        
        var icon;
        
        var marker = oMarkers[index];    
        
        
                
        tooltip.innerHTML = oNomeCityS[index];
        tooltip.innerHTML = "<div class='tooltip' align='left'>&nbsp;" + oNomeCityS[index] + "<BR/>&nbsp;" + oQtdImoveisS[index] +" im&oacute;veis.</div>";
     
        
      
        var point = map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
        var offset = map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
        
        var anchor = marker.getIcon().iconAnchor;
        var width = marker.getIcon().iconSize.width;
        var height = tooltip.clientHeight;
        var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y -height));
        pos.apply(tooltip);
        tooltip.style.visibility = "visible";
        
        //Show de icon
        marker.setImage(ImageOver);
        
        
    }

