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