
////////////////////////////////////////////////////////////////////////////////////////////////////
// Enables format in Date objects
////////////////////////////////////////////////////////////////////////////////////////////////////
Extend(
    Date.prototype,
    {
 	    monthnames: ['January','February','March','April','May','June','July','August','September','October','November','December'],
        daynames: ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],
        format: function(f)
        {
            if (!this.valueOf())
                return '&nbsp;';
            var d = this;
	        var h = d.getHours() % 12;
            var formats = {
                'yyyy': d.getFullYear(),
                'mmmm': Language.getEntry(this.monthnames[d.getMonth()]),
                'mmm':  Language.getEntry(this.monthnames[d.getMonth()]).substr(0, 3),
                'mm':   ((d.getMonth()+1)).toString().padLeft('0', 2),
                'dddd': Language.getEntry(this.daynames[d.getDay()]),
                'ddd':  Language.getEntry(this.daynames[d.getDay()]).substr(0, 3),
                'dd':   d.getDate().toString().padLeft('0', 2),
                'd':    d.getDate(),
                'hh':   h ? h : 12,
                'ii':   d.getMinutes(),
                'ss':   d.getSeconds(),
                'a/p':  d.getHours() < 12 ? 'a' : 'p'
            };
            return f.replace(/yyyy|mmmm|mmm|mm|dddd|ddd|dd|d|hh|ii|ss|a\/p/gi,
                function(match) { return formats[match.toLowerCase()]; }
            );
        }
    }
);
