diff -r 0fe7767592d0 -r cd9eed2b787e app/soc/content/js/map-090730.js --- a/app/soc/content/js/map-090730.js Tue Aug 25 15:55:26 2009 +0100 +++ b/app/soc/content/js/map-090730.js Tue Aug 25 15:58:30 2009 +0100 @@ -1,10 +1,13 @@ -role_profile_gmap = new function(){ +(function () { + var role_profile_gmap = window.role_profile_gmap = function () { + }; + // Create global variables var map; var marker; var geocoder; - // The following strings can be customized to reflect ids in the page. + // The following strings can be customized to reflect ids in the page. // You can also add or remove fields used for GMap Geocoding in // the JSON address object @@ -48,62 +51,75 @@ id: "#id_res_postalcode", old_value: "" } - } + }; // Save current address fields in the JSON Object function saveOldAddress() { - for (var a in address) { - address[a].old_value = $(address[a].id).val(); - } + jQuery.each(address, function (level, level_details) { + level_details.old_value = jQuery(level_details.id).val(); + }); } // Return true if the user has edited address fields function isNewAddress() { - for (var a in address) { - if ($(address[a].id).val() != address[a].old_value) return true; - } - return false; + var is_new = false; + jQuery.each(address, function (level, level_details) { + if (jQuery(level_details.id).val() !== level_details.old_value) { + is_new = true; + return false; + } + }); + return is_new; } // Write saved lat and lng values to page fields function setLatLngFields() { - $(field_lat).val(current_lat); - $(field_lng).val(current_lng); + jQuery(field_lat).val(current_lat); + jQuery(field_lng).val(current_lng); } // Read lat and lng fields and store them function readLatLngFields() { - current_lat = $(field_lat).val(); - current_lng = $(field_lng).val(); + current_lat = jQuery(field_lat).val(); + current_lng = jQuery(field_lng).val(); } - // This function reads address fields, merge them and uses + // This function reads address fields, merge them and uses // GMap API geocoding to find the first hit - // Using geocoding http://code.google.com/intl/it-IT/apis/maps/documentation/services.html#Geocoding + // Using geocoding + // http://code.google.com/intl/it-IT/apis/maps/documentation/ + // services.html#Geocoding function calculateAddress() { // If the user has really edited address fields... if (isNewAddress()) { // Merge address fields var address_string = ""; - for (var a in address) { - address_string+=$(address[a].id).val(); - if (a!=address.length-1) {address_string+=","}; - } + jQuery.each(address, function (level, level_details) { + address_string += jQuery(level_details.id).val() + ","; + }); // Ask GMap API for geocoding geocoder.getLatLng( address_string, - function(point) { + function (point) { // If a point is found if (point) { // Save the current address in the JSON object saveOldAddress(); // Set the new zoom, map center and marker coords var zoom_set = world_zoom; - if ($(address.street.id).val()!="") zoom_set = address_zoom; - else if ($(address.city.id).val()!="") zoom_set = city_zoom; - else if ($(address.state.id).val()!="") zoom_set = state_zoom; - else if ($(address.country.id).val()!="") zoom_set = country_zoom; + if (jQuery(address.street.id).val() !== "") { + zoom_set = address_zoom; + } + else if (jQuery(address.city.id).val() !== "") { + zoom_set = city_zoom; + } + else if (jQuery(address.state.id).val() !== "") { + zoom_set = state_zoom; + } + else if (jQuery(address.country.id).val() !== "") { + zoom_set = country_zoom; + } map.setCenter(point, zoom_set); marker.setPoint(point); map.clearOverlays(); @@ -120,12 +136,12 @@ } // Public function to load the map - this.map_load = function() { + role_profile_gmap.map_load = function () { // All can happen only if there is gmap compatible browser. // TODO: Fallback in case the browser is not compatible - if (GBrowserIsCompatible()) { - // Save the address fields. This is useful if the page is being edited - // to not update blindly the lat/lng fields with GMap geocoding if + if (window.GBrowserIsCompatible()) { + // Save the address fields. This is useful if the page is being edited + // to not update blindly the lat/lng fields with GMap geocoding if // blurring an address field saveOldAddress(); var starting_point; @@ -133,36 +149,38 @@ var show_marker = true; // Create the map and add small controls - map = new GMap2(document.getElementById(map_div)); - map.addControl(new GSmallMapControl()); - map.addControl(new GMapTypeControl()); + map = new window.GMap2(document.getElementById(map_div)); + map.addControl(new window.GSmallMapControl()); + map.addControl(new window.GMapTypeControl()); // Instantiate a global geocoder for future use - geocoder = new GClientGeocoder(); + geocoder = new window.GClientGeocoder(); - // If lat and lng fields are not void (the page is being edited) then - // update the starting coords, modify the zoom level and tells following + // If lat and lng fields are not void (the page is being edited) then + // update the starting coords, modify the zoom level and tells following // code to show the marker - if ($(field_lat).val()!="" && $(field_lng).val()!="") { + if (jQuery(field_lat).val() !== "" && jQuery(field_lng).val() !== "") { readLatLngFields(); zoom_selected = address_zoom; show_marker = true; } - + // Set map center, marker coords and show it if this is an editing - starting_point = new GLatLng(current_lat,current_lng); + starting_point = new window.GLatLng(current_lat, current_lng); map.setCenter(starting_point, zoom_selected); - marker = new GMarker(starting_point, {draggable:true}); - if (show_marker) map.addOverlay(marker); - + marker = new window.GMarker(starting_point, {draggable: true}); + if (show_marker) { + map.addOverlay(marker); + } + // Adds a new event listener to geocode the address when an address // field is blurred - for (var a in address) { - $(address[a].id).blur(calculateAddress); - } - + jQuery.each(address, function (level, level_details) { + jQuery(level_details.id).blur(calculateAddress); + }); + // Adds a new event listener: if the marker has been dragged around... - GEvent.addListener(marker, "dragend", function() { + window.GEvent.addListener(marker, "dragend", function () { // Update internal variables with current marker coords... current_lat = marker.getPoint().lat(); current_lng = marker.getPoint().lng(); @@ -170,54 +188,56 @@ setLatLngFields(); }); } - } -}; + }; +}()); -org_home_gmap = new function(){ +(function () { + var org_home_gmap = window.org_home_gmap = function () { + }; // Global variables var map; // HTML div tag where map needs to be inserted var map_div = "org_home_map"; - + // Setup required icons - var base_icon = new GIcon(); + var base_icon = new window.GIcon(); base_icon.shadow = "http://www.google.com/mapfiles/shadow50.png"; - base_icon.iconSize = new GSize(20, 34); - base_icon.shadowSize = new GSize(37, 34); - base_icon.iconAnchor = new GPoint(9, 34); - base_icon.infoWindowAnchor = new GPoint(9, 2); - base_icon.infoShadowAnchor = new GPoint(18, 25); - var student_icon = new GIcon(base_icon); + base_icon.iconSize = new window.GSize(20, 34); + base_icon.shadowSize = new window.GSize(37, 34); + base_icon.iconAnchor = new window.GPoint(9, 34); + base_icon.infoWindowAnchor = new window.GPoint(9, 2); + base_icon.infoShadowAnchor = new window.GPoint(18, 25); + var student_icon = new window.GIcon(base_icon); student_icon.image = "http://www.google.com/mapfiles/marker.png"; - var mentor_icon = new GIcon(base_icon); + var mentor_icon = new window.GIcon(base_icon); mentor_icon.image = "/soc/content/images/mentor-marker.png"; // Map load function - this.map_load = function(map_data) { + org_home_gmap.map_load = function (map_data) { - if (GBrowserIsCompatible()) { + if (window.GBrowserIsCompatible()) { // Create the map and add small controls - map = new GMap2(document.getElementById(map_div)); - map.addControl(new GLargeMapControl()); - map.addControl(new GMapTypeControl()); + map = new window.GMap2(document.getElementById(map_div)); + map.addControl(new window.GLargeMapControl()); + map.addControl(new window.GMapTypeControl()); // Set map center and initial zoom level - map.setCenter(new GLatLng(0, 0), 1); + map.setCenter(new window.GLatLng(0, 0), 1); var mentors = {}; var students = {}; var projects = {}; var polylines = []; - jQuery.each(map_data.people, function(key, person) { + jQuery.each(map_data.people, function (key, person) { if (person.type === "student") { students[key] = { "name": person.name, "lat": person.lat, "long": person.long, "projects": person.projects - } + }; } if (person.type === "mentor") { mentors[key] = { @@ -239,31 +259,41 @@ current_student.long !== null && current_mentor.lat !== null && current_mentor.long !== null) { - polylines.push([[current_student.lat,current_student.long],[current_mentor.lat,current_mentor.long]]); + /*jslint white: false */ + polylines.push([ + [current_student.lat, current_student.long], + [current_mentor.lat, current_mentor.long] + ]); + /*jslint white: true */ } }); // Iterate over students - jQuery.each(students, function(key, person) { + jQuery.each(students, function (key, person) { var html = ""; var marker = null; - if (person.lat!==null && person.long!==null) { - point = new GLatLng(person.lat, - person.long); + if (person.lat !== null && person.long !== null) { + var point = new window.GLatLng(person.lat, person.long); - marker = new GMarker(point, student_icon); - html = "" + person.name + "
"; - html += "Student
"; - html += "
"; + marker = new window.GMarker(point, student_icon); + html = [ + "", person.name, "
", + "Student
", + "
" + ].join(""); // iterate through projects jQuery.each(person.projects, function () { var current_project = map_data.projects[this]; - html += "" + current_project.title + "
"; - html += "Mentor: " + current_project.mentor_name + "
"; + html += [ + "", + current_project.title, "
", + "Mentor: ", current_project.mentor_name, "
" + ].join(""); }); - html+= "
"; - GEvent.addListener(marker, "click", function() { + html += "
"; + window.GEvent.addListener(marker, "click", function () { marker.openInfoWindowHtml(html); }); @@ -272,27 +302,32 @@ }); // Iterate over mentors - jQuery.each(mentors, function(key, person) { + jQuery.each(mentors, function (key, person) { var html = ""; var marker = null; - if (person.lat!==null && person.long!==null) { - point = new GLatLng(person.lat, - person.long); + if (person.lat !== null && person.long !== null) { + var point = new window.GLatLng(person.lat, person.long); - marker = new GMarker(point, mentor_icon); - html = "" + person.name + "
"; - html += "Mentor
"; - html += "
"; + marker = new window.GMarker(point, mentor_icon); + html = [ + "", person.name, "
", + "Mentor
", + "
" + ].join(""); // iterate through projects jQuery.each(person.projects, function () { var current_project = map_data.projects[this]; - html += "" + current_project.title + "
"; - html += "Student: " + current_project.student_name + "
"; + html += [ + "", + current_project.title, "
", + "Student: ", current_project.student_name, "
" + ].join(""); }); - html+= "
"; + html += "
"; - GEvent.addListener(marker, "click", function() { + window.GEvent.addListener(marker, "click", function () { marker.openInfoWindowHtml(html); }); @@ -301,12 +336,12 @@ }); // Draw all polylines - jQuery.each(polylines, function() { - var from = new GLatLng(this[0][0],this[0][1]); - var to = new GLatLng(this[1][0],this[1][1]); - var polyline = new GPolyline([from, to], "#ff0000", 3); + jQuery.each(polylines, function () { + var from = new window.GLatLng(this[0][0], this[0][1]); + var to = new window.GLatLng(this[1][0], this[1][1]); + var polyline = new window.GPolyline([from, to], "#ff0000", 3); map.addOverlay(polyline); }); } - } -}; + }; +}());