author | Mario Ferraro <fadinlight@gmail.com> |
Sun, 15 Nov 2009 22:12:20 +0100 | |
changeset 3093 | d1be59b6b627 |
permissions | -rw-r--r-- |
3093
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
1 |
/* Copyright 2009 the Melange authors. |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
2 |
* |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
3 |
* Licensed under the Apache License, Version 2.0 (the "License"); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
4 |
* you may not use this file except in compliance with the License. |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
5 |
* You may obtain a copy of the License at |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
6 |
* |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
7 |
* http://www.apache.org/licenses/LICENSE-2.0 |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
8 |
* |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
9 |
* Unless required by applicable law or agreed to in writing, software |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
10 |
* distributed under the License is distributed on an "AS IS" BASIS, |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
11 |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
12 |
* See the License for the specific language governing permissions and |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
13 |
* limitations under the License. |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
14 |
*/ |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
15 |
/** |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
16 |
* @author <a href="mailto:fadinlight@gmail.com">Mario Ferraro</a> |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
17 |
*/ |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
18 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
19 |
(function () { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
20 |
var melange = window.melange; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
21 |
this.prototype = new melange.templates._baseTemplate(); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
22 |
this.prototype.constructor = melange.templates._baseTemplate; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
23 |
melange.templates._baseTemplate.apply(this, arguments); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
24 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
25 |
var _self = this; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
26 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
27 |
// Create global variables |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
28 |
var map; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
29 |
var marker; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
30 |
var geocoder; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
31 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
32 |
// The following strings can be customized to reflect ids in the page. |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
33 |
// You can also add or remove fields used for GMap Geocoding in |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
34 |
// the JSON address object |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
35 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
36 |
var current_lat = 0; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
37 |
var current_lng = 0; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
38 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
39 |
// Two different levels for zoom: Starting one and an inner that |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
40 |
// is used when showing the map if lat and lon page fields are set |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
41 |
var world_zoom = 0; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
42 |
var country_zoom = 4; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
43 |
var state_zoom = 6; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
44 |
var city_zoom = 10; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
45 |
var address_zoom = 13; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
46 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
47 |
// Do not add a starting # as this JQuery selector seems |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
48 |
// incompatible with GMap API |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
49 |
var map_div = "role_profile_map"; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
50 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
51 |
var field_lat = "#id_latitude"; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
52 |
var field_lng = "#id_longitude"; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
53 |
// Need to save old values to avoid unwanted updating |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
54 |
// of lat and lot if marker dragged and blur another time an address field |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
55 |
var address = { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
56 |
street: { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
57 |
id: "#id_res_street", |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
58 |
old_value: "" |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
59 |
}, |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
60 |
city: { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
61 |
id: "#id_res_city", |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
62 |
old_value: "" |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
63 |
}, |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
64 |
state: { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
65 |
id: "#id_res_state", |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
66 |
old_value: "" |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
67 |
}, |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
68 |
country: { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
69 |
id: "#id_res_country", |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
70 |
old_value: "" |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
71 |
}, |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
72 |
postalcode: { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
73 |
id: "#id_res_postalcode", |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
74 |
old_value: "" |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
75 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
76 |
}; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
77 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
78 |
// Save current address fields in the JSON Object |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
79 |
function saveOldAddress() { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
80 |
jQuery.each(address, function (level, level_details) { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
81 |
level_details.old_value = jQuery(level_details.id).val(); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
82 |
}); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
83 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
84 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
85 |
// Return true if the user has edited address fields |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
86 |
function isNewAddress() { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
87 |
var is_new = false; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
88 |
jQuery.each(address, function (level, level_details) { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
89 |
if (jQuery(level_details.id).val() !== level_details.old_value) { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
90 |
is_new = true; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
91 |
return false; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
92 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
93 |
}); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
94 |
return is_new; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
95 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
96 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
97 |
// Write saved lat and lng values to page fields |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
98 |
function setLatLngFields() { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
99 |
jQuery(field_lat).val(current_lat); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
100 |
jQuery(field_lng).val(current_lng); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
101 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
102 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
103 |
// Read lat and lng fields and store them |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
104 |
function readLatLngFields() { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
105 |
current_lat = jQuery(field_lat).val(); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
106 |
current_lng = jQuery(field_lng).val(); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
107 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
108 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
109 |
// This function reads address fields, merge them and uses |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
110 |
// GMap API geocoding to find the first hit |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
111 |
// Using geocoding |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
112 |
// http://code.google.com/intl/it-IT/apis/maps/documentation/ |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
113 |
// services.html#Geocoding |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
114 |
function calculateAddress() { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
115 |
// If the user has really edited address fields... |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
116 |
if (isNewAddress()) { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
117 |
// Merge address fields |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
118 |
var address_string = ""; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
119 |
jQuery.each(address, function (level, level_details) { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
120 |
address_string += jQuery(level_details.id).val() + ","; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
121 |
}); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
122 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
123 |
// Ask GMap API for geocoding |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
124 |
geocoder.getLatLng( |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
125 |
address_string, |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
126 |
function (point) { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
127 |
// If a point is found |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
128 |
if (point) { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
129 |
// Save the current address in the JSON object |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
130 |
saveOldAddress(); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
131 |
// Set the new zoom, map center and marker coords |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
132 |
var zoom_set = world_zoom; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
133 |
if (jQuery(address.street.id).val() !== "") { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
134 |
zoom_set = address_zoom; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
135 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
136 |
else if (jQuery(address.city.id).val() !== "") { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
137 |
zoom_set = city_zoom; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
138 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
139 |
else if (jQuery(address.state.id).val() !== "") { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
140 |
zoom_set = state_zoom; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
141 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
142 |
else if (jQuery(address.country.id).val() !== "") { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
143 |
zoom_set = country_zoom; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
144 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
145 |
map.setCenter(point, zoom_set); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
146 |
marker.setPoint(point); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
147 |
map.clearOverlays(); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
148 |
map.addOverlay(marker); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
149 |
// Save point coords in local variables and then update |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
150 |
// the page lat/lng fields |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
151 |
current_lat = point.lat(); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
152 |
current_lng = point.lng(); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
153 |
setLatLngFields(); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
154 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
155 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
156 |
); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
157 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
158 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
159 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
160 |
// Public function to load the map |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
161 |
function map_load() { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
162 |
// All can happen only if there is gmap compatible browser. |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
163 |
// TODO: Fallback in case the browser is not compatible |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
164 |
if (google.maps.BrowserIsCompatible()) { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
165 |
// Save the address fields. This is useful if the page is being edited |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
166 |
// to not update blindly the lat/lng fields with GMap geocoding if |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
167 |
// blurring an address field |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
168 |
saveOldAddress(); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
169 |
var starting_point; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
170 |
var zoom_selected = world_zoom; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
171 |
var show_marker = true; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
172 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
173 |
// Create the map and add small controls |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
174 |
map = new google.maps.Map2(document.getElementById(map_div)); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
175 |
map.addControl(new google.maps.SmallMapControl()); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
176 |
map.addControl(new google.maps.MapTypeControl()); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
177 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
178 |
// Instantiate a global geocoder for future use |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
179 |
geocoder = new google.maps.ClientGeocoder(); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
180 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
181 |
// If lat and lng fields are not void (the page is being edited) then |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
182 |
// update the starting coords, modify the zoom level and tells following |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
183 |
// code to show the marker |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
184 |
if (jQuery(field_lat).val() !== "" && jQuery(field_lng).val() !== "") { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
185 |
readLatLngFields(); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
186 |
zoom_selected = address_zoom; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
187 |
show_marker = true; |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
188 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
189 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
190 |
// Set map center, marker coords and show it if this is an editing |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
191 |
starting_point = new google.maps.LatLng(current_lat, current_lng); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
192 |
map.setCenter(starting_point, zoom_selected); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
193 |
marker = new google.maps.Marker(starting_point, {draggable: true}); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
194 |
if (show_marker) { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
195 |
map.addOverlay(marker); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
196 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
197 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
198 |
// Adds a new event listener to geocode the address when an address |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
199 |
// field is blurred |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
200 |
jQuery.each(address, function (level, level_details) { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
201 |
jQuery(level_details.id).blur(calculateAddress); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
202 |
}); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
203 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
204 |
// Adds a new event listener: if the marker has been dragged around... |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
205 |
google.maps.Event.addListener(marker, "dragend", function () { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
206 |
// Update internal variables with current marker coords... |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
207 |
current_lat = marker.getPoint().lat(); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
208 |
current_lng = marker.getPoint().lng(); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
209 |
// ...and set page fields accordingly |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
210 |
setLatLngFields(); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
211 |
}); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
212 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
213 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
214 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
215 |
jQuery( |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
216 |
function () { |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
217 |
melange.loadGoogleApi("maps", "2", {}, map_load); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
218 |
} |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
219 |
); |
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
220 |
|
d1be59b6b627
GMaps related JS changed to use new google namespace.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff
changeset
|
221 |
}()); |