﻿var map; var gmarkers = []; var updateMarker; var balloons = []; var iwControl; var iwSpot; function LatLng(lat, lng) { this["Lat"] = lat; this["Lng"] = lng; }; var myLL = new LatLng(null, null); function pageInit() { $("#search")["keypress"](function (e) { if (e["keyCode"] == 13) { codeAddress(); return false; }; }); $("#search")["watermark"]("Enter town, city or postcode.."); $("#textSearchResults")["dialog"]({ autoOpen: false }); $("#cbWindow")["dialog"]({ autoOpen: false, height: 550, width: 1010 }); mapInit(); loadRecentData(); getLocationFromBrowser(); }; function searchNearby() { findParks(myLL.Lat, myLL.Lng, 0); }; function mapInit() { showLoadingCell(true, "Loading Map..."); var myLatlng = new google["maps"].LatLng(23.079731762449878, 9.84375); var myOptions = { zoom: 2, center: myLatlng, mapTypeId: google["maps"]["MapTypeId"]["HYBRID"] }; map = new google["maps"].Map(document["getElementById"]("theMap"), myOptions); iwControl = new google["maps"].InfoWindow({ size: new google["maps"].Size(50, 50), position: myLatlng }); google["maps"]["event"]["addListener"](map, "click", function (ll) { var latlng = ll["latLng"]; if (latlng) { var findHTML = "\x3Ca href=\x22#\x22 class=\x22blackBoldText\x22 onclick=\x22findParks(" + latlng["lat"]() + "," + latlng["lng"]() + ", 0)\x22\x3EFind Nearby Spots\x3C/a\x3E"; var addHTML = "\x3Ca href=\x22#\x22 class=\x22blackBoldText\x22 onclick=\x22addPark(" + latlng["lat"]() + "," + latlng["lng"]() + ")\x22\x3EAdd Skatepark Here\x3C/a\x3E"; iwControl["setContent"](findHTML + "\x3Cbr/\x3EOR\x3Cbr/\x3E" + addHTML); iwControl["setPosition"](latlng); iwControl["open"](map); map["setCenter"](latlng); updateMapInfoBar("Click \x27Find Nearby Spots\x27 in the balloon"); }; }); showLoadingCell(false, ""); }; function showLoadingCell(show, text) { if (show) { var mapPosition = $("#theMap")["position"](); var mapLoading = $("#mapLoading"); mapLoading["css"]("top", mapPosition["top"] + 150)["css"]("left", mapPosition["left"] + 250)["html"]("\x26nbsp;\x26nbsp;\x26nbsp;" + text)["show"]("fast"); } else { $("#mapLoading")["text"]("")["hide"]("fast"); }; }; function loadRecentData() { $["ajax"]({ type: "POST", url: "service/spots.asmx/RecentChanges", data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", success: loadRecentUpdates, failure: function (msg) { } }); }; function loadRecentUpdates(response) { var jsonData = response["d"]; if (jsonData == null || jsonData["length"] == 0) { return; }; var jsonData1; var jsonData2; if (jsonData["length"] > 23) { jsonData2 = jsonData["slice"](24, jsonData["length"]); jsonData1 = jsonData["slice"](12, 23); jsonData = jsonData["slice"](0, 11); } else { if (jsonData["length"] > 11) { jsonData1 = jsonData["slice"](12, jsonData["length"]); jsonData = jsonData["slice"](0, 11); }; }; var recentUpdatesList = $("#recentUpdatesList1"); recentUpdatesList["empty"](); var recentUpdatesList2 = $("#recentUpdatesList2"); recentUpdatesList2["empty"](); var recentUpdatesList3 = $("#recentUpdatesList3"); recentUpdatesList3["empty"](); $(jsonData)["each"](function (i, item) { var lnk = $("\x3Ca\x3E")["click"](function () { var ll = new google["maps"].LatLng(parseFloat(item.Latitude), parseFloat(item.Longitude)); var m = createMarker(ll, item.LocationShortName, item.Town, "", item.LocationID, item.FriendlyURL); if (updateMarker != null) { updateMarker["setMap"](null); updateMarker = null; }; updateMarker = m; google["maps"]["event"]["trigger"](m, "click"); })["addClass"]("yellowLink")["text"](item["LocationName"]["replace"](/Skatepark/, ""))["attr"]("href", "#"); var li = $("\x3Cli\x3E"); lnk["appendTo"](li); li["appendTo"](recentUpdatesList); }); if (jsonData1 == null) { return; }; $(jsonData1)["each"](function (i, item) { var lnk = $("\x3Ca\x3E")["click"](function () { var ll = new google["maps"].LatLng(parseFloat(item.Latitude), parseFloat(item.Longitude)); var m = createMarker(ll, item.LocationShortName, item.Town, "", item.LocationID, item.FriendlyURL); if (updateMarker != null) { updateMarker["setMap"](null); updateMarker = null; }; updateMarker = m; google["maps"]["event"]["trigger"](m, "click"); })["addClass"]("yellowLink")["text"](item["LocationName"]["replace"](/Skatepark/, ""))["attr"]("href", "#"); var li = $("\x3Cli\x3E"); lnk["appendTo"](li); li["appendTo"](recentUpdatesList2); }); if (jsonData2 == null) { return; }; $(jsonData2)["each"](function (i, item) { var lnk = $("\x3Ca\x3E")["click"](function () { var ll = new google["maps"].LatLng(parseFloat(item.Latitude), parseFloat(item.Longitude)); var m = createMarker(ll, item.LocationShortName, item.Town, "", item.LocationID, item.FriendlyURL); if (updateMarker != null) { updateMarker["setMap"](null); updateMarker = null; }; updateMarker = m; google["maps"]["event"]["trigger"](m, "click"); })["addClass"]("yellowLink")["text"](item["LocationName"]["replace"](/Skatepark/, ""))["attr"]("href", "#"); var li = $("\x3Cli\x3E"); lnk["appendTo"](li); li["appendTo"](recentUpdatesList3); }); }; function sideBarClick(i) { google["maps"]["event"]["trigger"](gmarkers[i], "click"); map["setCenter"](gmarkers[i]["getPosition"]()); }; function updateMarkerClick(i) { google["maps"]["event"]["trigger"](updateMarkers[i], "click"); map["setCenter"](updateMarkers[i]["getPosition"]()); }; function addPark(lat, lng) { openWindow("spotAdd.aspx?lat=" + lat + "\x26lng=" + lng); }; function clearMarkers() { for (var i = gmarkers["length"] - 1; i > -1; i--) { var markr = gmarkers["pop"](); markr["setMap"](null); markr = null; }; if (updateMarker != null) { updateMarker["setMap"](null); updateMarker = null; }; gmarkers = []; }; function clearBalloons() { for (var i = 0; i < balloons["length"]; i++) { balloons[i]["close"](); }; }; function findParks(lat, lng, dist) { showLoadingCell(true, "Finding Parks..."); iwControl["close"](); clearMarkers(); clearBalloons(); if (dist == undefined) { dist = 0; }; var parameters = "{\x27lat\x27:\x27" + lat + "\x27,\x27lng\x27:\x27" + lng + "\x27,\x27searchDistance\x27:\x27" + dist + "\x27}"; $["ajax"]({ type: "POST", url: "service/spots.asmx/GetSpots", data: parameters, contentType: "application/json; charset=utf-8", dataType: "json", success: function (response) { clearMarkers(); clearBalloons(); var jsonData = response["d"]; if (jsonData["length"] == 0) { updateMapInfoBar("No parks were found"); showLoadingCell(true, "No Parks were found :-( If you know any, add them :-)"); setTimeout(function () { showLoadingCell(false, ""); }, 3000); return; }; var bounds = new google["maps"].LatLngBounds(); var resultsList = $("#resultsList"); resultsList["empty"](); $(jsonData)["each"](function (i, item) { var point = new google["maps"].Point(parseFloat(item.Latitude), parseFloat(item.Longitude)); var ll = new google["maps"].LatLng(parseFloat(item.Latitude), parseFloat(item.Longitude)); bounds["extend"](ll); var address = item["Town"]; if (item["County"]["length"] > 0) { address += ", " + item["County"]; }; address += "\x3Cbr/\x3E (" + item["DistanceFrom"] + " Miles away)"; var marker = createMarker(ll, item.LocationName, address, "", item.LocationID, item.Url); gmarkers["push"](marker); resultsList["append"]("\x3Cli\x3E\x3Ca style=\x22font-size:10px;\x22 class=\x22yellowLink\x22 href=\x22javascript:sideBarClick(" + (i) + ")\x22\x3E" + item["LocationName"]["replace"](/Skatepark/, "") + "\x3C/a\x3E\x3C/li\x3E"); }); map["fitBounds"](bounds); map["setCenter"](bounds["getCenter"]()); updateMapInfoBar(jsonData["length"] + " parks found. Click the markers to view park info"); showLoadingCell(false, ""); }, failure: function (msg) { showLoadingCell(false, ""); } }); }; function createMarker(latlng, name, address, picUrl, locationID, url) { var marker = new google["maps"].Marker({ position: latlng, map: map, title: name }); var html = ""; url = "\x27" + url.toString()["substring"](1, url.toString()["length"]) + "\x27"; if (picUrl["length"] > 0) { html = "\x3Cimg src=\x22" + picUrl + "\x22 /\x3E"; }; html += "\x3Cdiv\x3E\x3Ch4\x3E\x3Ca class=\x22blackBoldText\x22 href=\x22#\x22 onclick=\x22openWindow(" + url + ")\x22\x3E" + name + "\x26nbsp;\x3Cimg src=\x22assets/icons/magnifier.png\x22 alt=\x22View Info\x22 /\x3E\x3C/a\x3E\x3C/h4\x3E\x3Cspan\x3E" + address + "\x3C/span\x3E\x3Cbr/\x3E\x3Ca href=\x22#\x22 class=\x22blackBoldText\x22 onclick=\x22zoomMore()\x22\x3EZoom In\x3C/a\x3E\x26nbsp;\x26nbsp;\x26nbsp;\x3Ca href=\x22#\x22 class=\x22blackBoldText\x22 onclick=\x22zoomLess()\x22\x3EZoom Out\x3C/a\x3E\x3C/div\x3E"; if (iwSpot == null) { iwSpot = new google["maps"].InfoWindow({ content: html, size: new google["maps"].Size(70, 70), position: latlng }); }; balloons["push"](iwSpot); google["maps"]["event"]["addListener"](marker, "click", function () { iwSpot["setContent"](html); iwSpot["setPosition"](latlng); iwSpot["open"](map, marker); }); return marker; }; function zoomMore() { var ll = iwSpot["getPosition"](); map["setCenter"](ll); var zoom = map["getZoom"](); if (zoom >= 18) { return; }; if (zoom > 13) { map["setZoom"](18); return; } else { zoom = zoom + 2; map["setZoom"](zoom); return; }; }; function zoomLess() { var ll = iwSpot["getPosition"](); var zoom = map["getZoom"](); if (zoom <= 1) { return; }; if (zoom < 5) { map["setZoom"](1); return; } else { zoom = zoom - 2; map["setZoom"](zoom); return; }; }; function searchResultSelected(result) { var place = result["geometry"]["location"]; var findHTML = "\x3Cspan class=\x22blackText\x22\x3E" + result["formatted_address"] + "\x3C/span\x3E\x3Cbr/\x3E\x3Cbr/\x3E\x3Ca href=\x22#\x22 class=\x22blackBoldText\x22 onclick=\x22findParks(" + place["lat"]() + "," + place["lng"]() + ", 0)\x22\x3EFind Nearby Spots\x3C/a\x3E"; var zoomHTML = "\x3Cbr/\x3E\x3Cbr/\x3E\x3Ca href=\x22#\x22 class=\x22blackBoldText\x22 onclick=\x22zoomMore()\x22\x3EZoom In\x3C/a\x3E\x26nbsp;\x26nbsp;\x26nbsp;\x3Ca class=\x22blackBoldText\x22 href=\x22#\x22 onclick=\x22zoomLess()\x22\x3EZoom Out\x3C/a\x3E"; map["setCenter"](place); clearBalloons(); clearMarkers(); var marker = new google["maps"].Marker({ map: map, position: place }); iwSpot = new google["maps"].InfoWindow({ content: findHTML + zoomHTML, size: new google["maps"].Size(50, 50), position: place }); balloons["push"](iwSpot); iwSpot["open"](map, marker); gmarkers["push"](marker); }; function updateMapInfoBar(html) { $("#mapInfoBar")["html"](html); }; function codeAddress() { var add = document["getElementById"]("search")["value"]; if (add == undefined || add["length"] == "") { return; }; var geo = new google["maps"].Geocoder(); if (geo == null || geo == undefined) { alert("unable to search map right now"); return; }; var query = { "address": add }; geo["geocode"](query, textSearchComplete); }; function textSearchComplete(results, status) { if (status == google["maps"]["GeocoderStatus"]["OK"]) { if (results["length"] == 0) { alert("Nothing Found"); } else { if (results["length"] == 1) { searchResultSelected(results[0]); } else { var ul = $("\x3Cul\x3E"); $["each"](results, function (i, item) { var link = $("\x3Ca\x3E")["text"](item["formatted_address"])["attr"]("href", "#")["addClass"]("blackBoldText")["click"](function () { searchResultSelected(item); return false; }); var li = $("\x3Cli\x3E"); link["appendTo"](li); li["appendTo"](ul); }); ul["appendTo"]("#textSearchResults"); $("#textSearchResults")["dialog"]("open"); }; }; } else { alert("Your search was not successful, please try again."); if (this["console"] && typeof console["log"] != "undefined") { console["log"]("geocode error:" + status); }; }; }; function openSingle(lat, lng, name, town, locationID) { var point = new google["maps"].LatLng(parseFloat(lat), parseFloat(lng)); var marker = createMarker(point, name, town, "", locationID); map["setCenter"](point); google["maps"]["event"]["trigger"](marker, "click"); }; function openWindow(url) { var loadingText = $("#cbWindowLoading"); $("#cbWindow")["dialog"]("open"); loadingText["show"](); var f = $("#cbFrame"); f["attr"]("src", url); $(f)["load"](function () { f["css"]("height", "100%"); loadingText["hide"](); }); }; function getLocationFromBrowser() { if (navigator["geolocation"] != null) { navigator["geolocation"]["getCurrentPosition"](gotPosition, null); }; }; function gotPosition(position) { myLL = new LatLng(position["coords"]["latitude"], position["coords"]["longitude"]); $("#searchNearby")["show"]("slow"); }; function sourceClientLocation() { if (navigator && navigator["geolocation"]) { function getLocation(position) { myLL = new LatLng(position["coords"]["latitude"], position["coords"]["longitude"]); }; navigator["geolocation"]["getCurrentPosition"](getLocation); } else { if ((typeof google == "object") && google["loader"] && google["loader"]["ClientLocation"]) { myLL = new LatLng(google["loader"]["ClientLocation"]["latitude"], google["loader"]["ClientLocation"]["longitude"]); }; }; if (myLL == null) { return false; } else { return true; }; };