# File ../lib/fox/calendar.rb, line 55
    def initialize(parent, initial_date=Time.now, tgt=nil, sel=0, opts=0, x=0, y=0, w=0, h=0, pl=DEFAULT_PAD, pr=DEFAULT_PAD, pt=DEFAULT_PAD, pb=DEFAULT_PAD)
      # Initialize the base class first
      super(parent, opts, x, y, w, h, pl, pr, pt, pb)

      # Save target and selector
      self.target = tgt
      self.selector = sel

      @headerBGColor = FXColor::Black
      @headerFGColor = FXColor::White
      @dayLabelFont = FXFont.new(getApp, "helvetica", 7)
      
      @date_showing = initial_date
      
      # Header row
      @header = FXHorizontalFrame.new(self, LAYOUT_FILL_X)
      @header.backColor = @headerBGColor
      @backBtn = FXArrowButton.new(@header, nil, 0, FRAME_RAISED|FRAME_THICK|ARROW_LEFT|ARROW_REPEAT)
      @backBtn.connect(SEL_COMMAND) do |send, sel, ev|
        @date_showing = _last_month
        _build_date_matrix
        @current_month.text = _header_date
      end  
      @current_month = FXLabel.new(@header, _header_date, nil,
        LAYOUT_FILL_X|JUSTIFY_CENTER_X|LAYOUT_FILL_Y)
      @current_month.backColor = @headerBGColor
      @current_month.textColor = @headerFGColor
      @foreBtn = FXArrowButton.new(@header, nil, 0, FRAME_RAISED|FRAME_THICK|ARROW_RIGHT|ARROW_REPEAT)
      @foreBtn.connect(SEL_COMMAND) do |send, sel, ev|
        @date_showing = _next_month
        _build_date_matrix
        @current_month.text = _header_date
      end
      
      @matrix = FXMatrix.new(self, 7,
        MATRIX_BY_COLUMNS|LAYOUT_FILL_X|LAYOUT_FILL_Y|PACK_UNIFORM_WIDTH|FRAME_RAISED,
        0, 0, 0, 0, 0, 0, 0, 0)
      DAYS.each { |day| _add_matrix_label(day) }
      (7*6 - 1).times do
        s = FXSwitcher.new(@matrix,
          LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_FILL_ROW|LAYOUT_FILL_COLUMN, 0,0,0,0,0,0,0,0)
        FXFrame.new(s, LAYOUT_FILL_X|LAYOUT_FILL_Y, 0,0,0,0,0,0,0,0)
        btn = FXButton.new(s, '99', nil, nil, 0,
          LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK,
          0,0,0,0,0,0,0,0)
        btn.connect(SEL_COMMAND) do |send, sel, ev|
          @selected = Time.local(@date_showing.year, @date_showing.month,
                                 send.text.to_i)
          target.handle(self, MKUINT(selector, SEL_COMMAND), @selected) if target 
        end
      end
      _build_date_matrix()
    end