diff options
Diffstat (limited to 'static/date.js')
| -rw-r--r-- | static/date.js | 507 |
1 files changed, 0 insertions, 507 deletions
diff --git a/static/date.js b/static/date.js deleted file mode 100644 index 2312284..0000000 --- a/static/date.js +++ /dev/null @@ -1,507 +0,0 @@ -/* - * Date prototype extensions. Doesn't depend on any - * other code. Doens't overwrite existing methods. - * - * Adds dayNames, abbrDayNames, monthNames and abbrMonthNames static properties and isLeapYear, - * isWeekend, isWeekDay, getDaysInMonth, getDayName, getMonthName, getDayOfYear, getWeekOfYear, - * setDayOfYear, addYears, addMonths, addDays, addHours, addMinutes, addSeconds methods - * - * Copyright (c) 2006 Jörn Zaefferer and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net) - * - * Additional methods and properties added by Kelvin Luck: firstDayOfWeek, dateFormat, zeroTime, asString, fromString - - * I've added my name to these methods so you know who to blame if they are broken! - * - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - * - */ - -/** - * An Array of day names starting with Sunday. - * - * @example dayNames[0] - * @result 'Sunday' - * - * @name dayNames - * @type Array - * @cat Plugins/Methods/Date - */ -Date.dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; - -/** - * An Array of abbreviated day names starting with Sun. - * - * @example abbrDayNames[0] - * @result 'Sun' - * - * @name abbrDayNames - * @type Array - * @cat Plugins/Methods/Date - */ -Date.abbrDayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; - -/** - * An Array of month names starting with Janurary. - * - * @example monthNames[0] - * @result 'January' - * - * @name monthNames - * @type Array - * @cat Plugins/Methods/Date - */ -Date.monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; - -/** - * An Array of abbreviated month names starting with Jan. - * - * @example abbrMonthNames[0] - * @result 'Jan' - * - * @name monthNames - * @type Array - * @cat Plugins/Methods/Date - */ -Date.abbrMonthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; - -/** - * The first day of the week for this locale. - * - * @name firstDayOfWeek - * @type Number - * @cat Plugins/Methods/Date - * @author Kelvin Luck - */ -Date.firstDayOfWeek = 1; - -/** - * The format that string dates should be represented as (e.g. 'dd/mm/yyyy' for UK, 'mm/dd/yyyy' for US, 'yyyy-mm-dd' for Unicode etc). - * - * @name format - * @type String - * @cat Plugins/Methods/Date - * @author Kelvin Luck - */ -Date.format = 'dd/mm/yyyy'; -//Date.format = 'mm/dd/yyyy'; -//Date.format = 'yyyy-mm-dd'; -//Date.format = 'dd mmm yy'; - -/** - * The first two numbers in the century to be used when decoding a two digit year. Since a two digit year is ambiguous (and date.setYear - * only works with numbers < 99 and so doesn't allow you to set years after 2000) we need to use this to disambiguate the two digit year codes. - * - * @name format - * @type String - * @cat Plugins/Methods/Date - * @author Kelvin Luck - */ -Date.fullYearStart = '20'; - -(function() { - - /** - * Adds a given method under the given name - * to the Date prototype if it doesn't - * currently exist. - * - * @private - */ - function add(name, method) { - if( !Date.prototype[name] ) { - Date.prototype[name] = method; - } - }; - - /** - * Checks if the year is a leap year. - * - * @example var dtm = new Date("01/12/2008"); - * dtm.isLeapYear(); - * @result true - * - * @name isLeapYear - * @type Boolean - * @cat Plugins/Methods/Date - */ - add("isLeapYear", function() { - var y = this.getFullYear(); - return (y%4==0 && y%100!=0) || y%400==0; - }); - - /** - * Checks if the day is a weekend day (Sat or Sun). - * - * @example var dtm = new Date("01/12/2008"); - * dtm.isWeekend(); - * @result false - * - * @name isWeekend - * @type Boolean - * @cat Plugins/Methods/Date - */ - add("isWeekend", function() { - return this.getDay()==0 || this.getDay()==6; - }); - - /** - * Check if the day is a day of the week (Mon-Fri) - * - * @example var dtm = new Date("01/12/2008"); - * dtm.isWeekDay(); - * @result false - * - * @name isWeekDay - * @type Boolean - * @cat Plugins/Methods/Date - */ - add("isWeekDay", function() { - return !this.isWeekend(); - }); - - /** - * Gets the number of days in the month. - * - * @example var dtm = new Date("01/12/2008"); - * dtm.getDaysInMonth(); - * @result 31 - * - * @name getDaysInMonth - * @type Number - * @cat Plugins/Methods/Date - */ - add("getDaysInMonth", function() { - return [31,(this.isLeapYear() ? 29:28),31,30,31,30,31,31,30,31,30,31][this.getMonth()]; - }); - - /** - * Gets the name of the day. - * - * @example var dtm = new Date("01/12/2008"); - * dtm.getDayName(); - * @result 'Saturday' - * - * @example var dtm = new Date("01/12/2008"); - * dtm.getDayName(true); - * @result 'Sat' - * - * @param abbreviated Boolean When set to true the name will be abbreviated. - * @name getDayName - * @type String - * @cat Plugins/Methods/Date - */ - add("getDayName", function(abbreviated) { - return abbreviated ? Date.abbrDayNames[this.getDay()] : Date.dayNames[this.getDay()]; - }); - - /** - * Gets the name of the month. - * - * @example var dtm = new Date("01/12/2008"); - * dtm.getMonthName(); - * @result 'Janurary' - * - * @example var dtm = new Date("01/12/2008"); - * dtm.getMonthName(true); - * @result 'Jan' - * - * @param abbreviated Boolean When set to true the name will be abbreviated. - * @name getDayName - * @type String - * @cat Plugins/Methods/Date - */ - add("getMonthName", function(abbreviated) { - return abbreviated ? Date.abbrMonthNames[this.getMonth()] : Date.monthNames[this.getMonth()]; - }); - - /** - * Get the number of the day of the year. - * - * @example var dtm = new Date("01/12/2008"); - * dtm.getDayOfYear(); - * @result 11 - * - * @name getDayOfYear - * @type Number - * @cat Plugins/Methods/Date - */ - add("getDayOfYear", function() { - var tmpdtm = new Date("1/1/" + this.getFullYear()); - return Math.floor((this.getTime() - tmpdtm.getTime()) / 86400000); - }); - - /** - * Get the number of the week of the year. - * - * @example var dtm = new Date("01/12/2008"); - * dtm.getWeekOfYear(); - * @result 2 - * - * @name getWeekOfYear - * @type Number - * @cat Plugins/Methods/Date - */ - add("getWeekOfYear", function() { - return Math.ceil(this.getDayOfYear() / 7); - }); - - /** - * Set the day of the year. - * - * @example var dtm = new Date("01/12/2008"); - * dtm.setDayOfYear(1); - * dtm.toString(); - * @result 'Tue Jan 01 2008 00:00:00' - * - * @name setDayOfYear - * @type Date - * @cat Plugins/Methods/Date - */ - add("setDayOfYear", function(day) { - this.setMonth(0); - this.setDate(day); - return this; - }); - - /** - * Add a number of years to the date object. - * - * @example var dtm = new Date("01/12/2008"); - * dtm.addYears(1); - * dtm.toString(); - * @result 'Mon Jan 12 2009 00:00:00' - * - * @name addYears - * @type Date - * @cat Plugins/Methods/Date - */ - add("addYears", function(num) { - this.setFullYear(this.getFullYear() + num); - return this; - }); - - /** - * Add a number of months to the date object. - * - * @example var dtm = new Date("01/12/2008"); - * dtm.addMonths(1); - * dtm.toString(); - * @result 'Tue Feb 12 2008 00:00:00' - * - * @name addMonths - * @type Date - * @cat Plugins/Methods/Date - */ - add("addMonths", function(num) { - var tmpdtm = this.getDate(); - - this.setMonth(this.getMonth() + num); - - if (tmpdtm > this.getDate()) - this.addDays(-this.getDate()); - - return this; - }); - - /** - * Add a number of days to the date object. - * - * @example var dtm = new Date("01/12/2008"); - * dtm.addDays(1); - * dtm.toString(); - * @result 'Sun Jan 13 2008 00:00:00' - * - * @name addDays - * @type Date - * @cat Plugins/Methods/Date - */ - add("addDays", function(num) { - //this.setDate(this.getDate() + num); - this.setTime(this.getTime() + (num*86400000) ); - return this; - }); - - /** - * Add a number of hours to the date object. - * - * @example var dtm = new Date("01/12/2008"); - * dtm.addHours(24); - * dtm.toString(); - * @result 'Sun Jan 13 2008 00:00:00' - * - * @name addHours - * @type Date - * @cat Plugins/Methods/Date - */ - add("addHours", function(num) { - this.setHours(this.getHours() + num); - return this; - }); - - /** - * Add a number of minutes to the date object. - * - * @example var dtm = new Date("01/12/2008"); - * dtm.addMinutes(60); - * dtm.toString(); - * @result 'Sat Jan 12 2008 01:00:00' - * - * @name addMinutes - * @type Date - * @cat Plugins/Methods/Date - */ - add("addMinutes", function(num) { - this.setMinutes(this.getMinutes() + num); - return this; - }); - - /** - * Add a number of seconds to the date object. - * - * @example var dtm = new Date("01/12/2008"); - * dtm.addSeconds(60); - * dtm.toString(); - * @result 'Sat Jan 12 2008 00:01:00' - * - * @name addSeconds - * @type Date - * @cat Plugins/Methods/Date - */ - add("addSeconds", function(num) { - this.setSeconds(this.getSeconds() + num); - return this; - }); - - /** - * Sets the time component of this Date to zero for cleaner, easier comparison of dates where time is not relevant. - * - * @example var dtm = new Date(); - * dtm.zeroTime(); - * dtm.toString(); - * @result 'Sat Jan 12 2008 00:01:00' - * - * @name zeroTime - * @type Date - * @cat Plugins/Methods/Date - * @author Kelvin Luck - */ - add("zeroTime", function() { - this.setMilliseconds(0); - this.setSeconds(0); - this.setMinutes(0); - this.setHours(0); - return this; - }); - - /** - * Returns a string representation of the date object according to Date.format. - * (Date.toString may be used in other places so I purposefully didn't overwrite it) - * - * @example var dtm = new Date("01/12/2008"); - * dtm.asString(); - * @result '12/01/2008' // (where Date.format == 'dd/mm/yyyy' - * - * @name asString - * @type Date - * @cat Plugins/Methods/Date - * @author Kelvin Luck - */ - add("asString", function(format) { - var r = format || Date.format; - if (r.split('mm').length>1) { // ugly workaround to make sure we don't replace the m's in e.g. noveMber - r = r.split('mmmm').join(this.getMonthName(false)) - .split('mmm').join(this.getMonthName(true)) - .split('mm').join(_zeroPad(this.getMonth()+1)) - } else { - r = r.split('m').join(this.getMonth()+1); - } - r = r.split('yyyy').join(this.getFullYear()) - .split('yy').join((this.getFullYear() + '').substring(2)) - .split('dd').join(_zeroPad(this.getDate())) - .split('d').join(this.getDate()); - return r; - }); - - /** - * Returns a new date object created from the passed String according to Date.format or false if the attempt to do this results in an invalid date object - * (We can't simple use Date.parse as it's not aware of locale and I chose not to overwrite it incase it's functionality is being relied on elsewhere) - * - * @example var dtm = Date.fromString("12/01/2008"); - * dtm.toString(); - * @result 'Sat Jan 12 2008 00:00:00' // (where Date.format == 'dd/mm/yyyy' - * - * @name fromString - * @type Date - * @cat Plugins/Methods/Date - * @author Kelvin Luck - */ - Date.fromString = function(s) - { - var f = Date.format; - - var d = new Date('01/01/1970'); - - if (s == '') return d; - - s = s.toLowerCase(); - var matcher = ''; - var order = []; - var r = /(dd?d?|mm?m?|yy?yy?)+([^(m|d|y)])?/g; - var results; - while ((results = r.exec(f)) != null) - { - switch (results[1]) { - case 'd': - case 'dd': - case 'm': - case 'mm': - case 'yy': - case 'yyyy': - matcher += '(\\d+\\d?\\d?\\d?)+'; - order.push(results[1].substr(0, 1)); - break; - case 'mmm': - matcher += '([a-z]{3})'; - order.push('M'); - break; - } - if (results[2]) { - matcher += results[2]; - } - - } - var dm = new RegExp(matcher); - var result = s.match(dm); - for (var i=0; i<order.length; i++) { - var res = result[i+1]; - switch(order[i]) { - case 'd': - d.setDate(res); - break; - case 'm': - d.setMonth(Number(res)-1); - break; - case 'M': - for (var j=0; j<Date.abbrMonthNames.length; j++) { - if (Date.abbrMonthNames[j].toLowerCase() == res) break; - } - d.setMonth(j); - break; - case 'y': - d.setYear(res); - break; - } - } - - return d; - }; - - // utility method - var _zeroPad = function(num) { - var s = '0'+num; - return s.substring(s.length-2) - //return ('0'+num).substring(-2); // doesn't work on IE :( - }; - -})();
\ No newline at end of file |
