public override bool PerformSelectionAction(DrawArgs drawArgs)
        {
            bool bRet = false;

			float elevation = (float)(m_parentWorld.TerrainAccessor.GetElevationAt(m_fStartLatitud,m_fStartLongitude, (double)241));
			if (m_fStartAlt < elevation)
				m_fStartAlt = elevation;
			xyzPosition=MathEngine.SphericalToCartesian(m_fStartLatitud, m_fStartLongitude, this.m_parentWorld.EquatorialRadius + (m_fStartAlt * World.Settings.VerticalExaggeration));

            if (!drawArgs.WorldCamera.ViewFrustum.ContainsPoint(xyzPosition))
                return false;

            Vector3 translationVector = new Vector3(
                (float)(xyzPosition.X - drawArgs.WorldCamera.ReferenceCenter.X),
                (float)(xyzPosition.Y - drawArgs.WorldCamera.ReferenceCenter.Y),
                (float)(xyzPosition.Z - drawArgs.WorldCamera.ReferenceCenter.Z));
            Vector3 projectedPoint = drawArgs.WorldCamera.Project(translationVector);
#if !DEBUG
			try
#endif
            {
                if (Math.Abs(DrawArgs.LastMousePosition.X - projectedPoint.X) < m_iIconWidthHalf &&
                    Math.Abs(DrawArgs.LastMousePosition.Y - projectedPoint.Y) < m_iIconHeightHalf)
                {
                    byte[] pbKeyState = new byte[256];
                    GetKeyboardState(pbKeyState);
                    if ((pbKeyState[VK_LCONTROL] & 0x80) == 0x80) //Toggle Information text
                    {
                        GpsSetup gpsSetup = new GpsSetup(null, this, null);
                        gpsSetup.ShowDialog();
                        gpsSetup.Dispose();
                    }

                    bRet = true;
                    Update(drawArgs);
                }
            }
#if !DEBUG
			catch
			{
			}
#endif

            return bRet; //false
        }
		public override bool PerformSelectionAction(DrawArgs drawArgs)
		{
			bool bRet=false;

			float elevation = (float)(m_parentWorld.TerrainAccessor.GetElevationAt(m_RenderInfo.fLat,m_RenderInfo.fLon, (double)241));
			if (m_RenderInfo.fAlt < elevation)
				m_RenderInfo.fAlt = elevation;
			xyzPosition=MathEngine.SphericalToCartesian(m_RenderInfo.fLat, m_RenderInfo.fLon, this.m_parentWorld.EquatorialRadius + (m_RenderInfo.fAlt * World.Settings.VerticalExaggeration));

			if(!drawArgs.WorldCamera.ViewFrustum.ContainsPoint(xyzPosition))
				return false;

            Vector3 translationVector = new Vector3(
                (float)(xyzPosition.X - drawArgs.WorldCamera.ReferenceCenter.X),
                (float)(xyzPosition.Y - drawArgs.WorldCamera.ReferenceCenter.Y),
                (float)(xyzPosition.Z - drawArgs.WorldCamera.ReferenceCenter.Z));
            Vector3 projectedPoint = drawArgs.WorldCamera.Project(translationVector);
			#if !DEBUG
			try
			#endif
			{
				if(Math.Abs(DrawArgs.LastMousePosition.X-projectedPoint.X)<m_iIconWidthHalf &&
					Math.Abs(DrawArgs.LastMousePosition.Y-projectedPoint.Y)<m_iIconHeightHalf)
				{
					byte [] pbKeyState = new byte[256];
					GetKeyboardState(pbKeyState);
					if ((pbKeyState[VK_LCONTROL] & 0x80)==0x80) //Toggle Information text
					{
                        GpsSetup gpsSetup = new GpsSetup(this, null, null);
                        gpsSetup.ShowDialog();
                        gpsSetup.Dispose();

                        m_gpsTrackerOverlay.ToggleTrackHeading(m_bTrackHeading);
                        m_gpsTrackerOverlay.ToggleTrackLine(m_bTrackLine);

                        if (m_RenderInfo.bPOI==false)
                        {
						    if (m_bSignalDistance==false)
						    {
							    for (int i=0; i<m_gpsTrackerOverlay.m_iGpsPOIIndex; i++)
							    {
								    if (m_gpsTrackerOverlay.m_gpsPOI[i]!=null)
								    {

									    m_gpsTrackerOverlay.m_gpsPOI[i].m_fLatitudeFrom=1000F;
									    m_gpsTrackerOverlay.m_gpsPOI[i].m_fLongitudeFrom=1000F;
									    m_gpsTrackerOverlay.m_gpsPOI[i].m_sDescriptionFrom="";
								    }
							    }
						    }
						    else
						    {
							    for (int i=0; i<m_gpsTrackerOverlay.m_iGpsIconIndex; i++)
								    if (m_gpsTrackerOverlay.m_gpsIcons[i]!=null)
									    m_gpsTrackerOverlay.m_gpsIcons[i].m_bSignalDistance=false;
    							
							    for (int i=0; i<m_gpsTrackerOverlay.m_iGpsPOIIndex; i++)
							    {
								    if (m_gpsTrackerOverlay.m_gpsPOI[i]!=null)
								    {
                                        m_bSignalDistance = true;
									    m_gpsTrackerOverlay.m_gpsPOI[i].m_fLatitudeFrom=m_RenderInfo.fLat;
									    m_gpsTrackerOverlay.m_gpsPOI[i].m_fLongitudeFrom=m_RenderInfo.fLon;
									    m_gpsTrackerOverlay.m_gpsPOI[i].m_sDescriptionFrom=m_RenderInfo.sDescription;
								    }
							    }
						    }
                        }
                        else
                        {
						    if (m_bSignalDistance==false)
						    {
							    for (int i=0; i<m_gpsTrackerOverlay.m_iGpsIconIndex; i++)
							    {
								    if (m_gpsTrackerOverlay.m_gpsIcons[i]!=null)
								    {
									    m_gpsTrackerOverlay.m_gpsIcons[i].m_fLatitudeFrom=1000F;
									    m_gpsTrackerOverlay.m_gpsIcons[i].m_fLongitudeFrom=1000F;
									    m_gpsTrackerOverlay.m_gpsIcons[i].m_sDescriptionFrom="";
								    }
							    }
						    }
						    else
						    {
							    for (int i=0; i<m_gpsTrackerOverlay.m_iGpsPOIIndex; i++)
								    if (m_gpsTrackerOverlay.m_gpsPOI[i]!=null)
									    m_gpsTrackerOverlay.m_gpsPOI[i].m_bSignalDistance=false;
    							
							    for (int i=0; i<m_gpsTrackerOverlay.m_iGpsIconIndex; i++)
							    {
								    if (m_gpsTrackerOverlay.m_gpsIcons[i]!=null)
								    {
                                        m_bSignalDistance = true;
									    m_gpsTrackerOverlay.m_gpsIcons[i].m_fLatitudeFrom=m_RenderInfo.fLat;
									    m_gpsTrackerOverlay.m_gpsIcons[i].m_fLongitudeFrom=m_RenderInfo.fLon;
									    m_gpsTrackerOverlay.m_gpsIcons[i].m_sDescriptionFrom=m_RenderInfo.sDescription;
								    }
							    }
						    }

                        }
					}
					else
					{
						bool bOn=true;
						if (m_bTrack)
							bOn=false;
						for (int i=0; i<m_gpsTrackerOverlay.m_iGpsIconIndex; i++)
							m_gpsTrackerOverlay.m_gpsIcons[i].m_bTrack=false;
						for (int i=0; i<m_gpsTrackerOverlay.m_iGpsPOIIndex; i++)
							m_gpsTrackerOverlay.m_gpsPOI[i].m_bTrack=false;
						m_bTrack=bOn;

						m_gpsTrackerOverlay.SetActiveTrack(m_RenderInfo.iIndex,bOn);
					}

					bRet=true;
				}
			}
			#if !DEBUG
			catch
			{
			}
			#endif

			return bRet; //false
		}