From 20bea94ab6b91c85b171dcf86baba0a64169d508 Mon Sep 17 00:00:00 2001 From: Giulio Cesare Solaroli Date: Fri, 30 Aug 2013 15:56:53 +0000 Subject: First release of /delta version --- (limited to 'frontend/delta/js/Clipperz/Date.js') diff --git a/frontend/delta/js/Clipperz/Date.js b/frontend/delta/js/Clipperz/Date.js new file mode 100644 index 0000000..163790e --- a/dev/null +++ b/frontend/delta/js/Clipperz/Date.js @@ -0,0 +1,297 @@ +/* + +Copyright 2008-2013 Clipperz Srl + +This file is part of Clipperz, the online password manager. +For further information about its features and functionalities please +refer to http://www.clipperz.com. + +* Clipperz is free software: you can redistribute it and/or modify it + under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + +* Clipperz is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Affero General Public License for more details. + +* You should have received a copy of the GNU Affero General Public + License along with Clipperz. If not, see http://www.gnu.org/licenses/. + +*/ + +if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } +if (typeof(Clipperz.Date) == 'undefined') { Clipperz.Date = {}; } + +Clipperz.Date.VERSION = "0.1"; +Clipperz.Date.NAME = "Clipperz.Date"; + +MochiKit.Base.update(Clipperz.Date, { + + //------------------------------------------------------------------------- + + '__repr__': function () { + return "[" + this.NAME + " " + this.VERSION + "]"; + }, + + //------------------------------------------------------------------------- + + 'toString': function () { + return this.__repr__(); + }, + + //------------------------------------------------------------------------- + + 'daysInMonth': [31,28,31,30,31,30,31,31,30,31,30,31], + + //------------------------------------------------------------------------- + + 'englishOrdinalDaySuffixForDate': function(aDate) { + var result; + + switch (aDate.getDate()) { + case 1: + case 21: + case 31: + result = "st"; + break; + case 2: + case 22: + result = "nd"; + break; + case 3: + case 23: + result = "rd"; + break; + default: + result = "th"; + break; + } + + return result; + }, + + //------------------------------------------------------------------------- + + 'isLeapYear': function(aDate) { + var year; + var result; + + year = aDate.getFullYear(); + result = ((year & 0x03) == 0 && (year % 100 || (year % 400 == 0 && year))); + + return result; + }, + + //------------------------------------------------------------------------- + + 'getDaysInMonth': function(aDate) { + var result; + + if (aDate.getMonth() == 1) { + Clipperz.Date.isLeapYear(aDate) + result += Clipperz.Date.isLeapYear(aDate) ? 29 : 28; + } else { + result = Clipperz.Date.daysInMonth[aDate.getMonth()]; + } + + return result; + }, + + //------------------------------------------------------------------------- + + 'getTimezone': function(aDate) { + var result; + + result = aDate.toString(); + result = result.replace(/([A-Z]{3}) [0-9]{4}/, '$1'); + result = result.replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/, "$1$2$3"); + + return result; + }, + + 'getGMTOffset': function(aDate) { + return (aDate.getTimezoneOffset() > 0 ? "-" : "+") + MochiKit.Format.numberFormatter('00')(Math.floor(this.getTimezoneOffset() / 60)) + + MochiKit.Format.numberFormatter('00')(this.getTimezoneOffset() % 60); + }, + + //------------------------------------------------------------------------- + + 'dayOfYear': function(aDate) { + var result; + var i,c; + + result = 0; + c = aDate.getMonth(); + for (i=0; i