var DEFAULT_LAT = 47.036040449168695;
var DEFAULT_LONG = -110.97751235961914;
var state_marker_array = new Array();
var member_marker_array = new Array();
var neighborhood_marker_array;
var memberBounds, stateBounds;
if(typeof GLatLngBounds != "undefined") {
  memberBounds = new GLatLngBounds();
  stateBounds = new GLatLngBounds();
}
var state_option = "";
var state_idx = 0;
var gmap_table = "";
var map;
var nbrIcon = new Array();
var blueIcon, redIcon;
var showing = false;
var communityMapReturn;
var lastSelected;

function closeMapPopover() {
  showing = false;
  top.TB_remove();
}

function backToNAmer() {
  if(showing) {
    toggleSlideDown();
  }

  frames['gmapsFrame'].retrieveStates();
}

function toggleMapSetting(newMargin) {
  if(typeof $("#maps_setting:hidden").html() == "string") {
    if ( typeof newMargin != 'undefined' ){
        $("#slideDown").css('margin', newMargin);
    }
    $("#maps_setting").show();
    $("#maps_setting_tmp").remove();
    currentUserNameDisplay();
  } else {
    $("#maps_setting").hide();
    $("#maps_setting").after("<span id='maps_setting_tmp'><strong style=\"color: #000000\">Maps setting</strong></span>");
    document.getElementById("sliderFrame").src = '/community/maps/change_zip.jsp';
    loggedInUserNameDisplay();  
    if(showing) {
      //toggleWhatsThis();
    } else {
      toggleSlideDown();
    }
  }
}

function loggedInUserNameDisplay() {
 	$("#HeaderMemberNameId").hide();
	$("#HeaderLoggedInUserId").show();
}

function currentUserNameDisplay() {
 $("#HeaderMemberNameId").show();
 $("#HeaderLoggedInUserId").hide();
}

function toggleWhatsThis(newMargin) {
  if(typeof $("#whats_this:hidden").html() == "string") {
    if ( typeof newMargin != 'undefined' ){
        $("#slideDown").css('margin', newMargin);
    }
    $("#whats_this").show();
    $("#whats_this_tmp").remove();
  } else {
    $("#whats_this").hide();
    $("#whats_this").after("<span id='whats_this_tmp'><strong style=\"color: #000000\">What's this?</strong></span>");
    document.getElementById("sliderFrame").src = '/community/maps/whats_this.jsp';  
    if(showing) {
      //toggleMapSetting();
    } else {
      toggleSlideDown();
    }
  }
  currentUserNameDisplay();
}

function toggleSlideDown() {
  if(showing) {
    $("#year_select").show();
    $("#state_select").show();
    $("#slideDown").slideUp();
    document.getElementById("sliderFrame").src = '';
  } else {
    $("#year_select").hide();
    $("#state_select").hide();
    $("#slideDown").slideDown();
  }
  showing = !showing ? true : false;
  if($("#whats_this:hidden").html() != null) {
    $("#whats_this").show();
    $("#whats_this_tmp").remove();
	
  }
  if($("#maps_setting:hidden").html() != null) {
    $("#maps_setting").show();
    $("#maps_setting_tmp").remove();
  }
  currentUserNameDisplay();
}

function initMapBrowser() {
  if (GBrowserIsCompatible()) {
    initGMap();
    displayStates();
  }
} 

