gremmie@1: var mmap = { gremmie@1: map: null, gremmie@1: geocoder: null, gremmie@1: users: Object, gremmie@1: userOnMap: false, gremmie@1: userClick: function() { gremmie@1: var name = $('option:selected', this).text(); gremmie@1: if (name != mmap.selectText) gremmie@1: { gremmie@1: mmap.clickUser(name); gremmie@1: } gremmie@1: }, gremmie@1: clickUser: function(name) { gremmie@1: pt = new GLatLng(mmap.users[name].lat, mmap.users[name].lon); gremmie@1: mmap.map.setCenter(pt); gremmie@1: mmap.users[name].marker.openInfoWindowHtml(mmap.users[name].message); gremmie@1: }, gremmie@1: clear: function() { gremmie@1: mmap.users.length = 0; gremmie@1: }, gremmie@1: resizeUserList: function() { gremmie@1: var sel = $('#member_map_members'); gremmie@1: sel[0].size = Math.min(29, sel[0].length); gremmie@1: $('#member_map_count').html(sel[0].length); gremmie@1: }, gremmie@1: selectText: "(select)", gremmie@1: onMapDir: 'You have previously added yourself to the member map. Your information appears below. You may change ' + gremmie@1: 'the information if you wish. To delete yourself from the map, click the Delete button.', gremmie@1: offMapDir: 'Your location is not on the map. If you would like to appear on the map, please fill out the form below ' + gremmie@1: 'and click the Submit button.' gremmie@1: }; gremmie@1: $(document).ready(function() { gremmie@1: $('#id_message').markItUp(mySettings); gremmie@1: if (GBrowserIsCompatible()) gremmie@1: { gremmie@1: $(window).unload(GUnload); gremmie@1: mmap.map = new GMap2($('#member_map_map')[0]); gremmie@1: mmap.map.setCenter(new GLatLng(15.0, -30.0), 2); gremmie@1: mmap.map.enableScrollWheelZoom(); gremmie@1: mmap.map.addControl(new GLargeMapControl()); gremmie@1: mmap.map.addControl(new GMapTypeControl()); gremmie@1: mmap.geocoder = new GClientGeocoder(); gremmie@1: gremmie@1: if (mmapUser.userName) gremmie@1: { gremmie@1: $.getJSON('/member_map/query/', gremmie@1: function(data) { gremmie@1: mmap.map.clearOverlays(); gremmie@1: var sel = $('#member_map_members'); gremmie@1: sel[0].length = 0; gremmie@1: mmap.clear(); gremmie@1: $.each(data.users, function(i, item) { gremmie@1: sel.append($('<option />').html(item.name)); gremmie@1: var marker = new GMarker(new GLatLng(item.lat, item.lon)); gremmie@1: marker.bindInfoWindowHtml(item.message); gremmie@1: mmap.map.addOverlay(marker); gremmie@1: mmap.users[item.name] = item; gremmie@1: mmap.users[item.name].marker = marker; gremmie@1: if (mmapUser.userName == item.name) gremmie@1: { gremmie@1: mmap.userOnMap = true; gremmie@1: } gremmie@1: }); gremmie@1: sel[0].size = Math.min(29, data.users.length); gremmie@1: $('#member_map_count').html(data.users.length); gremmie@1: gremmie@1: sel = $('#member_map_recent'); gremmie@1: sel[0].length = 0; gremmie@1: sel.append($('<option />').html(mmap.selectText)); gremmie@1: $.each(data.recent, function(i, item) { gremmie@1: sel.append($('<option />').html(item)); gremmie@1: }); gremmie@1: var submitButton = $('#member_map_submit'); gremmie@1: var deleteButton = $('#member_map_delete'); gremmie@1: gremmie@1: submitButton.click(function() { gremmie@1: if (mmap.geocoder) gremmie@1: { gremmie@1: $(this).attr('disabled', 'disabled').val('Updating Map...'); gremmie@1: var address = $('#id_location').val(); gremmie@1: mmap.geocoder.getLatLng(address, gremmie@1: function(point) { gremmie@1: if (!point) gremmie@1: { gremmie@1: alert(address + ' could not be found on Google Maps.'); gremmie@1: return; gremmie@1: } gremmie@1: $.post('/member_map/add/', { gremmie@1: loc : address, gremmie@1: lat : point.lat(), gremmie@1: lon : point.lng(), gremmie@1: msg : $('#id_message').val() gremmie@1: }, gremmie@1: function(data, textStatus) { gremmie@1: var wasOnMap = mmap.userOnMap; gremmie@1: if (mmap.userOnMap) gremmie@1: { gremmie@1: mmap.map.removeOverlay(mmap.users[mmapUser.userName].marker); gremmie@1: } gremmie@1: else gremmie@1: { gremmie@1: $('#member_map_members').append($('<option />').html(data.name)); gremmie@1: mmap.userOnMap = true; gremmie@1: deleteButton.removeAttr('disabled').val('Delete'); gremmie@1: } gremmie@1: var marker = new GMarker(new GLatLng(data.lat, data.lon)); gremmie@1: marker.bindInfoWindowHtml(data.message); gremmie@1: mmap.map.addOverlay(marker); gremmie@1: mmap.users[mmapUser.userName] = data; gremmie@1: mmap.users[mmapUser.userName].marker = marker; gremmie@1: mmap.clickUser(mmapUser.userName); gremmie@1: submitButton.removeAttr('disabled').val('Update'); gremmie@1: $('#member_map_directions').html(mmap.onMapDir); gremmie@1: mmap.resizeUserList(); gremmie@1: alert(wasOnMap ? "Your location has been updated!" : gremmie@1: "You've been added to the map!"); gremmie@1: }, gremmie@1: 'json'); gremmie@1: }); gremmie@1: } gremmie@1: return false; gremmie@1: }); gremmie@1: gremmie@1: deleteButton.click(function() { gremmie@1: deleteButton.attr('disabled', 'disabled').val('Deleting...'); gremmie@1: $.post('/member_map/delete/', function(data, textStatus) { gremmie@1: $('#id_location').val(''); gremmie@1: $('#id_message').val(''); gremmie@1: $("#member_map_members option[value='" + mmapUser.userName + "']").remove(); gremmie@1: $("#member_map_recent option[value='" + mmapUser.userName + "']").remove(); gremmie@1: mmap.map.removeOverlay(mmap.users[mmapUser.userName].marker); gremmie@1: mmap.users[mmapUser.userName].marker = null; gremmie@1: mmap.users[mmapUser.userName] = null; gremmie@1: mmap.userOnMap = false; gremmie@1: deleteButton.val('Delete'); gremmie@1: submitButton.removeAttr('disabled').val('Add'); gremmie@1: $('#member_map_directions').html(mmap.offMapDir); gremmie@1: mmap.resizeUserList(); gremmie@1: alert("You've been removed from the map."); gremmie@1: }, gremmie@1: 'text'); gremmie@1: return false; gremmie@1: }); gremmie@1: gremmie@1: if (mmap.userOnMap) gremmie@1: { gremmie@1: submitButton.val('Update'); gremmie@1: $('#member_map_directions').html(mmap.onMapDir); gremmie@1: } gremmie@1: else gremmie@1: { gremmie@1: submitButton.val('Add'); gremmie@1: deleteButton.attr('disabled', 'disabled'); gremmie@1: $('#member_map_directions').html(mmap.offMapDir); gremmie@1: } gremmie@1: }); gremmie@1: $('#member_map_members').change(mmap.userClick); gremmie@1: $('#member_map_recent').change(mmap.userClick); gremmie@1: } gremmie@1: } gremmie@1: });