	var newColors = [];
	newColors['Green']  = 'matriz';
	newColors['Blue']   = 'filial';
	newColors['Yellow'] = 'unidade';
	newColors['Red']    = 'canal';

	var iconMatriz = new GIcon(); 
	iconMatriz.image = SENIOR_BASE_URL + 'wp-content/extras/maps/icons/icon_matriz.png';
	iconMatriz.shadow = '';
	iconMatriz.iconSize = new GSize(37, 50);
	iconMatriz.shadowSize = new GSize(37, 50);
	iconMatriz.iconAnchor = new GPoint(37, 50);
	iconMatriz.infoWindowAnchor = new GPoint(5, 1);
	
	var iconFilial = new GIcon(); 
	iconFilial.image = SENIOR_BASE_URL + 'wp-content/extras/maps/icons/icon_filial.png';
	iconFilial.shadow = '';
	iconFilial.iconSize = new GSize(32, 45);
	iconFilial.shadowSize = new GSize(32, 45);
	iconFilial.iconAnchor = new GPoint(32, 45);
	iconFilial.infoWindowAnchor = new GPoint(5, 1);
	
	var iconUnidade = new GIcon(); 
    iconUnidade.image = SENIOR_BASE_URL + 'wp-content/extras/maps/icons/icon_unidade.png';
    iconUnidade.shadow = '';
    iconUnidade.iconSize = new GSize(30, 40);
    iconUnidade.shadowSize = new GSize(30, 40);
    iconUnidade.iconAnchor = new GPoint(30, 40);
    iconUnidade.infoWindowAnchor = new GPoint(5, 1);
	
	var iconCanal = new GIcon(); 
    iconCanal.image = SENIOR_BASE_URL + 'wp-content/extras/maps/icons/icon_canal.png';
    iconCanal.shadow = '';
    iconCanal.iconSize = new GSize(24, 32);
    iconCanal.shadowSize = new GSize(24, 32);
    iconCanal.iconAnchor = new GPoint(24, 32);
    iconCanal.infoWindowAnchor = new GPoint(5, 1);
	
    var customIcons = [];
    customIcons["tipo1"] = iconMatriz;
    customIcons["tipo2"] = iconFilial;
    customIcons["tipo3"] = iconUnidade;
	customIcons["tipo4"] = iconCanal;
	
    var markerGroups = { "tipo1": [], "tipo2": [], "tipo3": [], "tipo4": [] };

    var marker;
    var map;
    var geocoder;
    var zoom;
    var control = 0;
    var clickArray = [];
    
    var infosPontos = [];
    var mapTree = [];
    
	function initialize() {
		adjustCaixa();
		if (GBrowserIsCompatible()) {
		  map = new GMap2(document.getElementById("map"));
		  //START MAP - CENTER	
		  map.setCenter(new GLatLng(-15.038541,-53.532716), 4);
		  geocoder = new GClientGeocoder();	  
		  //CONTROLES
		  map.enableDoubleClickZoom();
		  map.enableScrollWheelZoom();
		  map.addControl(new GLargeMapControl());
	      // map.addControl(new GSmallMapControl());
          map.addControl(new GMapTypeControl());
		 
          $.get(
        	SENIOR_BASE_URL + "wp-content/extras/maps/markerdata.php", 
        	{}, 
        	initMap,
        	'json'
          );
      }
			   
	  geocoder = new GClientGeocoder();
    }
	
	var areas = [];
	
	function initMap(data) {
		
		for(i in data){
			
			var marca   = data[i].marca;
			var label   = data[i].label;
			var name    = data[i].name;
			var address = data[i].address;
			var cidade  = data[i].cidade;
			var estado  = data[i].estado;
			var type    = data[i].type;
			var point   = new GLatLng(parseFloat(data[i].lat), parseFloat(data[i].lng));
			
			infosPontos[marca] = [];
			infosPontos[marca]['label'] = label;
			infosPontos[marca]['name'] = name;
			infosPontos[marca]['address'] = address;
			infosPontos[marca]['type'] = type;
			infosPontos[marca]['telefone'] = data[i].telefone;
			infosPontos[marca]['site'] = data[i].site;
			infosPontos[marca]['cidade'] = cidade;
			infosPontos[marca]['estado'] = estado;
			
			//cria um array com 4 dimensões: estado, cidade, empresa e infos da empresa
			if(!mapTree[estado]){
				mapTree[estado] = [];
			}
			if(!mapTree[estado][cidade]){
				mapTree[estado][cidade] = [];
			}
			
			if(!mapTree[estado][cidade][marca]){
				mapTree[estado][cidade][marca] = [];
				mapTree[estado][cidade][marca]['name'] = name;
				mapTree[estado][cidade][marca]['lat']  = data[i].lat;
				mapTree[estado][cidade][marca]['lng']  = data[i].lng;
			} 
			
			if(!areas[cidade]){
				areas[cidade] = [];
				areas[cidade]['N'] = parseFloat(data[i].lat); // tem que ser o maior
				areas[cidade]['E'] = parseFloat(data[i].lng); // tem que ser o maior
				areas[cidade]['S'] = parseFloat(data[i].lat); // tem que ser o menor
				areas[cidade]['W'] = parseFloat(data[i].lng); // tem que ser o menor
			} else {
				if(parseFloat(data[i].lat) > areas[cidade]['N']){
					areas[cidade]['N'] = parseFloat(data[i].lat);
				}
				if(parseFloat(data[i].lat) < areas[cidade]['S']){
					areas[cidade]['S'] = parseFloat(data[i].lat);
				}
				if(parseFloat(data[i].lng) > areas[cidade]['E']){
					areas[cidade]['E'] = parseFloat(data[i].lng);
				} 
				if(parseFloat(data[i].lng) < areas[cidade]['W']){
					areas[cidade]['W'] = parseFloat(data[i].lng);
				}
			}
			
			var marker = new LabeledMarker(point, {icon: customIcons[type]});
			markerGroups[type].push(marker);
			marker.value = marca;
			var markerObj = new Object();
			markerObj.value = marca;
			markerObj.point = point;
			//ADICIONA UM "Listener" em MARKER
			//GEvent.addListener(marker, 'mouseover', showMarca);
			GEvent.addListener(marker, 'click', showMarcaAprox); 
			GEvent.addListener(map, 'zoomend', closeMarca);
			map.addOverlay(marker);
		    clickArray.push(markerObj);
		}
		
		
		
		var marker = new LabeledMarker(point, {icon: customIcons[type]});
		markerGroups[type].push(marker);
		marker.value = marca;
		var markerObj = new Object();
		markerObj.value = marca;
		markerObj.point = point;
		//ADICIONA UM "Listener" em MARKER
		GEvent.addListener(marker, 'mouseover', showMarca);
		GEvent.addListener(marker, 'click', showMarcaAprox); 
		map.addOverlay(marker);
	    clickArray.push(markerObj);
	}
		 
	newTypes = [];
	newTypes['tipo1'] = 'matriz';
	newTypes['tipo2'] = 'filial';
	newTypes['tipo3'] = 'unidade';
	newTypes['tipo4'] = 'canal';
	
	function showMarca(marca) { 
		if(control != this.value){
			var infos = '<div style="height:115px; text-align: left;">'
						   + '<div style="margin-left: 12px; margin-top:10px;">'	 
						   + '<div class="map_title">'+infosPontos[this.value]['name']+'</div>'
	                       + '<div class="map_label" style="margin-top:7px;">'
	        	           + '<img src="'+SENIOR_BASE_URL+'wp-content/extras/maps/icons/point_'+newTypes[infosPontos[this.value]['type']]+'.png" />'
	        	           + '&nbsp;' + infosPontos[this.value]['label'] + '</div>'
	        	           + '<div class="map_conteudo" style="margin-top:3px;"><strong>EndereÃ§o: </strong>'+infosPontos[this.value]['address']+'</div>'
	        	           + '<div class="map_conteudo" style="margin-top:2px;"><strong>Fone: </strong>'+infosPontos[this.value]['telefone']+'</div>';
			
	        if(infosPontos[this.value]['site'].length > 2){
	        	infos += '<div class="map_conteudo" style="margin-top:2px;"><strong>Site:</strong> ' 
	        	      +  '<a href="'+infosPontos[this.value]['site']+'" title="'+infosPontos[this.value]['site']+'" target="_blank" style="text-decoration:underline;">'+infosPontos[this.value]['site']+'</a>' 
	        	      +  '</div>';        
	    	} 
	       infos += '</div></div>'; 

			this.openExtInfoWindow(
							map,	
							"map_window", 
							infos, 
							{}
			);
		}
		control = this.value;
	}
	
	
	function closeMarca(){
		map.closeExtInfoWindow();
	}
	
	function showMarcaAprox(marca) { 
		map.setCenter(marca, 15);
		var infos = '<div style="height:115px; text-align: left;">'
			   + '<div style="margin-left: 12px; margin-top:10px;">'	 
			   + '<div class="map_title">'+infosPontos[this.value]['name']+'</div>'
               + '<div class="map_label" style="margin-top:7px;">'
	           + '<img src="'+SENIOR_BASE_URL+'wp-content/extras/maps/icons/point_'+newTypes[infosPontos[this.value]['type']]+'.png" />'
	           + '&nbsp;' + infosPontos[this.value]['label'] + '</div>'
	           + '<div class="map_conteudo" style="margin-top:3px;"><strong>EndereÃ§o: </strong>'+infosPontos[this.value]['address']+'</div>'
	           + '<div class="map_conteudo" style="margin-top:2px;"><strong>Fone: </strong>'+infosPontos[this.value]['telefone']+'</div>';

		if(infosPontos[this.value]['site'].length > 2){
			infos += '<div class="map_conteudo" style="margin-top:2px;"><strong>Site:</strong> ' 
			      +  '<a href="'+infosPontos[this.value]['site']+'" title="'+infosPontos[this.value]['site']+'" target="_blank" style="text-decoration:underline;">'+infosPontos[this.value]['site']+'</a>' 
			      +  '</div>';        
		} 
		infos += '</div></div>'; 
		
		this.openExtInfoWindow(map,	
				               "map_window", 
				               infos,
				               {}
		);
	}
	
	function findLocation(address) {   
		map.closeExtInfoWindow();
		if(address == "0"){
			$('#selMapaCidade,#selMapaEmpresa').attr('disabled', 'disabled');
			$('#selMapaCidade,#selMapaEmpresa').val('');
			$('#selMapaCidade,#selMapaEmpresa').addClass('selectInativo');
			map.setCenter(new GLatLng(-15.038541,-53.532716), 4);
		}else{
			var control = address.split(",");
			zoom = control[2]; 
			var point = geocoder.getLatLng(control[3] + ' - BR', showAdress);
			populateSelectCidade(control[3]);
		}
    }
	
	function showMatriz(){
		showEmpresa('-26.907007,-49.07949,3');
	}
	
	function showFilial(){
		showEmpresa('-23.611422,-46.695033,1');
	}
	
	function setCenterInit(){
		map.closeExtInfoWindow();
		map.setCenter(new GLatLng(-15.038541,-53.532716), 4);
	}
	
	function showAdress(point) {
		if(!point){
			alert(address + " desconhecido");
		}else{
		map.setCenter(point, parseInt(zoom));
		}
	}
	
	function activeToogle(comp, color, title){
		toggleGroup('tipo'+comp);
		if(document.getElementById('legenda'+comp).value == '1'){
			document.getElementById('legendaFoto'+comp).innerHTML = '<img src=\"' + SENIOR_BASE_URL + 'wp-content/extras/maps/icons/btnGray.gif\" title=\"'+title+'\" onClick=\"activeToogle(\''+comp+'\' ,\''+color+'\', \''+title+'\');\">';
			document.getElementById('legenda'+comp).value = '0';
		}else{
			
			document.getElementById('legendaFoto'+comp).innerHTML = '<img src=\"' + SENIOR_BASE_URL + 'wp-content/extras/maps/icons/select_'+newColors[color]+'.png\" title=\"'+title+'\" onClick=\"activeToogle(\''+comp+'\' ,\''+color+'\', \''+title+'\');\">';
			document.getElementById('legenda'+comp).value = '1';
		}
	}
	
	function toggleGroup(type) {
      for (var i = 0; i < markerGroups[type].length; i++) {
        var marker = markerGroups[type][i];
        if (marker.isHidden()) {
          marker.show();
        } else {
          marker.hide();
        }
      } 
    }

    function toggleLabels() {
      var showLabels = document.getElementById("labelsCheckbox").checked;
      for (groupName in markerGroups) {
        for (var i = 0; i < markerGroups[groupName].length; i++) {
          var marker = markerGroups[groupName][i];
          marker.setLabelVisibility(showLabels);
        }
      }
    }
	
	function findLocationWithLatLng(value){
		map.closeExtInfoWindow();
		var arrayJob = value.split(",");
		var lat = arrayJob[0];
		var lng = arrayJob[1];
		var zoom = arrayJob[2];
		map.setCenter(new GLatLng(lat, lng), parseFloat(zoom)); 
		populateSelectCidade(arrayJob[3]);
    }
	
	var currEstado = '';
	
	function populateSelectCidade(estado){
		closeMarca();
		if(estado != ''){
			$('#selMapaCidade').remove();
			$('#selMapaEmpresa').val('');
			$('#selMapaEmpresa').attr('disabled', 'disabled');
			$('#selMapaEmpresa').addClass('selectInativo');
			var html = '<select name="cidade" onchange="populateSelectEmpresa(this.value)" class="selTreinamentos" style="width: 210px;" id="selMapaCidade"><option value="">Selecione a Cidade</option>';
			var cidades = mapTree[estado];
			var tem = false;
			for(i in cidades){
				if(i != 'empty' && i != 'removeDuplicates'){
					tem = true;
					html += '<option value="' + i + '">' + i + '</option>';
				}
			}
			html += '</select>';
			$('#selMapa').after(html);
			if(!tem){
				$('#selMapaCidade').attr('disabled', 'disabled');
			} else{
				$('#selMapaCidade').removeClass('selectInativo');
			}
		} else {
			$('#selMapaEmpresa').addClass('selectInativo');
		}
		currEstado = estado;
	}
	
	var currCidade = '';
	
	
	function populateSelectEmpresa(cidade){
		closeMarca();
		if(cidade == ''){ 
			$('#selMapaEmpresa').attr('disabled', 'disabled');
			$('#selMapaEmpresa').val('');
			$('#selMapaEmpresa').addClass('selectInativo');
			var point = geocoder.getLatLng(currEstado + ' - BR', showAdress);
		} else {
			$('#selMapaEmpresa').remove();
			var html = '<select name="empresa" onchange="showEmpresa(this.value)" class="selTreinamentos" style="width: 210px;" id="selMapaEmpresa"><option value="">Selecione a Empresa</option>';
			var empresas = mapTree[currEstado][cidade];
			for(i in empresas){
				if(i != 'empty' && i != 'removeDuplicates'){
					html += '<option value="'+ empresas[i]['lat'] + ',' + empresas[i]['lng'] + ',' + i + '">' + empresas[i]['name'] + '</option>'; 
				}
			}
			html += '</select>';
			$('#selMapaCidade').after(html);
			currCidade = cidade;
			
			$('#selMapaEmpresa').removeClass('selectInativo');
			
			var W = areas[cidade]['W'];
			var S = areas[cidade]['S'];
			var E = areas[cidade]['E'];
			var N = areas[cidade]['N'];
			
			map.setCenter(new GLatLng((N + S)/2, (E + W)/2), 10);
		}
	}
	
	function showEmpresa(val){
		if(val != ''){
			valArr = val.split(',');
			for(i in markerGroups){;
				for(k in markerGroups[i]){
					if(markerGroups[i][k].value == valArr[2]){
						map.setCenter(new GLatLng(valArr[0], valArr[1]), 15);
						GEvent.trigger(markerGroups[i][k], 'click');
					}
				}
			}
		} else {
			populateSelectEmpresa(currCidade);
		}
	}

	$(function(){
		$('#selMapaCidade,#selMapaEmpresa').addClass('selectInativo');
	});