]> err.no Git - scalable-opengroupware.org/blob - UI/WebServerResources/JavascriptAPIExtensions.js
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1150 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / UI / WebServerResources / JavascriptAPIExtensions.js
1 String.prototype.trim = function() {
2   return this.replace(/(^\s+|\s+$)/g, '');
3 }
4
5 String.prototype.formatted = function() {
6   var newString = this;
7
8   for (var i = 0; i < arguments.length; i++)
9     newString = newString.replace("%{" + i + "}", arguments[i], "g");
10
11   return newString;
12 }
13
14 String.prototype.repeat = function(count) {
15    var newString = "";
16    for (var i = 0; i < count; i++) {
17       newString += this;
18    }
19
20    return newString;
21 }
22
23 String.prototype.capitalize = function() {
24   return this.replace(/\w+/g,
25                       function(a) {
26                         return ( a.charAt(0).toUpperCase()
27                                  + a.substr(1).toLowerCase() );
28                       });
29 }
30
31 String.prototype.decodeEntities = function() {
32   return this.replace(/&#(\d+);/g,
33                       function(wholematch, parenmatch1) {
34                         return String.fromCharCode(+parenmatch1);
35                       });
36 }
37
38 String.prototype.asDate = function () {
39   var newDate;
40   var date = this.split("/");
41   if (date.length == 3)
42     newDate = new Date(date[2], date[1] - 1, date[0]);
43   else {
44     date = this.split("-");
45     if (date.length == 3)
46        newDate = new Date(date[0], date[1] - 1, date[2]);
47     else {
48        if (this.length == 8) {
49           newDate = new Date(this.substring(0, 4),
50                              this.substring(4, 6) - 1,
51                              this.substring(6, 8));
52        }
53     }
54   }
55
56   return newDate;  
57 }
58
59 Date.prototype.sogoDayName = function() {
60   var dayName = "";
61
62   var day = this.getDay();
63   if (day == 0) {
64     dayName = labels['a2_Sunday'];
65   } else if (day == 1) {
66     dayName = labels['a2_Monday'];
67   } else if (day == 2) {
68     dayName = labels['a2_Tuesday'];
69   } else if (day == 3) {
70     dayName = labels['a2_Wednesday'];
71   } else if (day == 4) {
72     dayName = labels['a2_Thursday'];
73   } else if (day == 5) {
74     dayName = labels['a2_Friday'];
75   } else if (day == 6) {
76     dayName = labels['a2_Saturday'];
77   }
78
79   return dayName;
80 }
81
82 Date.prototype.daysUpTo = function(otherDate) {
83   var days = new Array();
84
85   var day1 = this.getTime();
86   var day2 = otherDate.getTime();
87
88   var nbrDays = Math.floor((day2 - day1) / 86400000) + 1;
89   for (var i = 0; i < nbrDays; i++) {
90     var newDate = new Date();
91     newDate.setTime(day1 + (i * 86400000));
92     days.push(newDate);
93   }
94
95   return days;
96 }
97
98 Date.prototype.getDayString = function() {
99    var newString = this.getYear();
100    if (newString < 1000) newString += 1900;
101    var month = '' + (this.getMonth() + 1);
102    if (month.length == 1)
103      month = '0' + month;
104    newString += month;
105    var day = '' + this.getDate();
106    if (day.length == 1)
107      day = '0' + day;
108    newString += day;
109
110    return newString;
111 }
112
113 Date.prototype.getHourString = function() {
114    var newString = this.getHours() + '00';
115    if (newString.length == 3)
116      newString = '0' + newString;
117
118    return newString;
119 }
120
121 Date.prototype.getDisplayHoursString = function() {
122    var hoursString = "" + this.getHours();
123    if (hoursString.length == 1)
124      hoursString = '0' + hoursString;
125
126    var minutesString = "" + this.getMinutes();
127    if (minutesString.length == 1)
128      minutesString = '0' + minutesString;
129
130    return hoursString + ":" + minutesString;
131 }
132
133 Date.prototype.stringWithSeparator = function(separator) {
134   var month = '' + (this.getMonth() + 1);
135   var day = '' + this.getDate();
136   var year = this.getYear();
137   if (year < 1000)
138     year = '' + (year + 1900);
139   if (month.length == 1)
140     month = '0' + month;
141   if (day.length == 1)
142     day = '0' + day;
143
144   if (separator == '-')
145     str = year + '-' + month + '-' + day;
146   else
147     str = day + '/' + month + '/' + year;
148
149   return str;
150 }
151
152 Date.prototype.sogoFreeBusyStringWithSeparator = function(separator) {
153   return this.sogoDayName() + ", " + this.stringWithSeparator(separator);
154 }
155
156 Date.prototype.addDays = function(nbrDays) {
157    var milliSeconds = this.getTime();
158    milliSeconds += 86400000 * nbrDays;
159    this.setTime(milliSeconds);
160 }
161
162 Date.prototype.earlierDate = function(otherDate) {
163    var workDate = new Date();
164    workDate.setTime(otherDate.getTime());
165    workDate.setHours(0);
166    return ((this.getTime() < workDate.getTime())
167            ? this : otherDate);
168 }
169
170 Date.prototype.laterDate = function(otherDate) {
171    var workDate = new Date();
172    workDate.setTime(otherDate.getTime());
173    workDate.setHours(23);
174    workDate.setMinutes(59);
175    workDate.setSeconds(59);
176    workDate.setMilliseconds(999);
177    return ((this.getTime() < workDate.getTime())
178            ? otherDate : this);
179 }
180
181 Date.prototype.beginOfWeek = function() {
182    var beginNumber;
183    var dayNumber = this.getDay();
184    if (weekStartIsMonday) {
185      beginNumber = 1;
186      if (dayNumber == 0)
187         dayNumber = 7;
188    }
189    else
190      beginNumber = 0;
191
192    var beginOfWeek = new Date();
193    beginOfWeek.setTime(this.getTime());
194    beginOfWeek.addDays(beginNumber - dayNumber);
195    beginOfWeek.setHours(0);
196    beginOfWeek.setMinutes(0);
197    beginOfWeek.setSeconds(0);
198    beginOfWeek.setMilliseconds(0);
199
200    return beginOfWeek;
201 }
202
203 Date.prototype.endOfWeek = function() {
204    var beginNumber;
205    var dayNumber = this.getDay();
206    if (weekStartIsMonday) {
207       beginNumber = 1;
208       if (dayNumber == 0)
209          dayNumber = 7;
210    }
211    else
212       beginNumber = 0;
213
214    var endOfWeek = new Date();
215    endOfWeek.setTime(this.getTime());
216    endOfWeek.addDays(6 + beginNumber - dayNumber);
217
218    endOfWeek.setHours(23);
219    endOfWeek.setMinutes(59);
220    endOfWeek.setSeconds(59);
221    endOfWeek.setMilliseconds(999);
222
223    return endOfWeek;
224 }