class NilClass
  def rus
    return ''
  end

end


class Date

  def rus
    Russian::strftime(self)
  end


  def time_from
    to_time.in_time_zone.to_s :db
  end

  def time_to
    to_time.end_of_day.in_time_zone.to_s :db
  end


def week_of_month
  date = self
  week_of_target_date = date.strftime("%W").to_i
  week_of_beginning_of_month = date.beginning_of_month.strftime("%W").to_i
  week_of_month = week_of_target_date - week_of_beginning_of_month + 1
  first_day_of_month = date.beginning_of_month
  if first_day_of_month.cwday != 1
    if [1, 2].include? week_of_month
      week_of_month = 1
    else
      week_of_month -= 1
    end
  end
  if week_of_month == 5
    week_of_month = 4
  end
  return week_of_month
end

def beginning_of_week_number(week_number)
  case week_number
  when 1
    date = self.beginning_of_month
  when 2
    may_be = self.beginning_of_month + 7.days
    if  may_be.week_of_month == 2
      date = may_be.beginning_of_week
    else
      date = (may_be + 7.days).beginning_of_week    
    end
  when 3
    may_be = self.beginning_of_month + 14.days
    if  may_be.week_of_month == 3
      date = may_be.beginning_of_week
    else
      date = (may_be + 7.days).beginning_of_week    
    end
  when 4
    date = self.end_of_month.beginning_of_week
    may_be = date - 7.days
    if may_be.week_of_month == 4
      date = may_be
    end
  end
  return date
end

def end_of_week_number(week_number)
  case week_number
  when 1
    may_be = self.beginning_of_month + 7.days
    if  may_be.week_of_month == 1
      date = may_be.end_of_week
    else
      date = self.beginning_of_month.end_of_week    
    end
  when 2
    may_be = self.beginning_of_month + 14.days
    if  may_be.week_of_month == 2
      date = may_be.end_of_week
    else
      date = (may_be - 7.days).end_of_week    
    end
  when 3
    may_be = self.beginning_of_month + 21.days
    if  may_be.week_of_month == 3
      date = may_be.end_of_week
    else
      date = (may_be - 7.days).end_of_week    
    end
  when 4
    date = self.end_of_month
  end
  return date
end

end