function initGMap(noControl){	
  //intialize the map
  mapEl = document.getElementById("map");
  map = new GMap2(mapEl);
  map.clearOverlays();
  if(noControl==true){
  	//Not to show map modes, panning control
  } else {
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());  	
  }  
  
  redIcon = new GIcon();
  redIcon.image = "/graphics/gmaps/markers/pin_red.png";
  redIcon.shadow = "/graphics/gmaps/markers/shadow_for_numbered_pin.png";
  redIcon.iconSize = new GSize(22, 29);
  redIcon.shadowSize = new GSize(35, 27);
  redIcon.iconAnchor = new GPoint(6, 20);
  redIcon.infoWindowAnchor = new GPoint(9, 1);

  blueIcon = new GIcon();
  blueIcon.image = "/graphics/gmaps/markers/pin_blue.png";
  blueIcon.shadow = "/graphics/gmaps/markers/shadow_for_numbered_pin.png";
  blueIcon.iconSize = new GSize(22, 29);
  blueIcon.shadowSize = new GSize(35, 27);
  blueIcon.iconAnchor = new GPoint(6, 20);
  blueIcon.infoWindowAnchor = new GPoint(9, 1);

  for (var i = 0 ; i < 51 ; i++) {
    nbrIcon[i] = new GIcon();
    nbrIcon[i].image = "/graphics/gmaps/markers/pin_red_"+i+".png";
    nbrIcon[i].shadow = "/graphics/gmaps/markers/shadow_for_numbered_pin.png";
    nbrIcon[i].iconSize = new GSize(22, 29);
    nbrIcon[i].shadowSize = new GSize(35, 27);
    nbrIcon[i].iconAnchor = new GPoint(6, 20);
    nbrIcon[i].infoWindowAnchor = new GPoint(9, 1);
  }

  var centerUSA = new GLatLng(DEFAULT_LAT, DEFAULT_LONG) ;
  map.setCenter(centerUSA, 2);

  //Rewrite links in map to target _blank
  links = mapEl.getElementsByTagName("a");
  for(var i = 0; i < links.length; i++) {
    links[i].target = "_blank";
  }
}

function retrieveStates() {
    var pYear = top.pYear;
    if ( typeof currentYear != "undefined" ){
        pYear = currentYear;
    }

    var xmlUrl = "/community/maps/summarize_users.html?communityId=" + top.pCommunityId +
    "&year=" + pYear;
    
    if ( typeof top.pSource != "undefined" ){
      xmlUrl = xmlUrl + "&source=" + top.pSource;
    }
    retrieveStatesRaw(xmlUrl);
}

function retrieveStatesRaw(xmlUrl) {
  closeLabel();
  map.clearOverlays();
  hidePagination();
  $("#map").hide();
  $("#gmapLoader").show();
  $("#NAmerFlexpub").show();
  $("#StateFlexpub").hide();
  state_idx = 0;
  $.ajax({
    url: xmlUrl,
    success: function(request) {
      if(request.responseXML) {
        request = request.responseXML;
      }
      var me =  request.documentElement.getElementsByTagName("reguser")[0];
      if (me != null && typeof me != "undefined") { 
        processCommunityMe(me);
        triggerOmniture("countrypin");
      } else {
        triggerOmniture("countrynopin");
      }
      gmap_table = "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">";
      state_option = "<select id=\"state_select\" name=\"state\" onchange=\"changeState(this.value)\">";
      state_option += "<optgroup label=\"U.S. and Canada Map\" />";          
      var countries = request.documentElement.getElementsByTagName("country");
      for (var i = 0; i < countries.length; i++) {
        state_option += "<optgroup label=\""+countries[i].getAttribute("name")+"\">";  
        gmap_table += countries[i].getElementsByTagName("tableRowHtml")[0].childNodes[0].nodeValue;
        processStates(countries[i]);
        state_option += "</optgroup>";
      }
      state_option += "</select>";
      gmap_table += "</table>";
      $('#gmap_table').html(gmap_table);
      if(request.documentElement.getAttribute("membercount") != "0") {
        $("#member_count").html(request.documentElement.getAttribute("membercount") + " mapped members");
        $("#region").html("in the U.S. & Canada");
      } else {
        $("#member_count").html("");
        $("#region").html("<span style=\"font-size: 11px\"><strong>Sorry!</strong> We don't have map info for anyone associated with the selected year.</span>");
      }
      parent.$("#back_to_us").css("display","none");
      $("#gmapLoader").hide();
      $("#map").show();

      // Notify the map about div container resize , the above show call on map container changes the sise of map div from 0 to the height specified.
      map.checkResize() ;

    },
    error: function(request) {
      GLog.write("Failed to retrieve state member summary.");
    }
  });
}

function processCommunityMe(meMember) {
  var member_loc = new GLatLng(parseFloat(meMember.getAttribute("latitude")),
                               parseFloat(meMember.getAttribute("longitude"))
                       );
  var marker = new GMarker(member_loc, blueIcon);        
  GEvent.addListener(marker,"click", function() {
    var infoHtml = meMember.getElementsByTagName("mapHtml")[0].childNodes[0].nodeValue;
    openLabel("me", member_loc, infoHtml);
  });
  map.addOverlay(marker);
}  


