1// Global functions used by tracker.com 2 3function isdefined(variable) { 4 return (typeof (window[variable]) == "undefined") ? false : true; 5} 6 7// prototypes 8String.prototype.trim = function () { 9 return this.replace(/^\s*/, "").replace(/\s*$/, ""); 10} 11 12function MapLoadedCallback() 13{ 14 // do nothing.. 15} 16 17function disableEnterKey(e) { 18 var key; 19 if (window.event) 20 key = window.event.keyCode; //IE 21 else 22 key = e.which; //firefox 23 24 return (key != 13); 25} 26 27//Google maps 28function circlePath(center, radius, points) { 29 var a = [], p = 360 / points, d = 0; 30 for (var i = 0; i < points; ++i, d += p) { 31 a.push(google.maps.geometry.spherical.computeOffset(center, radius, d)); 32 } 33 return a; 34} 35 36 37function mapGotoChanged(s, e, jsFunction) { 38 if (isdefined("GMap")) { 39 var address = s.GetText(); 40 mapGotoAddressAndCenter(address, jsFunction); 41 } 42} 43 44function mapGotoAddressAndCenter(address, jsFunction) { 45 if (isdefined("GMap")) { 46 if (address) { 47 address = address.trim(); 48 if (address.length > 0) { 49 GMap.geocodeAddressAndCenter(address, jsFunction); 50 } 51 } 52 } 53} 54 55function mapGotoKeyDown(s, e) { 56 if (13 == e.htmlEvent.keyCode) { 57 e.htmlEvent.returnValue = false; 58 mapGotoChanged(s, e); 59 return false; 60 } 61 return true; 62}; 63 64 65 66/** 67 * The default function for determining the label text and style 68 * for a cluster icon. 69 * 70 * @param {Array.<google.maps.Marker>} markers The array of markers represented by the cluster. 71 * @param {number} numStyles The number of marker styles available. 72 * @return {ClusterIconInfo} The information resource for the cluster. 73 * @constant 74 * @ignore 75 */ 76var clusterStatusCalculator = function TrackerMarkerClustererStatusCalculator(markers, numStyles) { 77 var index = 0; 78 var title = ""; 79 var count = markers.length.toString(); 80 81 var highestStatus = 1; 82 for (var x = 0 ; x < markers.length; x++) { 83 var marker = markers[x]; 84 var trackerMarker = marker.get('trk'); 85 if (trackerMarker) { 86 if (trackerMarker.CK) { 87 if (trackerMarker.CK == "VSS") { 88 if (highestStatus < 2) { 89 highestStatus = 2; 90 } 91 }; 92 if (trackerMarker.CK == "VSO") { 93 if (highestStatus < 3) { 94 highestStatus = 3; 95 } 96 }; 97 if (trackerMarker.CK == "VSW") { 98 if (highestStatus < 4) { 99 highestStatus = 4; 100 } 101 }; 102 103 if (trackerMarker.CK == "VSE") { 104 if (highestStatus < 5) { 105 highestStatus = 5; 106 } 107 }; 108 } 109 } 110 } 111 112 index = Math.min(highestStatus, numStyles); 113 return { 114 text: count, 115 index: index, 116 title: title 117 }; 118};
119 120 121 122function createAndOpenActiveClusterInfoWindow(arg, activeMarker, useInfoBox) { 123 124 var content = document.createElement('div'); 125 var toAdd = content; 126 127 if (useInfoBox) { 128 var arrow = document.createElement('div'); 129 arrow.setAttribute("class", "arrow"); 130 131 var arrowA = document.createElement('div'); 132 arrowA.setAttribute("class", "arrowa"); 133 arrow.appendChild(arrowA); 134 135 var arrowB = document.createElement('div'); 136 arrowB.setAttribute("class", "arrowb"); 137 arrow.appendChild(arrowB); 138 139 content.appendChild(arrow); 140 content.setAttribute("class", "clusterDetails infoBoxContent"); 141 142 } else { 143 content.setAttribute("class", "clusterDetails"); 144 } 145 146 147 148 // create the head 149 var contentHead = document.createElement('div'); 150 contentHead.setAttribute("class", "header"); 151 contentHead.appendChild(document.createTextNode(arg.getSize())); 152 content.appendChild(contentHead); 153 154 // create the contentDetail 155 var contentDetail = document.createElement('div'); 156 contentDetail.setAttribute("class", "content"); 157 content.appendChild(contentDetail); 158 var markers = arg.getMarkers(); 159 if (markers) { 160 markers.sort(function (a, b) { 161 var nameA = a.getTitle(); 162 if (nameA) { 163 nameA = nameA.toLowerCase(); 164 } 165 var nameB = b.getTitle(); 166 if (nameB) { 167 nameB = nameB.toLowerCase(); 168 } 169 170 if (nameA < nameB) //sort string ascending 171 return -1; 172 if (nameA > nameB) 173 return 1; 174 return 0; 175 }); 176 177 for (var i = 0; i < markers.length; i++) { 178 var marker = markers[i]; 179 180 var title = marker.getTitle(); 181 var status = "None"; 182 var active = ""; 183 184 var isActive = false; 185 if (marker == activeMarker) { 186 active = " markeractive"; 187 isActive = true; 188 } 189 190 if (i < 1000 || isActive) { 191 192 var trackerMarker = marker.get('trk'); 193 var key = null; 194 if (trackerMarker) { 195 if (trackerMarker.CK) { 196 status = trackerMarker.CK; 197 } 198 if (trackerMarker.K) { 199 key = trackerMarker.K; 200 } 201 } 202 var statusClass = 'markerstatus' + status; 203 var markerDetail = document.createElement('div'); 204 markerDetail.setAttribute("class", "marker " + statusClass + active); 205 if (key) { 206 markerDetail.setAttribute("onclick", "showMarkerInCluster(this,'" + key + "')"); 207 } 208 209 var markerAnchor = document.createElement('a'); 210 markerDetail.appendChild(markerAnchor); 211 markerAnchor.appendChild(document.createTextNode(title)); 212 213 contentDetail.appendChild(markerDetail); 214 } 215 } 216 } 217 218 // create the head 219 var contentFoot = document.createElement('div'); 220 contentFoot.setAttribute("class", "f"); 221 content.appendChild(contentFoot); 222 223 var infowindow; 224 if (useInfoBox) { 225 var myOptions = { 226 content: toAdd 227 , boxClass: "clusterWindow" 228 , disableAutoPan: true 229 , maxWidth: 0 230 , pixelOffset: new google.maps.Size(-140, 20) 231 , zIndex: null 232 , boxStyle: { 233 opacity: 0.95 234 , width: "330px" 235 } 236 , closeBoxMargin: "8px 8px 8px 8px" 237 , closeBoxURL: "/img/gm/ib/close.gif" 238 , infoBoxClearance: new google.maps.Size(1, 1) 239 , isHidden: false 240 , pane: "floatPane" 241 , enableEventPropagation: false 242 }; 243 infowindow = new InfoBox(myOptions); 244 infowindow.setPosition(arg.getCenter()); 245 infowindow.open(arg.getMap()); 246 247 } else { 248 infowindow = new google.maps.InfoWindow({ 249 content: toAdd, 250 position: arg.getCenter(), 251 disableAutoPan: true, 252 map: arg.getMap() 253 }); 254 255 infowindow.open(arg.getMap()); 256 } 257 258 return infowindow; 259} 260 261function showMarkerInCluster(link, argKey) { 262 if (argKey) { 263 264 if (!isdefined("GMap")) { 265 return; 266 } 267 268 var markerModel = GMap.findMarkerByKey(argKey); 269 if (markerModel) { 270 if (!markerModel.getVisible()) { 271 return; 272 } 273 274 var clusterManager = GMap.get_markerClusterer(); 275 if (!markerModel.getMap()) { 276 277 var notFound = true; 278 var activeGoogleMarker = null; 279 if (clusterManager) {
280 var clusters = clusterManager.getClusters(); 281 282 for (var i = 0, l = clusters.length; i < l && notFound; i++) { 283 for (var j = 0, le = clusters[i].markers_.length; j < le && notFound; j++) { 284 var markerInCluster = clusters[i].markers_[j]; 285 if (markerInCluster) { 286 var innerMarker = markerInCluster.get('trk'); 287 if (markerModel == innerMarker) { 288 notFound = false; 289 var activeCluster = clusters[i]; 290 activeGoogleMarker = markerInCluster; 291 clusterManager.removeMarker(markerInCluster, true); 292 markerInCluster.setMap(GMap.get_map()); 293 } 294 } 295 } 296 } 297 } 298 299 if (!notFound) { 300 link.className += ' markerPinOut'; 301 } 302 303 } else { 304 var innerMarkerShown = markerModel.get_marker(); 305 if (innerMarkerShown) { 306 clusterManager.addMarker(innerMarkerShown, true); 307 innerMarkerShown.setMap(null); 308 309 link.className = link.className.replace(' markerPinOut', ''); 310 } 311 } 312 } 313 314 } 315}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.