	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 = 0; data.length > i; i++ ){
                //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 = 0; i < cidades.length; i++){			  
                        for(i in cidades){
                            //alert(i);
                                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');
	});