function processStates(country) {
  var states = country.getElementsByTagName("state");
  // render the members
  for (var i = 0; i < states.length; i++) {  
    state_marker_array[state_idx] = createStateMarker(states[i], redIcon);        
    map.addOverlay(state_marker_array[state_idx]);
    gmap_table += states[i].getElementsByTagName("tableRowHtml")[0].childNodes[0].nodeValue;
    state_option += states[i].getElementsByTagName("optionHtml")[0].childNodes[0].nodeValue;
    state_idx++;
  }
  
  var centerUSA = new GLatLng(DEFAULT_LAT, DEFAULT_LONG) ;
  map.setCenter(centerUSA, 2);
}

var infoLabelCnt = 0;
var infoLabel;

function closeLabel() {
  if(infoLabel) {
    map.removeCmatesInfoWindow(infoLabel);
    infoLabel = false;
  }
}

function openLabel(type, anchor, content) {
  var offsetX, offsetY, adjustLat, adjustLng, windowWidth;
  var padding = '';
  
  switch(type) {
    case "state":
      triggerOmniture("otherbubble");
      offsetX = 60;
      offsetY = 136;
      adjustLat = 9;
      adjustLng = 4.5;
      windowWidth = 145;
      break;
    case "neighborhood":
      offsetX = 72;
      offsetY = 118;
      adjustLat = 9;
      adjustLng = 4.5;
      windowWidth = 200;
      padding = '0px 63px 0px 65px';
      break;
    case "me":
      triggerOmniture("mebubble");
    case "other":
      type="me";
      offsetX = 82;
      offsetY = 195;
      adjustLat = 20;
      adjustLng = 10;
      windowWidth = 240;
      break;
    default:
      return false;
  }

  if(infoLabel) {
    closeLabel();
  }

  //Create info window
  infoLabel = new cmatesInfoWindow();
  infoLabel.id = "infoWindowLabel_" + infoLabelCnt;
  infoLabelCnt++;
  infoLabel.anchorLatLng = anchor;
  infoLabel.markerOffset = new GSize(offsetX, offsetY);
  infoLabel.content = "\
  <div id=\"" + type + "_infowindow\">\
    <div style=\"background: #ffffff; border: 1px solid #ababab; padding: 1px; width: " + windowWidth + "px;\" align=\"left\">\
  " + content  + "\
    </div>\
    <div style=\"position: relative; bottom: 2px; " + (padding != ''?'padding: ' + padding + ';':'') + "\" align=\"center\">\
      <div class=\"bubbleShadow\">\
        <img src=\"/graphics/gmaps/infowindow_tail.gif\" width=\"50\" height=\"26\" style=\"filter: progid:DXImageTransform.Microsoft.AlphaImagegmapLoader(src='/graphics/gmaps/infowindow_tail.png', sizingMethod='scale');\"/>\
      </div>\
    </div>\
  </div>";

  //Render info window on map
  map.addcmatesInfoWindow(infoLabel);
}

function createStateMarker(stateXml, icon) {
  var state_center = new GLatLng(parseFloat(stateXml.getAttribute("latitude")),
                                 parseFloat(stateXml.getAttribute("longitude"))
                         );
  stateBounds.extend(state_center);
   var marker = new GMarker(state_center, icon);
  GEvent.addListener(marker,"click", function() {
    var infoHtml = stateXml.getElementsByTagName("mapHtml")[0].childNodes[0].nodeValue;
    openLabel("state", state_center, infoHtml);
  });
  return marker;
}

function selectState(id) {
  GEvent.trigger(state_marker_array[id], "click");
}

function retrieveMembersByState(state) {
	
  var pYear = top.pYear;
  if ( typeof currentYear != "undefined" ){
    pYear = currentYear;
  }	
  var xmlUrl = "/community/maps/map_users.html?state=" + state + 
    "&communityId=" + top.pCommunityId + "&year=" + pYear + 
    "&source=" + top.pSource;
  retrieveMembers(xmlUrl);
}

