var BingMaps=Class.create(AjaxObject,{initialize:function(A,B,C){this.domContainer=$(A);this.url=B;this.originalCenter=false;this.remove_all_events=C},init:function(){this.map=new VEMap(this.domContainer.id);this.map.HideDashboard();this.map.ShowMessageBox=false;this.map.LoadMap(new VELatLong(0,0),2,"h",false);this.map.previousCenter=new Array();this.map.previousZoomLevel=new Array();if(!this.remove_all_events){this.map.AttachEvent("onclick",this.MouseHandler.bind(this));this.map.AttachEvent("onmousedown",this.drawHandlerStart.bind(this));this.map.AttachEvent("onmouseup",this.drawHandlerFinish.bind(this));this.map.AttachEvent("onchangeview",this.historyHandler.bind(this));this.map.AttachEvent("onmousemove",this.mouseMoveHandler.bind(this))}this.map.containerName=this.domContainer.id;this.map.originalCenter=this.map.GetCenter();this.map.originalZoomLevel=this.map.GetZoomLevel();if(window.BingMapsSlider){BingMapsSlider.setValue(this.map.GetZoomLevel())}if(this.url){this.loadXML()}},showPopulationDensityLayer:function(){if(!$("pd_layer_cb")){return }var A=$("pd_layer_cb").checked;$("pd_layer_cb").disable();if(A){this.map.ShowTileLayer("PopulationDensity")}else{this.map.HideTileLayer("PopulationDensity")}$("pd_layer_cb").enable()},loadPopulationDensityLayer:function(){if(this.map.GetTileLayerByID("PopulationDensity")){this.map.DeleteTileLayer("PopulationDensity")}var B=this.map.GetMapView();var D=B.TopLeftLatLong;var E=B.BottomRightLatLong;var C="/iweb/getpdtiles.jsp?%4";var A=new VETileSourceSpecification("PopulationDensity",C);A.Bounds=[new VELatLongRectangle(D,E)];A.MinZoomLevel=1;A.MaxZoomLevel=23;A.Opacity=0.5;A.ZIndex=100;this.map.AddTileLayer(A,false)},loadXML:function(){this.map.Clear();this.l=new VEShapeLayer();var A=new VEShapeSourceSpecification(VEDataType.GeoRSS,this.url,this.l);this.map.ImportShapeLayerData(A,this.onFeedLoad.bind(this));this.loadPopulationDensityLayer()},onFeedLoad:function(F){this.map.ClearInfoBoxStyles();var A=F.GetShapeCount();var B;for(var D=0;D<A;++D){B=F.GetShapeByIndex(D);B.SetCustomIcon(B.IconId);var E=/type="([^"]*)/;var C=E.exec(B.IconId);var G=false;if(C&&C[1].length>0){switch(C[1]){case"1":var G=new VEColor(255,252,225,1);break;case"2":var G=new VEColor(254,250,207,1);break;case"3":var G=new VEColor(255,221,32,1);break;case"4":var G=new VEColor(255,192,0,1);break;case"5":var G=new VEColor(255,144,12,1);break;case"6":var G=new VEColor(255,102,0,1);break;case"7":var G=new VEColor(255,54,0,1);break}}if(G){B.SetLineColor(G)}}if(A==1){this.map.previousCenter.pop();this.map.previousZoomLevel.pop();this.map.SetZoomLevel(2)}this.map.originalCenter=this.map.GetCenter();this.map.originalZoomLevel=this.map.GetZoomLevel()},drawHandlerStart:function(A){if(this.map.mode=="draw"){this.map.mode="drawing";this.map.drawStartX=A.mapX;this.map.drawStartY=A.mapY}},drawHandlerFinish:function(C){if(this.map.mode=="zoom"){this.map.mode="";$("map_zoom").removeClassName("nb_zoom_active");$(this.map.containerName).childNodes[0].style.cursor="auto"}if(this.map.mode=="drawing"){var D=drawCircleHandler(C,this.map);this.map.vemapcontrol.EnableGeoCommunity(false);document.getElementById(this.map.containerName).style.cursor="";this.map.mode=false;var B=new VEPixel(this.map.drawStartX,this.map.drawStartY);var A=this.map.PixelToLatLong(B);if(($("alert_lat"))&&$("alert_lon")&&$("alert_radius")){$("alert_lat").value=A.Latitude;$("alert_lon").value=A.Longitude;$("alert_radius").value=D}if(($("user_notification_radius"))&&$("user_notification_lat_cr")&&$("user_notification_lon_cr")){$("user_notification_lat_cr").value=A.Latitude;$("user_notification_lon_cr").value=A.Longitude;$("user_notification_radius").value=D}}},mouseMoveHandler:function(A){if(this.map.mode=="drawing"){drawCircleHandler(A,this.map)}},MouseHandler:function(C){if((C.eventName=="onclick")&&(C.leftMouseButton)){var B=/source_url="([^"]*)/;if(this.map.GetShapeByID(C.elementID)){var A=B.exec(this.map.GetShapeByID(C.elementID).IconId);if(A&&A[1].length>0){location.href=A[1]}}}},historyHandler:function(A){this.map.previousCenter.push(this.map.GetCenter());this.map.previousZoomLevel.push(this.map.GetZoomLevel());if(window.BingMapsSlider){if(BingMapsSlider.value!=this.map.GetZoomLevel()){BingMapsSlider.setValue(this.map.GetZoomLevel())}}},findLocation:function(){try{this.map.Find(null,document.getElementById("map_search_where").value,null,null,null,null,null,null,null,null,function(){})}catch(A){alert(A.message)}},resetFindLocation:function(){if((window.AList)&&(document.getElementById("mode_home"))){if(Prototype.Browser.IE){$("map_search_where").value="                                   "}else{$("map_search_where").value=""}AList.setParam("age","1");AList.setParam("cc","");AList.resetPage();AList.reload()}},goFromForm:function(){if($("alert_lat")&&$("alert_lon")&&$("alert_radius")){lat=$("alert_lat").value;lon=$("alert_lon").value;radius=$("alert_radius").value}if($("user_notification_lat_cr")&&$("user_notification_lon_cr")&&$("user_notification_radius")){lat=$("user_notification_lat_cr").value;lon=$("user_notification_lon_cr").value;radius=$("user_notification_radius").value}if((window.lat)&&(window.lon)){if(!window.radius){BingMapsObj.map.SetCenterAndZoom(new VELatLong(lat,lon),7)}}},reDrawFromForm:function(){this.goFromForm();if(($("alert_lat"))&&$("alert_lon")&&$("alert_radius")){if(($("alert_lat").value)&&($("alert_lon").value)&&($("alert_radius").value)){radius=$("alert_radius").value;if($("alert_radius_type")&&($("alert_radius_type").value=="miles")){radius=radius*1.609344}drawCircle(new VELatLong($("alert_lat").value,$("alert_lon").value),radius,this.map)}}if(($("user_notification_lat_cr"))&&$("user_notification_lon_cr")&&$("user_notification_radius")){if(($("user_notification_lat_cr").value)&&($("user_notification_lon_cr").value)&&($("user_notification_radius").value)){if($("user_whole_world_0").checked){radius=$("user_notification_radius").value;if($("radius_type")&&($("radius_type").value=="miles")){radius=radius*1.609344}drawCircle(new VELatLong($("user_notification_lat_cr").value,$("user_notification_lon_cr").value),radius,this.map)}else{this.map.DeleteAllShapes()}}}}});var GeoCodeCalc={};GeoCodeCalc.EarthRadiusInMiles=3956;GeoCodeCalc.EarthRadiusInKilometers=6367;GeoCodeCalc.ToRadian=function(A){return A*(Math.PI/180)};GeoCodeCalc.DiffRadian=function(B,A){return GeoCodeCalc.ToRadian(A)-GeoCodeCalc.ToRadian(B)};GeoCodeCalc.CalcDistance=function(E,D,C,B,A){return A*2*Math.asin(Math.min(1,Math.sqrt((Math.pow(Math.sin((GeoCodeCalc.DiffRadian(E,C))/2),2)+Math.cos(GeoCodeCalc.ToRadian(E))*Math.cos(GeoCodeCalc.ToRadian(C))*Math.pow(Math.sin((GeoCodeCalc.DiffRadian(D,B))/2),2)))))};if(GeoCodeCalc==undefined){var GeoCodeCalc={}}GeoCodeCalc.ToDegrees=function(A){return A*180/Math.PI};function CreateCircle(E,F,G){var K=parseFloat(G);var I=GeoCodeCalc.ToRadian(E.Latitude);var A=GeoCodeCalc.ToRadian(E.Longitude);var H=parseFloat(F)/K;var D=new Array();for(x=0;x<=360;x++){var J=new VELatLong(0,0);brng=GeoCodeCalc.ToRadian(x);var B=Math.asin(Math.sin(I)*Math.cos(H)+Math.cos(I)*Math.sin(H)*Math.cos(brng));var C=A+Math.atan2(Math.sin(brng)*Math.sin(H)*Math.cos(I),Math.cos(H)-Math.sin(I)*Math.sin(B));D.push(new VELatLong(GeoCodeCalc.ToDegrees(B),GeoCodeCalc.ToDegrees(C)))}return new VEShape(VEShapeType.Polyline,D)}function drawCircleHandler(E,D){var B=new VEPixel(D.drawStartX,D.drawStartY);var G=new VEPixel(E.mapX,E.mapY);var A=D.PixelToLatLong(B);var C=D.PixelToLatLong(G);var F=GeoCodeCalc.CalcDistance(A.Latitude,A.Longitude,C.Latitude,C.Longitude,GeoCodeCalc.EarthRadiusInKilometers);drawCircle(A,F,D);return F}function drawCircle(A,F,E,B){if(E.current_shape){E.DeleteShape(E.current_shape)}for(var C=0;C<=0;++C){if(C>0){radius=F-(F/(C*10))*9}else{radius=F}var D=CreateCircle(A,radius,GeoCodeCalc.EarthRadiusInKilometers);D.HideIcon();D.SetLineColor(new VEColor(255,0,0,1));E.AddShape(D);E.current_shape=D;if(B){}else{window.setTimeout(function(){drawCircleZoom(E,D)},1000)}}}function drawCircleZoom(C,B){if(B){points=B.GetPoints();if((points instanceof Array)&&(points.length!=null)){try{window.onerror=handleError;C.SetMapView(B.GetPoints())}catch(A){return false}}}}function handleError(){return true};
