    /*!
     * Ext JS Library 3.3.0
     * Copyright(c) 2006-2010 Ext JS, Inc.
     * licensing@extjs.com
     * http://www.extjs.com/license
     */
    /**
     * @class Ext.calendar.MonthViewTemplate
     * @extends Ext.XTemplate
     * This is the template used to render the {@link Ext.calendar.MonthView MonthView}. Internally this class defers to an
     * instance of {@link Ext.calerndar.BoxLayoutTemplate} to handle the inner layout rendering and adds containing elements around
     * that to form the month view.
     * This template is automatically bound to the underlying event store by the
     * calendar components and expects records of type {@link Ext.calendar.EventRecord}.
     * @constructor
     * @param {Object} config The config object
     */
    Ext.calendar.MonthViewTemplate = function(config){

        Ext.apply(this, config);

        this.weekTpl = new Ext.calendar.BoxLayoutTemplate(config);
        this.weekTpl.compile();

        var weekLinkTpl = this.showWeekLinks ? ' ' : '';

        Ext.calendar.MonthViewTemplate.superclass.constructor.call(this,
            '',
                '',
                    weekLinkTpl,
                    '',
                        '',
                            '',
                                '',
                                    '{.:date("D")}',
                                '',
                            '',
                        '',
                    '',
                '',
                '{weeks}',
            ''
        );
    };

    Ext.extend(Ext.calendar.MonthViewTemplate, Ext.XTemplate, {
        // private
        applyTemplate : function(o){
            var days = [],
                weeks = this.weekTpl.apply(o),
                dt = o.viewStart;

            for(var i = 0; i < 7; i++){
                days.push(dt.add(Date.DAY, i));
            }

            var extraClasses = this.showHeader === true ? '' : 'ext-cal-noheader';
            if(this.showWeekLinks){
                extraClasses += ' ext-cal-week-links';
            }

            return Ext.calendar.MonthViewTemplate.superclass.applyTemplate.call(this, {
                days: days,
                weeks: weeks,
                extraClasses: extraClasses
            });
        }
    });

    Ext.calendar.MonthViewTemplate.prototype.apply = Ext.calendar.MonthViewTemplate.prototype.applyTemplate;