function retrieveMembers(state_member_url) {
  closeLabel();
  map.clearOverlays();
  $("#map").hide();
  $("#gmapLoader").show();
  $("#StateFlexpub").show();
  $("#NAmerFlexpub").hide();
  $.ajax({
    url: state_member_url,
    success: function(request) {
      if(request.responseXML) {
        request = request.responseXML;
      }
      memberBounds = new GLatLngBounds();
      processMembersXml(request);
      triggerOmniture("state");
      parent.$("#back_to_us").css("display", "inline");
      $("#region").html("in " + state_option);
      updateStateDropDownSelection(request.documentElement.getAttribute("state_abbr"));
      $("#gmapLoader").hide();
      $("#map").show();

      // Notify the map about div container resize , the above show call on map container changes the sise of map div from 0 to the height specified.
      map.checkResize() ;
      // Recalculate zoomlevel and center the map based on memberBounds	
      var boundsZoomLevel = map.getBoundsZoomLevel(memberBounds);
      map.setCenter(memberBounds.getCenter(), boundsZoomLevel < 7 ? boundsZoomLevel : 7);

    },
    error: function(request) {
      GLog.write("Failed to retrieve state member list.");
    }          
  });   
}

var pageXml = new Array();
var meXml;

function processMembersXml(xmlDoc) { 
  meXml = xmlDoc.documentElement.getElementsByTagName("reguser")[0];
  pageXml =  xmlDoc.documentElement.getElementsByTagName("otherusers")[0].getElementsByTagName("page");
  gotoPage(1);
}

function gotoPage(page) {
  closeLabel();
  map.clearOverlays();
  
  var meRegId;

  if(meXml != null && typeof meXml != "undefined") {
    meRegId = meXml.getAttribute("id");
  }

  var boundMe = false;

  //Render others
  var members = pageXml[page - 1].getElementsByTagName("member");
  var gmap_table = "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
  var n = 0;

  for (var i = 0; i < members.length; i++) {
    if(meRegId != members[i].getAttribute("id")) {
      member_marker_array[i] = createMarker(members[i], nbrIcon[n+1]);
      map.addOverlay(member_marker_array[i]);
    } else {
      boundMe = true;
      n--;
    }
    gmap_table += members[i].getElementsByTagName("tableRowHtml")[0].childNodes[0].nodeValue;
    n++;
  }
  gmap_table += "</table>";
  $('#gmap_table').html(gmap_table);

  //Render me
  if(meXml != null && typeof meXml != "undefined") {
    member_marker_array[-1] = createMarker(meXml, blueIcon, !boundMe);
    map.addOverlay(member_marker_array[-1]);
  }
  
  totalMembers = (pageXml.length * 50) - (50 - pageXml[pageXml.length - 1].getElementsByTagName("member").length);
  $("#member_count").html(members.length + " of " + totalMembers  + " mapped members");

  var boundsZoomLevel = map.getBoundsZoomLevel(memberBounds);
  map.setCenter(memberBounds.getCenter(), boundsZoomLevel < 7 ? boundsZoomLevel : 7);
  drawPagination(page, pageXml.length);
}

function createMarker(memberXml, icon, isMe) {
  isMe = typeof isMe == "undefined" ? false : isMe;
  var member_loc = new GLatLng(parseFloat(memberXml.getAttribute("latitude")),
                               parseFloat(memberXml.getAttribute("longitude"))
                         );
  if(!isMe) {
    memberBounds.extend(member_loc);
  }
  var marker = new GMarker(member_loc, icon);

  GEvent.addListener(marker,"click", function() {
    var infoHtml = memberXml.getElementsByTagName("mapHtml")[0].childNodes[0].nodeValue;
    openLabel("other", member_loc, infoHtml);
  });

  return marker;
}


function selectMember(id) {
  GEvent.trigger(member_marker_array[id],"click");
}

