private void initCalendarCells() {
    Calendar mStartDate = (Calendar) CalendarData.get(getActivity()).getDateCurrent().clone();
    Calendar mSelectedDate = (Calendar) CalendarData.get(getActivity()).getDateSelected();
    Calendar mCurrentDate = (Calendar) CalendarData.get(getActivity()).getDateCurrent();
    int mCurrentMonth = mCurrentDate.get(Calendar.MONTH);
    int mSelectedYear = mSelectedDate.get(Calendar.YEAR);
    int mSelectedMonth = mSelectedDate.get(Calendar.MONTH);
    int mSelectedDay = mSelectedDate.get(Calendar.DAY_OF_MONTH);
    int mDayOfWeek;
    CalendarGridCell mCell;
    int mCellYear, mCellMonth, mCellDay;

    if (mWeekCells.size() > 0) mWeekCells.clear();
    mDayOfWeek = mStartDate.get(Calendar.DAY_OF_WEEK);
    mStartDate.add(Calendar.DAY_OF_MONTH, -(mDayOfWeek - 1));
    for (int i = 0; i < 7; i++) {
      mCell = new CalendarGridCell(mStartDate);
      mCellYear = mStartDate.get(Calendar.YEAR);
      mCellMonth = mStartDate.get(Calendar.MONTH);
      mCellDay = mStartDate.get(Calendar.DAY_OF_MONTH);
      mDayOfWeek = mStartDate.get(Calendar.DAY_OF_WEEK);
      if (mCellMonth == mCurrentMonth) mCell.setCurrentMonth(true);
      else mCell.setCurrentMonth(false);
      if ((mDayOfWeek == Calendar.SATURDAY) | (mDayOfWeek == Calendar.SUNDAY))
        mCell.setWeekend(true);
      else mCell.setWeekend(false);
      if ((mCellDay == mSelectedDay)
          & (mCellMonth == mSelectedMonth)
          & (mCellYear == mSelectedYear)) mCell.setSelected(true);
      else mCell.setSelected(false);
      mWeekCells.add(mCell);
      mStartDate.add(Calendar.DAY_OF_MONTH, 1);
    }
  }
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
    View mWeekView = inflater.inflate(R.layout.grid_calendar_fragment, parent, false);

    mScrollPrevious = (TextView) mWeekView.findViewById(R.id.scrollPrevious);
    mScrollPrevious.setOnClickListener(
        new OnClickListener() {
          @Override
          public void onClick(View v) {
            Calendar mDate = CalendarData.get(getActivity()).getDateCurrent();
            mDate.add(Calendar.DAY_OF_MONTH, -7);
            CalendarData.get(getActivity()).setDateCurrent(mDate);
            mCalendarHeader.setText(CalendarData.get(getActivity()).getCalendarHeader());
            initCalendarCells();
            mCalendarGridAdapter.notifyDataSetChanged();
          }
        });
    mScrollNext = (TextView) mWeekView.findViewById(R.id.scrollNext);
    mScrollNext.setOnClickListener(
        new OnClickListener() {
          @Override
          public void onClick(View v) {
            Calendar mDate = CalendarData.get(getActivity()).getDateCurrent();
            mDate.add(Calendar.DAY_OF_MONTH, 7);
            CalendarData.get(getActivity()).setDateCurrent(mDate);
            mCalendarHeader.setText(CalendarData.get(getActivity()).getCalendarHeader());
            initCalendarCells();
            mCalendarGridAdapter.notifyDataSetChanged();
          }
        });
    mCalendarHeader = (TextView) mWeekView.findViewById(R.id.calendarHeader);
    mCalendarHeader.setText(CalendarData.get(getActivity()).getCalendarHeader());

    mDayGrid = (GridView) mWeekView.findViewById(R.id.dayHeader);
    mDayGridAdapter =
        new DaysOfWeekAdapter(getActivity(), CalendarData.get(getActivity()).getWeekdays_Abbr());
    mDayGrid.setAdapter(mDayGridAdapter);

    mCalendarGrid = (GridView) mWeekView.findViewById(R.id.calendarGrid);
    mCalendarGridAdapter = new WeekGridAdapter(getActivity(), mWeekCells);
    mCalendarGrid.setAdapter(mCalendarGridAdapter);

    mEventList = (ListView) mWeekView.findViewById(R.id.eventList);

    return mWeekView;
  }