//***************************************************************************
//  THIS JAVASCRIPT FILE HAS BEEN CREATED BY SOUTHWARK COUNCIL 
//  THIS WILL ADD FUNCTIONALITY TO CONTROL THE START LOCATION OF 
//  STRATUS CONNECT VIA A QUERY STRING 
//  FUNCTIONS IN THIS SCRIPT REQUIRE STRATUS CONNECT 2.2
//  PLEASE NOTE: THE "stratus.MapControl" AND MAP "DIV" MUST BE CALLED "mymap"
//  LAST UPDATED SEPTEMBER 2011
//***************************************************************************
//  THIS FILE HAS BEEN COMPRESSED USING GOOGLE “CLOSURE-COMPILER” 
//  (HTTP://CLOSURE-COMPILER.APPSPOT.COM)
//***************************************************************************

var userX,userY,userZ,mapSrs,maxZoomLevels,searchTable,searchField,searchQuery,searchNum,fmnTable,fmnField,fmnNum,fmnDis,markerx,markery,userIcon,MarkerCounter,hideMarker,markertext,hideCallout,userSearch,pagestyle,banner,hashurl,mapexists=this.myMap,checkmyMapcount=0,searchType,fmnFrom,defaultmarker="green-blackcircle"; function getQueryVariable(a){for(var b="NO",c=window.location.search.substring(1).split("&"),d=0;d<c.length;d++){var e=c[d].split("=");e[0]==a&&(b=decodeURIComponent(e[1]))}if(b!=="NO")return decodeURIComponent(b)}var base_url="";function gethashVariable(a){for(var b=window.location.hash,b=b.replace("#",""),b=b.split("&"),c=0;c<b.length;c++){var d=b[c].split("=");if(d[0]==a)return decodeURIComponent(d[1])}}userX=getQueryVariable("x");userY=getQueryVariable("y");userZ=getQueryVariable("z"); searchTable=getQueryVariable("st");searchField=getQueryVariable("sf");searchQuery=getQueryVariable("sq");searchNum=getQueryVariable("sn");fmnTable=getQueryVariable("ft");fmnField=getQueryVariable("ff");fmnNum=getQueryVariable("fn");fmnDis=getQueryVariable("fd");markerx=getQueryVariable("markerx");markery=getQueryVariable("markery");userIcon=getQueryVariable("marker");MarkerCounter=getQueryVariable("markercounter");hideMarker=getQueryVariable("hidemarker");markertext=getQueryVariable("markertext"); hideCallout=getQueryVariable("hidecallout");userSearch=getQueryVariable("search");pagestyle=getQueryVariable("style");banner=getQueryVariable("banner");hashurl=getQueryVariable("monurl"); dojo.addOnLoad(function(){if(banner&&banner!==null&&dojo.byId("bannerIFrame"))dojo.byId("bannerIFrame").src="/stratus-theme/html/banner/"+banner+".html";pagestyle&&pagestyle!==null&&(pagestyle="/stratus-theme/css/"+pagestyle+".css",loadjscssfile(pagestyle,"css"));checkmyMap();myMap.getOLMap().addControl(new OpenLayers.Control.MousePosition);window.embeddedmap===void 0&&(dojo.connect(searchResultsControl,"onMouseOverResult","highlightMarker"),dojo.connect(searchResultsControl,"onMouseAwayFromResult", "unHighlightMarker"))});function checkmyMap(){mapexists!=null?(mapexists="YES",mapSrs=myMap.configuration.getSrs(),maxZoomLevels=this.myMap.getConfiguration().zoomLevels.getLevelCount(),triggerMap(),hashurl!==void 0&&(hashurl=parseInt(hashurl),hashurl==void 0||hashurl==null||isNaN(hashurl)||hashurl<5?hashurl=500:hashurl*=100,monurl())):(checkmyMapdelay(),mapexists=this.myMap,checkmyMapcount+=1)} function triggerMap(){if((userX==0||parseFloat(userX))&&(userY==0||parseFloat(userY)))if(movemyMap(),fmnTable!==void 0)startmyFMN();else{if(userIcon!==void 0){userIcon=="YES"&&(userIcon=defaultmarker);if(markerx!==void 0&&markery!==void 0){var a="x-"+markerx+", y-"+markery;markertext!==void 0&&(a=markertext);var b={x:markerx,y:markery,srs:mapSrs,title:"Southwark Maps",id:a,info:a,icon:userIcon}}else a="x-"+userX+", y-"+userY,markertext!==void 0&&(a=markertext),b={x:userX,y:userY,srs:mapSrs,title:"Southwark Maps", id:a,info:a,icon:userIcon};a=[];b=createMarker(b);a.push(b);myMap.addMarkers(a)}}else userSearch!==void 0?startaddressSearch():searchTable!==void 0&&searchField!==void 0&&searchQuery!==void 0?startmySearch():parseFloat(userZ)&&movemyMap();hideMarker!==void 0&&(isNaN(hideMarker)||window.setTimeout("clearallMarkers()",hideMarker*1E3));hideCallout!==void 0&&window.setTimeout("clearCallout()",hideCallout*1E3)}function checkmyMapdelay(){checkmyMapcount<5&&setTimeout("checkmyMap()",1E3)} function monurl(){var a;a=window.location.hash;a!=base_url&&(base_url=a,markertext=userSearch=hideCallout=hideMarker=MarkerCounter=userIcon=markery=markerx=fmnDis=fmnNum=fmnField=fmnTable=searchNum=searchQuery=searchField=searchTable=userZ=userY=userX=void 0,gethashVariable("clearmarkers")=="YES"&&clearMarkers(),gethashVariable("x")&&gethashVariable("y")&&(userX=gethashVariable("x"),userY=gethashVariable("y"),userZ=0,gethashVariable("z")&&(userZ=gethashVariable("z"))),gethashVariable("sq")&&(gethashVariable("st")&& gethashVariable("sf")&&(searchTable=gethashVariable("st"),searchField=gethashVariable("sf")),searchQuery=gethashVariable("sq"),gethashVariable("sq")&&(searchNum=gethashVariable("sn"))),gethashVariable("ft")&&gethashVariable("ff")&&(fmnTable=gethashVariable("ft"),fmnField=gethashVariable("ff"),gethashVariable("fn")&&(fmnNum=gethashVariable("fn")),gethashVariable("fd")&&(fmnDis=gethashVariable("fd"))),gethashVariable("markerx")&&gethashVariable("markery")&&(markerx=gethashVariable("markerx"),markery= gethashVariable("markery")),gethashVariable("marker")&&(userIcon=gethashVariable("marker")),gethashVariable("markercounter")&&(MarkerCounter=gethashVariable("markercounter")),gethashVariable("hidemarker")&&(hideMarker=gethashVariable("hidemarker")),gethashVariable("hidecallout")&&(hideCallout=gethashVariable("hidecallout")),gethashVariable("search")&&(userSearch=gethashVariable("search")),gethashVariable("markertext")&&(markertext=gethashVariable("markertext")),triggerMap());setTimeout("monurl()", hashurl)}function clearallMarkers(){this.myMap.getSubControls().getCallout().hide();this.myMap.removeLocatorMarker();this.myMap.removeAllMarkers()}function clearMarkers(){this.myMap.removeAllMarkers()}function clearLocatorMarker(){myMap.getSubControls().getCallout().hide();myMap.removeLocatorMarker()}function clearCallout(){myMap.getSubControls().getCallout().hide()} function movemyMap(){if(mapexists=="YES"){if(userX==0||parseFloat(userX))(userY==0||parseFloat(userY))&&this.myMap.moveTo({x:userX,y:userY});userZ>0&&userZ<=maxZoomLevels&&this.myMap.setZoom(userZ)}} function startmySearch(){if(mapexists=="YES"&&searchTable!=null&&searchField!=null&&searchQuery!=null){var a="upper("+searchField+") like upper('%"+searchQuery+"%')",a=(new stratus.search.FeatureSearch).searchByExpression({tableName:searchTable,searchExpression:a,includeGeometry:!0});a.addSuccessCallback(handleQueryResults);a.addErrorCallback(handleQueryException)}} function startmyFMN(){if(mapexists=="YES"&&(clearMarkers(),fmnTable!==null&&fmnField!==null)){if(fmnNum==void 0||fmnNum==null||isNaN(fmnNum))fmnNum=10;if(fmnDis==void 0||fmnDis==null||isNaN(fmnDis))fmnDis=1E4;if(userX==void 0||userX==null||isNaN(userX))userX=myMap.getOLMap().getExtent().getCenterLonLat().lon;if(userY==void 0||userY==null||isNaN(userY))userY=myMap.getOLMap().getExtent().getCenterLonLat().lat;fmnFrom==void 0&&(fmnFrom="from: x-"+userX+", y-"+userY);var a=(new stratus.search.FeatureSearch).searchNearest({point:{x:userX, y:userY},srs:mapSrs,tableName:fmnTable,attributeFields:fmnField,includeGeometry:!0,maxResults:fmnNum,maxDistance:fmnDis,distanceUnit:stratus.util.DistanceUnits.METER});a.addSuccessCallback(processFMNResults);a.addErrorCallback(handleQueryException)}}function startaddressSearch(){mapexists=="YES"&&userSearch&&(new stratus.search.LocatorSearch(mapSrs,"")).search(userSearch).addSuccessCallback(displaymysearch)} function handleQueryResults(a){userIcon?userIcon=="YES"&&(userIcon=defaultmarker):userIcon=defaultmarker;var a=a.getResult(),b="NO",c=0,d,e,f,h,g,i;if(searchNum==void 0||searchNum==null||isNaN(searchNum))searchNum=1;for(var j in a[searchTable])if(c++,b=="NO"){var k=a[searchTable][j].properties[searchField],l="User query for: "+searchQuery+" ("+searchTable+"."+searchField+")";searchNum?parseFloat(searchNum)<=c&&(b=k):b=k;if(a[searchTable][j].geometry&&a[searchTable][j].geometry!==null){d=parseFloat(a[searchTable][j].geometry.x); e=parseFloat(a[searchTable][j].geometry.y);var m=[],k=createMarker({x:d,y:e,srs:mapSrs,title:k,id:k,info:l,icon:userIcon});m.push(k);myMap.addMarkers(m);c==1&&(h=f=d,i=g=e);d>f&&(f=d);d<h&&(h=d);e>g&&(g=e);e<i&&(i=e)}}userX=f-(f-h)/2;userY=g-(g-i)/2;b=document.getElementById("myMap");a=b.offsetHeight;f=parseInt(maxZoomLevels-(Math.log(256/b.offsetWidth*(f-h)/40)/Math.log(2)+1));g=parseInt(maxZoomLevels-(Math.log(256/a*(g-i)/40)/Math.log(2)+1));userZ=f<=g?f:g;movemyMap()} function processFMNResults(a){userIcon?userIcon=="YES"&&(userIcon=defaultmarker):userIcon=defaultmarker;var a=a.getResult(),b=0,c,d,e,f,h,g,i;for(i in a[fmnTable]){b++;c=a[fmnTable][i];var j=c.properties[fmnField],k=parseInt((c.properties.Distance+5)/10)*10+" metres "+fmnFrom;c=parseFloat(a[fmnTable][i].geometry.x);d=parseFloat(a[fmnTable][i].geometry.y);var l=[],j=createMarker({x:c,y:d,srs:mapSrs,title:j,id:j,info:k,icon:userIcon});l.push(j);myMap.addMarkers(l);b==1&&(f=e=c,g=h=d);c>e&&(e=c);c<f&& (f=c);d>h&&(h=d);d<g&&(g=d)}userX=e-(e-f)/2;userY=h-(h-g)/2;a=document.getElementById("myMap");i=a.offsetHeight;e=parseInt(maxZoomLevels-(Math.log(256/a.offsetWidth*(e-f)/40)/Math.log(2)+1));h=parseInt(maxZoomLevels-(Math.log(256/i*(h-g)/40)/Math.log(2)+1));userZ=e<=h?e:h;movemyMap()} function displaymysearch(a){var a=a.getResult(),b=[],c=[],d=0,e=0,f=0,h=0;a.length==0&&alert("No results found");for(var g=0;g<a.length;g++)f=a[g],b[g]=f.x,c[g]=f.y,f=d-b[g],f*=f,h=e-c[g],h*=h,d+=b[g],e+=c[g];f>2500||h>2500?(d=parseInt(b[0]),e=parseInt(c[0]),b=a[0].name.replace(/,/gi,"")):(d=parseInt(d/a.length),e=parseInt(e/a.length),b=userSearch);userX=d;userY=e;userZ==null&&(userZ=maxZoomLevels-3);a.length!==0&&(movemyMap(),f={x:userX,y:userY,srs:mapSrs,name:b,id:b},showMarker(f),fmnTable!==void 0&& (fmnFrom==void 0&&(fmnFrom="from: "+b),startmyFMN()))} function showMarker(a){if(window.markersOnly===void 0){currentLocation={x:a.x,y:a.y,srs:mapSrs};var b={point:new OpenLayers.Geometry.Point(a.x,a.y),srs:mapSrs,id:a.name,icon:new stratus.catalog.Icon("/connect/images/transparentPixel.png",0,0,45,47)},b=new stratus.Marker(b);myMap.addLocatorMarker(b);var c=dojo.hitch(this,"showCallout",a);dojo.connect(b,"onClick",c);showCallout(a)}else b={x:a.x,y:a.y,srs:mapSrs,title:a.name,id:a.id,info:"",icon:"../markerbackground/whitepin"},a=[],b=createMarker(b), a.push(b),myMap.addMarkers(a)}function showCallout(a,b){b&&dojo.stopEvent(b);var c=new OpenLayers.Geometry.Point(a.x,a.y),d=myMap.getSubControls().getCallout(),e=new stratus.callout.LocatorContent;e.setAddress(a);dojo.connect(e,"onDeleteLinkClicked",d,this.clearLocatorMarker);d.setContent(e);d.setLocationAndSrs(c,mapSrs);d.show();if(dojo.byId("openbookmark"))dojo.byId("openbookmark").style.display="none"} function createMarker(a){hideMarker!==void 0&&hideMarker=="prompt"&&(a.info+="<div style='text-align: right; width: 100%; float: left;'><a href='#' onclick='javascript:clearallMarkers()' title='clear all markers on this map'>Clear marker/s</a></div>");var b=new stratus.catalog.Icon("/stratus-theme/images/catalog/marker/"+a.icon+".png",0,0,54,24),c=new stratus.catalog.Icon("/stratus-theme/images/catalog/markershadow/pinshadow.png",-3,-34,37,65),b={point:new OpenLayers.Geometry.Point(a.x,a.y),srs:mapSrs, icon:b,id:a.id,title:a.title,description:a.info},b=new stratus.Marker(b);b.createShadowMarkerCatalogIcon(c);MarkerCounter!==void 0&&(c=new stratus.catalog.Icon("/stratus-theme/images/catalog/markershadow/"+MarkerCounter+".png",-3,-34,37,65),b.createShadowMarkerCatalogIcon(c));b.data={title:a.title,description:a.info};b.deleteLinkSwitch=!0;return b}function handleQueryException(){} function loadjscssfile(a,b){if(b=="js"){var c=document.createElement("script");c.setAttribute("type","text/javascript");c.setAttribute("src",a)}else b=="css"&&(c=document.createElement("link"),c.setAttribute("rel","stylesheet"),c.setAttribute("type","text/css"),c.setAttribute("href",a));typeof c!="undefined"&&document.getElementsByTagName("head")[0].appendChild(c)}function highlightMarker(a){(a=getMarkerId(a))&&markerManager.highlightMarker(a)} function unHighlightMarker(a){(a=getMarkerId(a))&&markerManager.unHighlightMarker(a)}function getMarkerId(a){return a.getId()}function highlightSRCRow(a){if(searchResultsControl.getResultById(a)!==null&&(a=searchResultsControl.getResultById(a),dojo.byId(a.id)&&dojo.byId("findNearestResults"))){var b=dojo.byId(a.id).parentNode.offsetTop,b=dojo.byId(a.id).offsetTop-b;dojo.byId("findNearestResults").scrollTop=b;a.setHighlightStyle("highlightedSearchResultsRow")}} function unHighlightSRCRow(a){searchResultsControl.getResultById(a)!==null&&searchResultsControl.getResultById(a).unHighlightStyle()};

//***************************************************************************
//  THE FILE IS PROVIDED "AS IS". IN NO EVENT SHALL SOUTHWARK COUNCIL 
//  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY RESULTING 
//  FORM THE USE OF THIS FILE
//***************************************************************************