function retrieveProfile() {
  closeLabel();
  map.clearOverlays();
  $("#map").hide();
  $("#gmapLoader").show();
  map.addControl(new GOverviewMapControl());
	setOverviewPos(); 
	
  var xmlUrl = "/community/maps/single_user.html?remoteregid=" + pRegistrationId;
  
  if (typeof pCommunityId != "undefined" && typeof pCommunityId != "undefined") {
  	xmlUrl = xmlUrl + "&communityId=" + pCommunityId;
  }
  
  if (pSource && pSource != "undefined") {
  	xmlUrl = xmlUrl + "&source=" + pSource;
  }
  if (typeof pEntitySource != "undefined" && typeof pEntitySource != "undefined") {
  	xmlUrl = xmlUrl + "&entityCommunitySource=" + pEntitySource;
  }
  if ( typeof pEntityCommunityId != "undefined" &&  typeof pEntityCommunityId != "undefined") {
  	xmlUrl = xmlUrl + "&entityCommunityId=" + pEntityCommunityId;
  }
  
  
  $.ajax({
    url: xmlUrl,
    success: function(request) {
      if(request.responseXML) {
        request = request.responseXML;
      }
      processProfileXml(request);
      $("#gmapLoader").hide();
      $("#map").show();
    },
    error: function(request) {
      $('gmap_table').html('<br/><img src=\"/graphics/icons/icon_error.gif\">Process Failed!  Please retry...<br/><br/>');
    }          
  });
}

function posOverview() {
 var omap = document.getElementById("map_overview");
 var ochild1 = omap.childNodes.item(0);
 var okid1 = ochild1.childNodes.item(0);
 okid1.style.left = "7px";
 okid1.style.top = "7px";
}

function setOverviewPos() {
 setTimeout("posOverview()", 500);
} 

function processProfileXml(xmlDoc) {
  var me = xmlDoc.documentElement.getElementsByTagName("reguser")[0];
  if(me != null && typeof me != "undefined") {
    map.addOverlay(createMarker(me, blueIcon));
  }

  var other = xmlDoc.documentElement.getElementsByTagName("otheruser")[0];
  if(other != null && typeof other != "undefined") {   
    map.addOverlay(createMarker(other, redIcon));
  } 
  if(other != null && typeof other != "undefined") {
    var boundsZoomLevel = map.getBoundsZoomLevel(memberBounds);
    map.setCenter(new GLatLng(parseFloat(other.getAttribute("latitude")),parseFloat(other.getAttribute("longitude"))),  boundsZoomLevel < 7 ? boundsZoomLevel : 7);
  }  else {
    var boundsZoomLevel = map.getBoundsZoomLevel(memberBounds);
    map.setCenter(memberBounds.getCenter(), boundsZoomLevel < 7 ? boundsZoomLevel : 7);
  }
}

function changeState(state) {
  var xmlUrl = "/community/maps/map_users.html?state=" + state +
               "&communityId=" + top.pCommunityId + 
               "&year=" + document.getElementById('year_select').value + 
               "&source=" + top.pSource;
  retrieveMembers(xmlUrl);
}

function changeYear(year) {
    
    if ( typeof currentYear != "undefined" ){
        currentYear = year;
    }
    
    var xmlUrl = "/community/maps/summarize_users.html?communityId=" + top.pCommunityId +
               "&year=" + year;
    if ( typeof top.pSource != "undefined" ){
      xmlUrl = xmlUrl + "&source=" + top.pSource;
    }
  retrieveStatesRaw(xmlUrl);
}  

function hideStuff() {
  $("#slideDown").slideToggle();
}

function toggleBuilder() {
  parent.document.getElementById('builderDiv').style.display = ""
  parent.document.getElementById('builderFrame').src='/profile/builder/frames/googlemapsphoto.jsp';
}

function hidePagination() {
  pdiv = document.getElementById('pagination');
  if(typeof pdiv != "undefined") {
    pdiv.style.display = 'none';
  }
}

