/// <summary>
        /// Move the current timezone depending on the direction
        /// left : move backward, decrease GMT offset
        /// right : move forward, increase GMT offset
        /// </summary>
        /// <param name="direction">Direction</param>
        public static void MoveCurrentTimezone(Direction direction)
        {
            int current = TimezoneUtility.GetCurrentTimezoneNo();

            if (direction == Direction.LEFT)
            {
                if (current == 0)
                {
                    TimezoneUtility.SetCurrentTimezone(TimezoneUtility.timezone_.Length - 1);
                }
                else
                {
                    TimezoneUtility.SetCurrentTimezone(current - 1);
                }
            }
            else
            {
                if (current == TimezoneUtility.timezone_.Length - 1)
                {
                    TimezoneUtility.SetCurrentTimezone(0);
                }
                else
                {
                    TimezoneUtility.SetCurrentTimezone(current + 1);
                }
            }
        }
        /// <summary>
        /// Get Timezone information related to the given GMT offset
        /// </summary>
        /// <param name="offset">int</param>
        /// <returns>TimezoneInfo</returns>
        private static TimezoneInfo GetTimezoneInformation(int offset)
        {
            TimezoneInfo info;

            int localTimezoneOffset = TimezoneUtility.GetLocalTimeGmtOffset();
            int offset_integer      = (Math.Abs(offset - localTimezoneOffset)) / 60;
            int offset_remainder    = (Math.Abs(offset - localTimezoneOffset)) % 60;

            DateTime dateNow = DateTime.Now;

            if (offset < localTimezoneOffset)
            {
                if (offset_remainder > 0)
                {
                    info.relative = String.Format("{0}h {1}m behind", offset_integer, offset_remainder);
                    info.newTime  = dateNow.Add(new TimeSpan(-(offset_integer), -(offset_remainder), 0));
                }
                else
                {
                    info.relative = String.Format("{0}h behind", offset_integer);
                    info.newTime  = dateNow.Add(new TimeSpan(-(offset_integer), 0, 0));
                }
            }
            else if (offset > localTimezoneOffset)
            {
                if (offset_remainder > 0)
                {
                    info.relative = String.Format("{0}h {1}m ahead", offset_integer, offset_remainder);

                    info.newTime = dateNow.Add(new TimeSpan(offset_integer, offset_remainder, 0));
                }
                else
                {
                    info.relative = String.Format("{0}h ahead", offset_integer);

                    info.newTime = dateNow.Add(new TimeSpan(offset_integer, 0, 0));
                }
            }
            else
            {
                info.relative = "Same as local time";
                info.newTime  = dateNow;
            }

            return(info);
        }