I want you to review my JavaScript project. The full context and all details are available from [my app][1] or [my repository][2]: var geocoder; var map; var infowindow = new google.maps.InfoWindow(); var marker; function initialize() { document.upload.lat.value = geoip_latitude(); document.upload.lng.value = geoip_longitude(); geocoder = new google.maps.Geocoder(); var latlng = new google.maps.LatLng(geoip_latitude(), geoip_longitude()); var myOptions = { zoom: 8, center: latlng, mapTypeId: 'roadmap' } map = new google.maps.Map(document.getElementById("gmap"), myOptions); //var ctaLayer = new google.maps.KmlLayer('http://www.koolbusiness.com/list.kml'); //ctaLayer.setMap(map); google.maps.event.addListener(map, "click", gAdd); geocoder.geocode({ 'latLng': latlng }, function (results, status) { if (status == google.maps.GeocoderStatus.OK) { document.getElementById("message").innerHTML = results[5].formatted_address; document.upload.place.value = results[5].formatted_address; } else { } }); if (navigator.geolocation) { browserSupportFlag = true; navigator.geolocation.getCurrentPosition(function (position) { initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); var latlng = initialLocation geocoder.geocode({ 'latLng': latlng }, function (results, status) { if (status == google.maps.GeocoderStatus.OK) { if (results[1]) { marker = new google.maps.Marker({ position: latlng, map: map }); infowindow.setContent('<a href="/li?lat=' + latlng.lat() + '&lon=' + latlng.lng() + '">' + results[1].formatted_address + '</a>'); infowindow.open(map, marker); document.upload.lat.value = latlng.lat(); document.upload.lng.value = latlng.lng(); document.upload.place.value = results[5].formatted_address } else { alert("No results found"); } } else { alert("Geocoder failed due to: " + status); } }); }, function () { handleNoGeolocation(browserSupportFlag); }); } else if (google.gears) { // Try Google Gears Geolocation browserSupportFlag = true; var geo = google.gears.factory.create('beta.geolocation'); geo.getCurrentPosition(function (position) { initialLocation = new google.maps.LatLng(position.latitude, position.longitude); var latlng = initialLocation geocoder.geocode({ 'latLng': latlng }, function (results, status) { if (status == google.maps.GeocoderStatus.OK) { if (results[1]) { marker = new google.maps.Marker({ position: latlng, map: map }); infowindow.setContent('<a href="/li?lat=' + latlng.lat() + '&lon=' + latlng.lng() + '">' + results[1].formatted_address + '</a>'); infowindow.open(map, marker); document.upload.lat.value = latlng.lat(); document.upload.lng.value = latlng.lng();; document.upload.place.value = results[5].formatted_address; } else { alert("No results found"); } } else { alert("Geocoder failed due to: " + status); } }); }, function () { handleNoGeolocation(browserSupportFlag); }); } else { // Browser doesn't support Geolocation browserSupportFlag = false; handleNoGeolocation(browserSupportFlag); } } function gAdd(ev) { marker.setMap(null) var latlng = new google.maps.LatLng(ev.latLng.lat(), ev.latLng.lng()); geocoder.geocode({ 'latLng': latlng }, function (results, status) { if (status == google.maps.GeocoderStatus.OK) { document.getElementById("message").innerHTML = results[1].formatted_address; document.upload.place.value = results[5].formatted_address document.upload.lat.value = latlng.lat(); document.upload.lng.value = latlng.lng(); marker = new google.maps.Marker({ position: latlng, draggable: true, animation: google.maps.Animation.DROP, map: map }); google.maps.event.addListener(marker, 'click', toggleBounce); infowindow.setContent('<a href="/li?lat=' + latlng.lat() + '&lon=' + latlng.lng() + '">' + results[1].formatted_address + '</a>'); infowindow.open(map, marker); } else { } }); } function toggleBounce() { if (marker.getAnimation() != null) { alert("test"); marker.setAnimation(null); } else { marker.setAnimation(google.maps.Animation.BOUNCE); } } ![enter image description here][3] [1]: http://www.koolbusiness.com/ai [2]: http://montao.googlecode.com [3]: https://i.sstatic.net/6RrLQ.png