function drawPagination(cur, max) {
  pdiv = document.getElementById('pagination');
  if(typeof pdiv == "undefined") {
    return false;
  }
  pdiv.style.display = '';

  if(max == 1 || max == '' || cur == '') {
    //Clear pagination
    pdiv.innerHTML = "";
  } else {
    var prevText = "&laquo; prev";
    if(cur == 1) {
      pdiv.innerHTML = '<span style="color: #aaaaaa">' + prevText + '</span> ';
    } else {
      prevPage = Number(cur) - 1;
      pdiv.innerHTML = '<a href="javascript:gotoPage(' + prevPage + ')">' + prevText + '</a> ';
    } 
    if(max < 6) {
      //1 2 3 4 5
      for(var i = 1; i <= max; i++) {
        if(i == cur) {
          pdiv.innerHTML += ' <strong>' + i  + '</strong> ';
        } else {
          pdiv.innerHTML += ' <a href="javascript:gotoPage(' + i + ')">' + i  + '</a> ';
        }
      }
    } else if(max > 5 && cur < 2) {
      //<b>1</b>...2...6
      pdiv.innerHTML += " <strong>1</strong>...";
      pdiv.innerHTML += '<a href="javascript:gotoPage(2)">2</a>';
      pdiv.innerHTML += '...<a href="javascript:gotoPage(' + max + ')">' + max  + '</a> ';
    } else if(max > 5 && cur == max) {
      //1...5...<b>6</b>
      pdiv.innerHTML += ' <a href="javascript:gotoPage(1)">1</a>...';
      pdiv.innerHTML += '<a href="javascript:gotoPage(' + prevPage  + ')">' + prevPage + '</a>';
      pdiv.innerHTML += '...<strong>' + cur  + '</strong> ';
    } else {
      //1...<b>3</b>...6
      pdiv.innerHTML += ' <a href="javascript:gotoPage(1)">1</a>...';
      pdiv.innerHTML += '<strong>' + cur + '</strong>';
      pdiv.innerHTML += '...<a href="javascript:gotoPage(' + max + ')">' + max  + '</a> ';
    }
    var nextText = "next &raquo;";
    if(cur == max) {
      pdiv.innerHTML += ' <span style="color: #aaaaaa">' + nextText + '</span>';
    } else {
      nextPage = Number(cur) + 1;
      pdiv.innerHTML += ' <a href="javascript:gotoPage(' + nextPage + ')">' + nextText + '</a>';
    } 
  }
}

function triggerOmniture(page) {
  document.getElementById('omniture').src="/community/maps/container_omni.jsp?page=" + page;
}

function updateStateDropDownSelection(state_abbr) {
  select = document.getElementById('region').getElementsByTagName("select")[0];
  options = document.getElementById('region').getElementsByTagName("option");
  for(var i = 0; i < options.length; i++) {
    if(options[i].value == state_abbr) {
      select.selectedIndex = i;
    }
  }
}

/* Nearby Community Maps */
$(document).ready(NB_maps_init);

//add thickbox to href elements that have a class of .thickbox
function NB_maps_init(){
    $("a.nbrhdItem").bind('click',function(){
        // Fix for bug 71743: Sometimes when clicking on a neighborhood from the left hand list the map
        // jumps over too quick, not the nice animated slide. This appears to be a google maps api issue.
        // We get around this by calling selectNeighborhood twice. 
        selectNeighborhood($(this).attr('name'), $(this).attr('lat'), $(this).attr('long'), $(this).attr('commId'), $(this).attr('id'));
        selectNeighborhood($(this).attr('name'), $(this).attr('lat'), $(this).attr('long'), $(this).attr('commId'), $(this).attr('id'));
        return false;
    });
}

function initNearbyCommunitysMap(swLat, swLong, neLat, neLong, ctrLat, cntLong) {
    $("#gmapLoader").show();
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.clearOverlays();
        var swPoint=new GLatLng(swLat,swLong,false);
        var nePoint=new GLatLng(neLat,neLong,false);
        var ctrPoint=new GLatLng(ctrLat,cntLong,false);
        var bounds = new GLatLngBounds(swPoint,nePoint);
        var zoomLevel=map.getBoundsZoomLevel(bounds);
        map.setCenter(ctrPoint);
        map.setZoom(zoomLevel);
        map.addControl(new GSmallMapControl());
        map.addControl(new GScaleControl());
    }
}
function setupMarkers() {
    var managerOpts = { borderPadding:10, maxZoom: 18, trackMarkers: false };
    var mgr = new MarkerManager(map);
    mgr.addMarkers(neighborhood_marker_array,map.getZoom()-2);
    mgr.refresh();
    $("#gmapLoader").hide();
    $("#map").show();
}
function selectNeighborhood(name, lat, long, id, linkId) {
    openLabel("neighborhood", new GLatLng(lat,long), genNeighborhoodBubble(name, id));
    setSelectedNeighborhood(linkId);
}
function setSelectedNeighborhood(id){
  $('#' + lastSelected).show();
  $('#' + lastSelected + "Selected").hide();
  $('#' + id).hide();
  $('#' + id + "Selected").show();
  lastSelected = id;
}
function genNeighborhoodBubble(neighborhood, communityId){
    if ( neighborhood.length > 24 ){
        neighborhood = neighborhood.substring(0, 21) + '...';
    }
    var bubble = '<div id="neighborhoodBubble">\n';
    bubble += '\t<p class="leftHalfMargin botHalfMargin topHalfMargin botHalfPad bubbleHeader">' + neighborhood + '</p>\n';
    bubble += '\t<div class="leftHalfMargin">\n';
    bubble += '\t\t<a href="#" onclick="top.location = \'/community/neighborhood/home?communityId=' + communityId + '&amp;communityType=11\'; return false;"><b>visit</b></a>&nbsp;<span class="greyTxt"><b>|</b></span>&nbsp;<a href="#" onclick="closeLabel();return false;"><b>close</b></a>\n';
    bubble += '\t</div>\n';
    bubble += '</div>';
    
    return bubble;
}

