
var sec_CurrentVEShape=null;var sec_CurrentShapeType=null;var sec_CurrentEditMode=null;var sec_PriorVEShapePoints=null;var sec_PriorShapeType=null;var sec_PriorEditMode=null;var sec_PriorRadius=null;var sec_PriorCenterLatLong=null;var sec_newVertexAtMouse=false;var sec_lastVertexIsTemp=false;var sec_GrabbedVertexIndex=-1;var sec_ShapeDragStartPoint=null;var sec_CircleCenterLatLong=null;var sec_VEMouseDownMapX=-1;var sec_VEMouseDownMapY=-1;function sec_SetVEShapeEdit(shapeType,editMode){if(shapeType=='Polygon'&&editMode=='Draw'&&sec_CurrentVEShape==null){sec_newVertexAtMouse=true;}
sec_PriorVEShapePoints=(sec_CurrentVEShape==null?null:sec_CurrentVEShape.GetPoints());sec_PriorShapeType=sec_CurrentShapeType;sec_PriorEditMode=sec_CurrentEditMode;sec_PriorRadius=sec_CircleRadius;sec_PriorCenterLatLong=sec_CircleCenterLatLong;sec_CurrentShapeType=shapeType;sec_CurrentEditMode=editMode;ClientEditNotificationFunction(true);var sec_vemap=ShapeEditGetVEMap();sec_vemap.AttachEvent('ondoubleclick',sec_VEDoubleClick);sec_vemap.AttachEvent('onmousedown',sec_VEMouseDown);sec_vemap.AttachEvent('onmousemove',sec_VEMouseMove);sec_vemap.AttachEvent('onmouseup',sec_VEMouseUp);sec_vemap.AttachEvent('onmouseover',sec_VEConsumeEvent);sec_vemap.AttachEvent('onmouseout',sec_VEConsumeEvent);sec_SetVisibleDiv(editMode);}
function sec_SaveVEShapeEdit(){var sec_vemap=ShapeEditGetVEMap();if(sec_CurrentVEShape==null){sec_CancelVEShapeEdit();}
else{if(sec_CurrentVEShape.GetType()==VEShapeType.Polygon){var arr=sec_CurrentVEShape.GetPoints();if(arr.length<(sec_lastVertexIsTemp?5:4)){sec_CancelVEShapeEdit();}
else{sec_newVertexAtMouse=false;if(sec_lastVertexIsTemp){arr[arr.length-2]=arr[arr.length-1];arr.length=arr.length-1;sec_CurrentVEShape.SetPoints(arr);sec_lastVertexIsTemp=false;}
sec_GrabbedVertexIndex=-1;var sec_ShapeDragStartPoint=null;ShapEditControlUpdateShape(sec_PointsToArray(arr),sec_CurrentShapeType,sec_UpdateShapeCallback);ClientShapeNotificationFunction();sec_ResetEvents(sec_vemap);sec_SetVisibleDiv(null);}}
else{sec_CancelVEShapeEdit();}}}
function sec_PointsToArray(latLongArr){var arr=new Array();for(var n=0;n<latLongArr.length;n++){arr[arr.length]=latLongArr[n].Longitude;arr[arr.length]=latLongArr[n].Latitude;}
return arr;}
function sec_CancelVEShapeEdit(){var sec_vemap=ShapeEditGetVEMap();sec_newVertexAtMouse=false;sec_lastVertexIsTemp=false;sec_GrabbedVertexIndex=-1;var sec_ShapeDragStartPoint=null;if(sec_PriorVEShapePoints==null){if(sec_CurrentVEShape!=null){if(sec_CurrentVEShape.GetType()!=VEShapeType.Pushpin){sec_vemap.DeleteShape(sec_CurrentVEShape);}
sec_CurrentVEShape=null;}}
else{if(sec_CurrentVEShape.GetType()==VEShapeType.Polygon){sec_CurrentVEShape.SetPoints(sec_PriorVEShapePoints);}
else{sec_vemap.DeleteShape(sec_CurrentVEShape);sec_CurrentVEShape=new VEShape(VEShapeType.Polygon,sec_PriorVEShapePoints);sec_CurrentVEShape.HideIcon(true);sec_CurrentVEShape.SetFillColor(ShapeFillColor());sec_CurrentVEShape.SetLineColor(ShapeLineColor());sec_vemap.AddShape(sec_CurrentVEShape);}}
sec_CurrentShapeType=sec_PriorShapeType;sec_CurrentEditMode=sec_PriorEditMode;if(sec_PriorRadius&&sec_PriorRadius!=sec_CircleRadius){document.getElementById(sec_text_radius_id).value=''+sec_PriorRadius;sec_CircleRadius=sec_PriorRadius;}
if(sec_PriorCenterLatLong){sec_CircleCenterLatLong=sec_PriorCenterLatLong;}
sec_ResetEvents(sec_vemap);sec_SetVisibleDiv(null);}
function sec_ResetEvents(sec_vemap){sec_vemap.DetachEvent('ondoubleclick',sec_VEDoubleClick);sec_vemap.DetachEvent('onmousedown',sec_VEMouseDown);sec_vemap.DetachEvent('onmousemove',sec_VEMouseMove);sec_vemap.DetachEvent('onmouseup',sec_VEMouseUp);sec_vemap.DetachEvent('onmouseover',sec_VEConsumeEvent);sec_vemap.DetachEvent('onmouseout',sec_VEConsumeEvent);ClientEditNotificationFunction(false);}
function sec_ClearShape(){if(sec_CurrentVEShape!=null){if(sec_CurrentVEShape.GetType()!=VEShapeType.Pushpin){ShapeEditGetVEMap().DeleteShape(sec_CurrentVEShape);}
sec_CurrentVEShape=null;ShapEditControlUpdateShape(new Array(),'',sec_UpdateShapeCallback);initShapeCleared=true;sec_SetVisibleDiv(null);}}
function sec_UpdateShapeCallback(s){ClientShapeNotificationFunction(s);}
function sec_VEConsumeEvent(e){return true;}
function sec_VEDoubleClick(e){sec_SaveVEShapeEdit();return true;}
var vwMouseTracking=false;function sec_VEMouseDown(e){vwMouseTracking=true;sec_VEMouseDownMapX=e.mapX;sec_VEMouseDownMapY=e.mapY;if(e.leftMouseButton){sec_HandleGrabs(e.mapX,e.mapY);}
return true;}
var lastMapXDraw;var lattMapYDraw;function sec_VEMouseMove(e){var sec_vemap=ShapeEditGetVEMap();var ll=sec_vemap.PixelToLatLong(new VEPixel(e.mapX,e.mapY));if(sec_ShapeDragStartPoint!=null){var dLat=sec_ShapeDragStartPoint.Latitude-ll.Latitude;var dLong=sec_ShapeDragStartPoint.Longitude-ll.Longitude;var arr=sec_CurrentVEShape.GetPoints();for(var n=0;n<arr.length;n++){arr[n].Latitude=arr[n].Latitude-dLat;arr[n].Longitude=arr[n].Longitude-dLong;}
sec_ShapeDragStartPoint=ll;sec_CurrentVEShape.SetPoints(arr);if(sec_CurrentShapeType=='Circle'){sec_CircleCenterLatLong=ll;}}
else if(sec_GrabbedVertexIndex>-1){var arr=sec_CurrentVEShape.GetPoints();arr[sec_GrabbedVertexIndex]=ll;if(sec_GrabbedVertexIndex==0){arr[arr.length-1]=ll;}
sec_CurrentVEShape.SetPoints(arr);}
else if(sec_newVertexAtMouse&&sec_CurrentVEShape!=null){if(sec_CurrentVEShape.GetType()==VEShapeType.Pushpin){var arr=sec_CurrentVEShape.GetPoints();arr[arr.length]=ll;sec_CurrentVEShape=new VEShape(VEShapeType.Polyline,arr);sec_CurrentVEShape.HideIcon(true);sec_CurrentVEShape.SetLineColor(ShapeLineColor());sec_vemap.AddShape(sec_CurrentVEShape);sec_lastVertexIsTemp=true;}
else if(sec_CurrentVEShape.GetType()==VEShapeType.Polyline){var arr=sec_CurrentVEShape.GetPoints();if(sec_lastVertexIsTemp){arr[arr.length-1]=ll;sec_CurrentVEShape.SetPoints(arr);}
else{sec_vemap.DeleteShape(sec_CurrentVEShape);arr[arr.length]=ll;sec_CurrentVEShape=new VEShape(VEShapeType.Polygon,arr);sec_CurrentVEShape.HideIcon(true);sec_CurrentVEShape.SetFillColor(ShapeFillColor());sec_CurrentVEShape.SetLineColor(ShapeLineColor());sec_vemap.AddShape(sec_CurrentVEShape);sec_lastVertexIsTemp=true;}}
else{var difX=e.mapX-lastMapXDraw;var difY=e.mapY-lastMapYDraw;var length=Math.sqrt(Math.pow(difX,2)+Math.pow(difY,2));if(vwMouseTracking&&length>10){sec_PointClickAction(ll,false);lastMapXDraw=e.mapX;lastMapYDraw=e.mapY;sec_lastVertexIsTemp=false;}
else{var arr=sec_CurrentVEShape.GetPoints();arr[arr.length-(sec_lastVertexIsTemp?2:1)]=ll;sec_CurrentVEShape.SetPoints(arr);sec_lastVertexIsTemp=true;}}}
return true;}
function sec_VEMouseUp(e){vwMouseTracking=false;sec_GrabbedVertexIndex=-1;sec_ShapeDragStartPoint=null;var sec_vemap=ShapeEditGetVEMap();lastMapXDraw=e.mapX;lastMapYDraw=e.mapY;var latlong=sec_vemap.PixelToLatLong(new VEPixel(e.mapX,e.mapY));sec_PointClickAction(latlong,e.rightMouseButton);sec_VEMouseDownMapX=-1;sec_VEMouseDownMapY=-1;return true;}
function sec_RadiusKeyAction(){var elem=document.getElementById(sec_text_radius_id);var radius=parseFloat(elem.value);if(radius&&radius>0){sec_CircleRadius=radius;if(sec_CircleCenterLatLong!=null){sec_InitiateCircleCall();}}}
function sec_HandleGrabs(x,y){if(sec_CurrentEditMode=='Edit'&&sec_CurrentShapeType=='Polygon'&&sec_GrabbedVertexIndex==-1){var sec_vemap=ShapeEditGetVEMap();var arr=sec_CurrentVEShape.GetPoints();sec_GrabbedVertexIndex=sec_GetClosestPointInTolerance(x,y,arr,sec_vemap);}
else if(sec_CurrentEditMode=='Move'&&sec_ShapeDragStartPoint==null){var sec_vemap=ShapeEditGetVEMap();var ll=sec_vemap.PixelToLatLong(new VEPixel(x,y));if(sec_InBounds(ll)){sec_ShapeDragStartPoint=ll;}}}
function sec_InBounds(ll){var arr=sec_CurrentVEShape.GetPoints();var minLat=arr[0].Latitude;var maxLat=arr[0].Latitude;var minLong=arr[0].Longitude;var maxLong=arr[0].Longitude;for(var n=1;n<arr.length-1;n++){if(arr[n].Latitude<minLat){minLat=arr[n].Latitude;}
if(arr[n].Latitude>maxLat){maxLat=arr[n].Latitude;}
if(arr[n].Longitude<minLong){minLong=arr[n].Longitude;}
if(arr[n].Longitude>maxLong){maxLong=arr[n].Longitude;}}
return(ll.Latitude>=minLat&&ll.Latitude<=maxLat&&ll.Longitude>=minLong&&ll.Longitude<=maxLong);}
function sec_GetClosestPointInTolerance(x,y,arr,sec_vemap){var min=sec_GrabTolerance*2;var index=-1;for(var n=0;n<(arr.length-1);n++){var pixel=sec_vemap.LatLongToPixel(arr[n]);var diffX=x-pixel.x;var diffY=y-pixel.y;if(diffX<=sec_GrabTolerance&&diffX>=-sec_GrabTolerance&&diffY<=sec_GrabTolerance&&diffY>=-sec_GrabTolerance){var diff=Math.sqrt(diffX*diffX+diffY*diffY);if(diff<min){min=diff;index=n;}}}
return index;}
function sec_GetNearestSegment(x,y,arr,sec_vemap){var min=-1;var index=-1;var pixel1=null;for(var n=0;n<(arr.length-1);n++){if(pixel1==null){pixel1=sec_vemap.LatLongToPixel(arr[n]);}
var pixel2=sec_vemap.LatLongToPixel(arr[n+1]);var dist=sec_SegDistance(pixel1.x,pixel1.y,pixel2.x,pixel2.y,x,y);if(min<0||dist<min){min=dist;index=n;}
pixel1=pixel2;}
return index;}
function sec_DotProduct(ax,ay,bx,by,cx,cy){return(bx-ax)*(cx-bx)+(by-ay)*(cy-by);}
function sec_CrossProduct(ax,ay,bx,by,cx,cy){return(bx-ax)*(cy-ay)-(by-ay)*(cx-ax);}
function sec_PointDistance(ax,ay,bx,by){var dx=ax-bx;var dy=ay-by;return Math.sqrt(dx*dx+dy*dy);}
function sec_SegDistance(ax,ay,bx,by,cx,cy){if(sec_DotProduct(ax,ay,bx,by,cx,cy)>0){return sec_PointDistance(bx,by,cx,cy);}
if(sec_DotProduct(bx,by,ax,ay,cx,cy)>0){return sec_PointDistance(ax,ay,cx,cy);}
return Math.abs(sec_CrossProduct(ax,ay,bx,by,cx,cy)/sec_PointDistance(ax,ay,bx,by));}
function sec_PointClickAction(ll,isRightClick){var sec_vemap=ShapeEditGetVEMap();if(sec_CurrentEditMode=='Draw'){if(sec_CurrentShapeType=='Polygon'){sec_DrawPolygon(ll,sec_vemap);}
else{sec_DrawCircle(ll);}}
else if(sec_CurrentEditMode=='Edit'){if(sec_CurrentShapeType=='Polygon'){sec_EditPolygon(ll,sec_vemap,isRightClick);}
else{sec_DrawCircle(ll);}}}
function sec_DrawCircle(ll){sec_CircleCenterLatLong=ll;sec_InitiateCircleCall();}
function sec_InitiateCircleCall(){ShapEditControlGetCircle(sec_CircleCenterLatLong.Latitude,sec_CircleCenterLatLong.Longitude,sec_CircleRadius,sec_GetCircleCallback);}
function sec_GetCircleCallback(s){var arrS=s.split(',');var arr=new Array();for(var n=0;n+1<arrS.length;n+=2){arr[arr.length]=new VELatLong(parseFloat(arrS[n]),parseFloat(arrS[n+1]));}
if(sec_CurrentVEShape==null){sec_CurrentVEShape=new VEShape(VEShapeType.Polygon,arr);sec_CurrentVEShape.HideIcon(true);sec_CurrentVEShape.SetFillColor(ShapeFillColor());sec_CurrentVEShape.SetLineColor(ShapeLineColor());ShapeEditGetVEMap().AddShape(sec_CurrentVEShape);}
else{sec_CurrentVEShape.SetPoints(arr);}}
function sec_EditPolygon(ll,sec_vemap,isRightClick){var arr=sec_CurrentVEShape.GetPoints();if(isRightClick){if(arr.length>4){var sec_vemap=ShapeEditGetVEMap();var pixel=sec_vemap.LatLongToPixel(ll);var target=sec_GetClosestPointInTolerance(pixel.x,pixel.y,arr,sec_vemap);if(target>=0){var newArr=new Array();for(var n=0;n<arr.length-1;n++){if(n!=target){newArr[newArr.length]=arr[n];}}
newArr[newArr.length]=newArr[0];sec_CurrentVEShape.SetPoints(newArr);}}}
else{var sec_vemap=ShapeEditGetVEMap();var pixel=sec_vemap.LatLongToPixel(ll);var target=sec_GetNearestSegment(pixel.x,pixel.y,arr,sec_vemap);var newArr=new Array();for(var n=0;n<arr.length-1;n++){newArr[newArr.length]=arr[n];if(n==target){newArr[newArr.length]=ll;}}
newArr[newArr.length]=newArr[0];sec_CurrentVEShape.SetPoints(newArr);}}
function sec_DrawPolygon(ll,sec_vemap){if(sec_CurrentVEShape==null){sec_CurrentVEShape=new VEShape(VEShapeType.Pushpin,ll);}
else if(sec_CurrentVEShape.GetType()==VEShapeType.Pushpin){var arr=sec_CurrentVEShape.GetPoints();arr[arr.length]=ll;sec_CurrentVEShape=new VEShape(VEShapeType.Polyline,arr);sec_CurrentVEShape.HideIcon(true);sec_CurrentVEShape.SetLineColor(ShapeLineColor());sec_vemap.AddShape(sec_CurrentVEShape);}
else if(sec_CurrentVEShape.GetType()==VEShapeType.Polyline){var arr=sec_CurrentVEShape.GetPoints();if(sec_lastVertexIsTemp){arr[arr.length-1]=ll;sec_CurrentVEShape.SetPoints(arr);sec_lastVertexIsTemp=false;}
else{sec_vemap.DeleteShape(sec_CurrentVEShape);arr[arr.length]=ll;sec_CurrentVEShape=new VEShape(VEShapeType.Polygon,arr);sec_CurrentVEShape.HideIcon(true);sec_CurrentVEShape.SetFillColor(ShapeFillColor());sec_CurrentVEShape.SetLineColor(ShapeLineColor());sec_vemap.AddShape(sec_CurrentVEShape);}}
else{var arr=sec_CurrentVEShape.GetPoints();arr[arr.length-(sec_lastVertexIsTemp?2:1)]=ll;sec_CurrentVEShape.SetPoints(arr);sec_lastVertexIsTemp=false;}}
function SetupShapeTools(){InitializeCurrentShape();pluginManager.Initialize(MDNGetVEMap(),InitialShapeType,InitialShape);pluginManager.AddButtonsToToolbar();}
var i=0;function AddControl(){pluginManager.InitializePluginManager()}
function addShim(el){}
function sec_TurnOffInstructions(){document.getElementById('CustomSearch_Step1').style.display='none';document.getElementById('CustomSearch_Step2_Polygon').style.display='none';document.getElementById('CustomSearch_Step2_Circle').style.display='none';document.getElementById('CustomSearch_Step4').style.display='none';document.getElementById('CustomSearch_Move').style.display='none';document.getElementById('CustomSearch_Edit_Circle').style.display='none';document.getElementById('CustomSearch_Edit_Polygon').style.display='none';}
function sec_SetVisibleDiv(editMode){sec_TurnOffInstructions();if(editMode=='Move'){document.getElementById('CustomSearch_Move').style.display='block';}
else if(editMode=='Edit'){document.getElementById('CustomSearch_Edit_Polygon').style.display=(sec_CurrentShapeType=='Polygon'?'block':'none');document.getElementById('CustomSearch_Edit_Circle').style.display=(sec_CurrentShapeType=='Circle'?'block':'none');}
if(editMode){document.getElementById('sec_div_noshape').style.display='none';document.getElementById('sec_div_draw_polygon').style.display=(sec_CurrentShapeType=='Polygon'?'block':'none');document.getElementById('sec_div_draw_circle').style.display=(sec_CurrentShapeType=='Circle'?'block':'none');document.getElementById('sec_div_polygon').style.display='none';document.getElementById('sec_div_circle').style.display='none';}
else if(sec_CurrentVEShape==null){document.getElementById('sec_div_noshape').style.display='block';document.getElementById('sec_div_draw_polygon').style.display='none';document.getElementById('sec_div_draw_circle').style.display='none';document.getElementById('sec_div_polygon').style.display='none';document.getElementById('sec_div_circle').style.display='none';document.getElementById('CustomSearch_Step1').style.display='block';}
else{document.getElementById('sec_div_noshape').style.display='none';document.getElementById('sec_div_draw_polygon').style.display='none';document.getElementById('sec_div_draw_circle').style.display='none';document.getElementById('sec_div_polygon').style.display=(sec_CurrentShapeType=='Polygon'?'block':'none');document.getElementById('sec_div_circle').style.display=(sec_CurrentShapeType=='Circle'?'block':'none');document.getElementById('CustomSearch_Step4').style.display='block';}}
function sec_draw_button_click(){var select=document.getElementById(sec_select_shape_type_id);if(select.selectedIndex>=0){sec_SetVEShapeEdit(select.options[select.selectedIndex].value,'Draw')}
sec_TurnOffInstructions();if(sec_CurrentShapeType=='Polygon'){document.getElementById('CustomSearch_Step2_Polygon').style.display='block';}
else{document.getElementById('CustomSearch_Step2_Circle').style.display='block';}}