private void RecalculateTimeScale()
{
//Lets do the calculation for all of the possible time scales and see which one fits bets
if(_bAutomaticTimeScale)
{
int iSize = (this.Orientation == enumOrientation.orHorizontal) ? Width : Height;
int iOptimumScale = iSize/10;
double dblZoomFactor = CalculateZoomFactor(iSize, enumTimeScale.MilliSeconds);
int iMilliScale = DefaultScale(dblZoomFactor) / DefaultMajorInterval();
int iMilliDiff = Math.Abs(iOptimumScale - iMilliScale);
dblZoomFactor = CalculateZoomFactor(iSize, enumTimeScale.Seconds);
int iSecScale = DefaultScale(dblZoomFactor) / DefaultMajorInterval();
int iSecDiff = Math.Abs(iOptimumScale - iSecScale);
dblZoomFactor = CalculateZoomFactor(iSize, enumTimeScale.Minutes);
int iMinScale = DefaultScale(dblZoomFactor) / DefaultMajorInterval();
int iMinDiff = Math.Abs(iOptimumScale - iMinScale);
dblZoomFactor = CalculateZoomFactor(iSize, enumTimeScale.Hours);
int iHourScale = DefaultScale(dblZoomFactor) / DefaultMajorInterval();
int iHourDiff = Math.Abs(iOptimumScale - iHourScale);
if( (iSecDiff < iMilliDiff) && (iSecDiff < iMinDiff) && (iSecDiff < iHourDiff) )
_TimeScale = enumTimeScale.Seconds;
else if( (iMinDiff < iMilliDiff) && (iMinDiff < iSecDiff) && (iMinDiff < iHourDiff) )
_TimeScale = enumTimeScale.Minutes;
else if( (iHourDiff < iMilliDiff) && (iHourDiff < iSecDiff) && (iHourDiff < iMinDiff) )
_TimeScale = enumTimeScale.Hours;
else
_TimeScale = enumTimeScale.MilliSeconds;
RecalculateZoom();
RecalculateDivisions();
}
}