function openNeighborhoodLabel(lat, long, name, id){
    openLabel("neighborhood", new GLatLng(lat,long), genNeighborhoodBubble(name, id));
}

function addHomeMarker(name, lat, long, index, id){
    if ( typeof neighborhood_marker_array == 'undefined' ){
        neighborhood_marker_array = new Array();
    }
    var point=new GLatLng(lat,long);
    var homeIcon = new GIcon(G_DEFAULT_ICON);
    // TODO: Change the image to match updated comps when available.
    homeIcon.image = "/graphics/gmaps/markers/map_target_neighborhood.png";
    homeIcon.iconSize = new GSize(45, 33);
    homeIcon.iconAnchor = new GPoint(22, 16);
    homeIcon.title = name;
		var markerOpts = { icon:homeIcon };
    var marker=new GMarker(point,markerOpts);
    GEvent.addListener(marker,"click", function() {
        openLabel("neighborhood", new GLatLng(lat,long), genNeighborhoodBubble(name, id));
        return false;
    });
    map.addOverlay(marker);
}

function addNeighborhoodMarker(name, lat, long, index, id, linkId){
    if ( typeof neighborhood_marker_array == 'undefined' ){
        neighborhood_marker_array = new Array();
    }
    else if ( typeof neighborhood_marker_array != 'undefined' && index == 0 ){
        neighborhood_marker_array = new Array();
    }
    
    var point=new GLatLng(lat,long);
    var markerOpts = {title: name};
    var marker=new GMarker(point,markerOpts);
    GEvent.addListener(marker,"click", function() {
        openLabel("neighborhood", new GLatLng(lat,long), genNeighborhoodBubble(name, id));
        setSelectedNeighborhood(linkId);
        top.getLbFrame().contentWindow.document.getElementById(linkId + "Selected").scrollIntoView(true);
        top.window.scrollTo(0,0);
        return false;
    });
    neighborhood_marker_array.push(marker);
}

/* Nearby Community Maps END */

/* SEO Public profile maps starts here */
function retrieveSEOStatesRaw(xmlUrl) {  
  map.clearOverlays();  
  $("#map").hide();
  $("#gmapLoader").show();
  state_idx = 0;
  $.ajax({
    url: xmlUrl,
    success: function(request) {
      if(request.responseXML) {
        request = request.responseXML;
      }        
      var countries = request.documentElement.getElementsByTagName("country");      
      for (var i = 0; i < countries.length; i++) { 
        processStates(countries[i]);        
      }  
            
      if(request.documentElement.getAttribute("membercount") == "0") {
        top.document.getElementById("mapCont").style.display='none';        
      } else { 
      $("#gmapLoader").hide();
      $("#map").show();
    
      // Notify the map about div container resize , the above show call on map container changes the sise of map div from 0 to the height specified.
      map.checkResize();
      var zoomLevel=map.getBoundsZoomLevel(stateBounds);
      map.setCenter(stateBounds.getCenter(),zoomLevel < 7 ? zoomLevel : 7);
      }

    },
    error: function(request) {
      GLog.write("Failed to retrieve state member summary.");
    }
  });
}
/* SEO Public profile maps ends here */
