nielsm-calendar_date_select 1.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. data/History.txt +234 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Manifest.txt +42 -0
  4. data/Rakefile +31 -0
  5. data/Readme.txt +16 -0
  6. data/init.rb +1 -0
  7. data/js_test/functional/cds_test.html +334 -0
  8. data/js_test/prototype.js +4184 -0
  9. data/js_test/test.css +40 -0
  10. data/js_test/unit/cds_helper_methods.html +46 -0
  11. data/js_test/unittest.js +564 -0
  12. data/lib/calendar_date_select.rb +34 -0
  13. data/lib/calendar_date_select/calendar_date_select.rb +116 -0
  14. data/lib/calendar_date_select/includes_helper.rb +29 -0
  15. data/public/blank_iframe.html +2 -0
  16. data/public/images/calendar_date_select/calendar.gif +0 -0
  17. data/public/javascripts/calendar_date_select/calendar_date_select.js +443 -0
  18. data/public/javascripts/calendar_date_select/format_american.js +34 -0
  19. data/public/javascripts/calendar_date_select/format_db.js +27 -0
  20. data/public/javascripts/calendar_date_select/format_euro_24hr.js +7 -0
  21. data/public/javascripts/calendar_date_select/format_euro_24hr_ymd.js +7 -0
  22. data/public/javascripts/calendar_date_select/format_finnish.js +32 -0
  23. data/public/javascripts/calendar_date_select/format_hyphen_ampm.js +36 -0
  24. data/public/javascripts/calendar_date_select/format_iso_date.js +46 -0
  25. data/public/javascripts/calendar_date_select/format_italian.js +24 -0
  26. data/public/javascripts/calendar_date_select/locale/de.js +11 -0
  27. data/public/javascripts/calendar_date_select/locale/fi.js +10 -0
  28. data/public/javascripts/calendar_date_select/locale/fr.js +10 -0
  29. data/public/javascripts/calendar_date_select/locale/pl.js +10 -0
  30. data/public/javascripts/calendar_date_select/locale/pt.js +11 -0
  31. data/public/javascripts/calendar_date_select/locale/ru.js +10 -0
  32. data/public/stylesheets/calendar_date_select/blue.css +130 -0
  33. data/public/stylesheets/calendar_date_select/default.css +135 -0
  34. data/public/stylesheets/calendar_date_select/plain.css +128 -0
  35. data/public/stylesheets/calendar_date_select/red.css +135 -0
  36. data/public/stylesheets/calendar_date_select/silver.css +133 -0
  37. metadata +100 -0
@@ -0,0 +1,34 @@
1
+ // American Format: 12/31/2000 5:00 pm
2
+ // Thanks, Wes Hays
3
+ Date.prototype.toFormattedString = function(include_time){
4
+ str = Date.padded2(this.getMonth() + 1) + '/' +Date.padded2(this.getDate()) + '/' + this.getFullYear();
5
+
6
+ if (include_time) { hour=this.getHours(); str += " " + this.getAMPMHour() + ":" + this.getPaddedMinutes() + " " + this.getAMPM() }
7
+ return str;
8
+ }
9
+
10
+ Date.parseFormattedString = function (string) {
11
+ // Test these with and without the time
12
+ // 11/11/1111 12pm
13
+ // 11/11/1111 1pm
14
+ // 1/11/1111 10:10pm
15
+ // 11/1/1111 01pm
16
+ // 1/1/1111 01:11pm
17
+ // 1/1/1111 1:11pm
18
+ var regexp = "(([0-1]?[0-9])\/[0-3]?[0-9]\/[0-9]{4}) *([0-9]{1,2}(:[0-9]{2})? *(am|pm))?";
19
+ var d = string.match(new RegExp(regexp, "i"));
20
+ if (d==null) {
21
+ return Date.parse(string); // Give javascript a chance to parse it.
22
+ }
23
+
24
+ mdy = d[1].split('/');
25
+ hrs = 0;
26
+ mts = 0;
27
+ if(d[3] != null) {
28
+ hrs = parseInt(d[3].split('')[0], 10);
29
+ if(d[5].toLowerCase() == 'pm') { hrs += 12; } // Add 12 more to hrs
30
+ mts = d[4].split(':')[1];
31
+ }
32
+
33
+ return new Date(mdy[2], parseInt(mdy[0], 10)-1, mdy[1], hrs, mts, 0);
34
+ }
@@ -0,0 +1,27 @@
1
+ // DB No Seconds Format: 2007-12-05 12:00
2
+
3
+ Date.padded2 = function(hour) { padded2 = hour.toString(); if ((parseInt(hour) < 10) || (parseInt(hour) == null)) padded2="0" + padded2; return padded2; }
4
+ Date.prototype.getAMPMHour = function() { hour=Date.padded2(this.getHours()); return (hour == null) ? 00 : (hour > 24 ? hour - 24 : hour ) }
5
+ Date.prototype.getAMPM = function() { return (this.getHours() < 12) ? "" : ""; }
6
+
7
+ Date.prototype.toFormattedString = function(include_time){
8
+ str = this.getFullYear() + "-" + (this.getMonth() + 1) + "-" + Date.padded2(this.getDate());
9
+ if (include_time) { hour=this.getHours(); str += " " + this.getAMPMHour() + ":" + this.getPaddedMinutes() }
10
+ return str;
11
+ }
12
+
13
+ Date.parseFormattedString = function (string) {
14
+ var regexp = '([0-9]{4})-(([0-9]{1,2})-(([0-9]{1,2})( ([0-9]{1,2}):([0-9]{2})? *)?)?)?';
15
+ var d = string.match(new RegExp(regexp, "i"));
16
+ if (d==null) return Date.parse(string); // at least give javascript a crack at it.
17
+ var offset = 0;
18
+ var date = new Date(d[1], 0, 1);
19
+ if (d[3]) { date.setMonth(d[3] - 1); }
20
+ if (d[5]) { date.setDate(d[5]); }
21
+ if (d[7]) {
22
+ date.setHours(parseInt(d[7], 10));
23
+ }
24
+ if (d[8]) { date.setMinutes(d[8]); }
25
+ if (d[10]) { date.setSeconds(d[10]); }
26
+ return date;
27
+ }
@@ -0,0 +1,7 @@
1
+ // Formats date and time as "01 January 2000 17:00"
2
+ Date.prototype.toFormattedString = function(include_time)
3
+ {
4
+ str = Date.padded2(this.getDate()) + " " + Date.months[this.getMonth()] + " " + this.getFullYear();
5
+ if (include_time) { str += " " + this.getHours() + ":" + this.getPaddedMinutes() }
6
+ return str;
7
+ }
@@ -0,0 +1,7 @@
1
+ // Formats date and time as "2000.01.20 17:00"
2
+ Date.prototype.toFormattedString = function(include_time)
3
+ {
4
+ str = this.getFullYear() + "." + Date.padded2(this.getMonth()+1) + "." + Date.padded2(this.getDate());
5
+ if (include_time) { str += " " + this.getHours() + ":" + this.getPaddedMinutes() }
6
+ return str;
7
+ }
@@ -0,0 +1,32 @@
1
+ Date.padded2 = function(hour) { padded2 = hour.toString(); if ((parseInt(hour) < 10) || (parseInt(hour) == null)) padded2="0" + padded2; return padded2; }
2
+ Date.prototype.getAMPMHour = function() { hour=Date.padded2(this.getHours()); return (hour == null) ? 00 : (hour > 24 ? hour - 24 : hour ) }
3
+ Date.prototype.getAMPM = function() { return (this.getHours() < 12) ? "" : ""; }
4
+
5
+ Date.prototype.toFormattedString = function(include_time){
6
+ str = this.getDate() + "." + (this.getMonth() + 1) + "." + this.getFullYear();
7
+ if (include_time) { hour=this.getHours(); str += " " + this.getAMPMHour() + ":" + this.getPaddedMinutes() }
8
+ return str;
9
+ }
10
+ Date.parseFormattedString = function (string) {
11
+ var regexp = '([0-9]{1,2})\.(([0-9]{1,2})\.(([0-9]{2,4})( ([0-9]{1,2}):([0-9]{2})? *)?)?)?';
12
+ var d = string.match(new RegExp(regexp, "i"));
13
+ if (d==null) return Date.parse(string); // at least give javascript a crack at it.
14
+ var offset = 0;
15
+ if (d[5] && d[5].length == 2) {
16
+ // we got only two digits for the year...
17
+ d[5] = Number(d[5]);
18
+ if (d[5] > 30)
19
+ d[5] += 1900;
20
+ else
21
+ d[5] += 2000;
22
+ }
23
+ var date = new Date(d[5], 0, 1);
24
+ if (d[3]) { date.setMonth(d[3] - 1); }
25
+ if (d[5]) { date.setDate(d[1]); }
26
+ if (d[7]) {
27
+ date.setHours(parseInt(d[7], 10));
28
+ }
29
+ if (d[8]) { date.setMinutes(d[8]); }
30
+ if (d[10]) { date.setSeconds(d[10]); }
31
+ return date;
32
+ }
@@ -0,0 +1,36 @@
1
+ Date.prototype.toFormattedString = function(include_time){
2
+ str = this.getFullYear() + "-" + Date.padded2(this.getMonth() + 1) + "-" +Date.padded2(this.getDate());
3
+
4
+ if (include_time) { hour=this.getHours(); str += " " + this.getAMPMHour() + ":" + this.getPaddedMinutes() + " " + this.getAMPM() }
5
+ return str;
6
+ }
7
+
8
+ Date.parseFormattedString = function (string) {
9
+ var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
10
+ "( ([0-9]{1,2}):([0-9]{2})? *(pm|am)" +
11
+ "?)?)?)?";
12
+ var d = string.match(new RegExp(regexp, "i"));
13
+ if (d==null) return Date.parse(string); // at least give javascript a crack at it.
14
+ var offset = 0;
15
+ var date = new Date(d[1], 0, 1);
16
+ if (d[3]) { date.setMonth(d[3] - 1); }
17
+ if (d[5]) { date.setDate(d[5]); }
18
+ if (d[7]) {
19
+ hours = parseInt(d[7], 10);
20
+ offset=0;
21
+ is_pm = (d[9].toLowerCase()=="pm")
22
+ if (is_pm && hours <= 11) hours+=12;
23
+ if (!is_pm && hours == 12) hours=0;
24
+ date.setHours(hours);
25
+
26
+ }
27
+ if (d[8]) { date.setMinutes(d[8]); }
28
+ if (d[10]) { date.setSeconds(d[10]); }
29
+ if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); }
30
+ if (d[14]) {
31
+ offset = (Number(d[16]) * 60) + Number(d[17]);
32
+ offset *= ((d[15] == '-') ? 1 : -1);
33
+ }
34
+
35
+ return date;
36
+ }
@@ -0,0 +1,46 @@
1
+ Date.prototype.toFormattedString = function(include_time) {
2
+ var hour;
3
+ var str = this.getFullYear() + "-" + Date.padded2(this.getMonth() + 1) + "-" +Date.padded2(this.getDate());
4
+ if (include_time) {
5
+ hour = this.getHours();
6
+ str += " " + this.getHours() + ":" + this.getPaddedMinutes();
7
+ }
8
+ return str;
9
+ };
10
+
11
+ Date.parseFormattedString = function (string) {
12
+
13
+ var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
14
+ "( ([0-9]{1,2}):([0-9]{2})?" +
15
+ "?)?)?)?";
16
+
17
+ var d = string.match(new RegExp(regexp, "i"));
18
+ if (d === null) {
19
+ return Date.parse(string); // at least give javascript a crack at it.
20
+ }
21
+ var offset = 0;
22
+ var date = new Date(d[1], 0, 1);
23
+ if (d[3]) {
24
+ date.setMonth(d[3] - 1);
25
+ }
26
+ if (d[5]) {
27
+ date.setDate(d[5]);
28
+ }
29
+ if (d[7]) {
30
+ date.setHours(d[7]);
31
+ }
32
+ if (d[8]) {
33
+ date.setMinutes(d[8]);
34
+ }
35
+ if (d[0]) {
36
+ date.setSeconds(d[0]);
37
+ }
38
+ if (d[2]) {
39
+ date.setMilliseconds(Number("0." + d[2]));
40
+ }
41
+ if (d[4]) {
42
+ offset = (Number(d[6])) + Number(d[8]);
43
+ offset = ((d[5] == '-') ? 1 : -1);
44
+ }
45
+ return date;
46
+ };
@@ -0,0 +1,24 @@
1
+ // Italian Format: 31/12/2000 23:00
2
+ // Thanks, Bigonazzi!
3
+
4
+ Date.prototype.toFormattedString = function(include_time){
5
+ str = this.getDate() + "/" + (this.getMonth() + 1) + "/" + this.getFullYear();
6
+ if (include_time) { str += " " + this.getHours() + ":" + this.getPaddedMinutes() }
7
+ return str;
8
+ }
9
+
10
+ Date.parseFormattedString = function (string) {
11
+ var regexp = '([0-9]{1,2})/(([0-9]{1,2})/(([0-9]{4})( ([0-9]{1,2}):([0-9]{2})? *)?)?)?';
12
+ var d = string.match(new RegExp(regexp, "i"));
13
+ if (d==null) return Date.parse(string); // at least give javascript a crack at it.
14
+ var offset = 0;
15
+ var date = new Date(d[5], 0, 1);
16
+ if (d[3]) { date.setMonth(d[3] - 1); }
17
+ if (d[5]) { date.setDate(d[1]); }
18
+ if (d[7]) {
19
+ date.setHours(parseInt(d[7], 10));
20
+ }
21
+ if (d[8]) { date.setMinutes(d[8]); }
22
+ if (d[10]) { date.setSeconds(d[10]); }
23
+ return date;
24
+ }
@@ -0,0 +1,11 @@
1
+ Date.weekdays = $w('Mo Di Mi Do Fr Sa So');
2
+ Date.months = $w('Januar Februar März April Mai Juni Juli August September Oktober November Dezember');
3
+
4
+ Date.first_day_of_week = 1;
5
+
6
+ _translations = {
7
+ "OK": "OK",
8
+ "Now": "Jetzt",
9
+ "Today": "Heute",
10
+ "Clear": "Löschen"
11
+ }
@@ -0,0 +1,10 @@
1
+ Date.weekdays = $w("Ma Ti Ke To Pe La Su");
2
+ Date.months = $w("Tammikuu Helmikuu Maaliskuu Huhtikuu Toukokuu Kes�kuu Hein�kuu Elokuu Syyskuu Lokakuu Marraskuu Joulukuu" );
3
+
4
+ Date.first_day_of_week = 1
5
+
6
+ _translations = {
7
+ "OK": "OK",
8
+ "Now": "Nyt",
9
+ "Today": "T�n��n"
10
+ }
@@ -0,0 +1,10 @@
1
+ Date.weekdays = $w('L Ma Me J V S D');
2
+ Date.months = $w('Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre');
3
+
4
+ Date.first_day_of_week = 1;
5
+
6
+ _translations = {
7
+ "OK": "OK",
8
+ "Now": "Maintenant",
9
+ "Today": "Aujourd'hui"
10
+ }
@@ -0,0 +1,10 @@
1
+ Date.weekdays = $w('P W Ś C P S N');
2
+ Date.months = $w('Styczeń Luty Marzec Kwiecień Maj Czerwiec Lipiec Sierpień Wrzesień Październik Listopad Grudzień');
3
+
4
+ Date.first_day_of_week = 1
5
+
6
+ _translations = {
7
+ "OK": "OK",
8
+ "Now": "Teraz",
9
+ "Today": "Dziś"
10
+ }
@@ -0,0 +1,11 @@
1
+ Date.weekdays = $w('D S T Q Q S S');
2
+ Date.months = $w('Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro');
3
+
4
+ Date.first_day_of_week = 0
5
+
6
+ _translations = {
7
+ "OK": "OK",
8
+ "Now": "Agora",
9
+ "Today": "Hoje",
10
+ "Clear": "Limpar"
11
+ }
@@ -0,0 +1,10 @@
1
+ Date.weekdays = $w('Пн Вт Ср Чт Пт Сб Вс');
2
+ Date.months = $w('Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь');
3
+
4
+ Date.first_day_of_week = 1
5
+
6
+ _translations = {
7
+ "OK": "OK",
8
+ "Now": "Сейчас",
9
+ "Today": "Сегодня"
10
+ }
@@ -0,0 +1,130 @@
1
+ .calendar_date_select {
2
+ color:white;
3
+ border:#777 1px solid;
4
+ display:block;
5
+ width:195px;
6
+ z-index: 1000;
7
+ }
8
+ /* this is a fun ie6 hack to get drop downs to stay behind the popup window. This should always be just underneath .calendar_date_select */
9
+ iframe.ie6_blocker {
10
+ position: absolute;
11
+ z-index: 999;
12
+ }
13
+
14
+ .calendar_date_select thead th {
15
+ font-weight:bold;
16
+ background-color: #000;
17
+ border-top:1px solid #777;
18
+ border-bottom:2px solid #334;
19
+ color: white !important;
20
+ }
21
+
22
+ .calendar_date_select .cds_buttons {
23
+ text-align:center;
24
+ padding:5px 0px;
25
+ background-color: #000055;
26
+ }
27
+
28
+ .calendar_date_select .cds_footer {
29
+ background-color: black;
30
+ padding:3px;
31
+ font-size:12px;
32
+ text-align:center;
33
+ }
34
+
35
+ .calendar_date_select table {
36
+ margin: 0px;
37
+ padding: 0px;
38
+ }
39
+
40
+
41
+ .calendar_date_select .cds_header {
42
+ background-color: #ccc;
43
+ border-bottom: 2px solid #aaa;
44
+ text-align:center;
45
+ }
46
+
47
+ .calendar_date_select .cds_header span {
48
+ font-size:15px;
49
+ color: black;
50
+ font-weight: bold;
51
+ }
52
+
53
+ .calendar_date_select select { font-size:11px;}
54
+
55
+ .calendar_date_select .cds_header a:hover {
56
+ color: white;
57
+ }
58
+ .calendar_date_select .cds_header a {
59
+ width:22px;
60
+ height:20px;
61
+ text-decoration: none;
62
+ font-size:14px;
63
+ color:black !important;
64
+ }
65
+
66
+ .calendar_date_select .cds_header a.prev {
67
+ float:left;
68
+ }
69
+
70
+ .calendar_date_select .cds_header a.next {
71
+ float:right;
72
+ }
73
+
74
+ .calendar_date_select .cds_header a.close {
75
+ float:right;
76
+ display:none;
77
+ }
78
+
79
+
80
+ .calendar_date_select .cds_header select.month {
81
+ width:90px;
82
+ }
83
+
84
+ .calendar_date_select .cds_header select.year {
85
+ width:61px;
86
+ }
87
+
88
+ .calendar_date_select .cds_buttons a {
89
+ color: white;
90
+ font-size: 9px;
91
+ }
92
+
93
+ .calendar_date_select td {
94
+ background-color: #000066;
95
+ font-size:12px;
96
+ width: 24px;
97
+ height: 21px;
98
+ text-align:center;
99
+ vertical-align: middle;
100
+ }
101
+ .calendar_date_select td.weekend {
102
+ background-color: #00005a;
103
+ }
104
+
105
+ .calendar_date_select td div.other {
106
+ color: #4C5593;
107
+ }
108
+
109
+ .calendar_date_select tbody td {
110
+ border-bottom: 1px solid #000044;
111
+ }
112
+ .calendar_date_select td.selected {
113
+ background-color:white;
114
+ color:black;
115
+ }
116
+
117
+ .calendar_date_select td:hover {
118
+ background-color:#ccc;
119
+ }
120
+
121
+ .calendar_date_select td.disabled div {
122
+ color: #000044;
123
+ }
124
+ .calendar_date_select td.today {
125
+ border: 1px dashed blue;
126
+ }
127
+
128
+ .fieldWithErrors .calendar_date_select {
129
+ border: 2px solid red;
130
+ }
@@ -0,0 +1,135 @@
1
+ .calendar_date_select {
2
+ color:white;
3
+ border:#777 1px solid;
4
+ display:block;
5
+ width:195px;
6
+ z-index: 1000;
7
+ }
8
+ /* this is a fun ie6 hack to get drop downs to stay behind the popup window. This should always be just underneath .calendar_date_select */
9
+ iframe.ie6_blocker {
10
+ position: absolute;
11
+ z-index: 999;
12
+ }
13
+
14
+ .calendar_date_select thead th {
15
+ font-weight:bold;
16
+ background-color: #aaa;
17
+ border-top:1px solid #777;
18
+ border-bottom:1px solid #777;
19
+ color: white !important;
20
+ }
21
+
22
+ .calendar_date_select .cds_buttons {
23
+ text-align:center;
24
+ padding:5px 0px;
25
+ background-color: #555;
26
+ }
27
+
28
+ .calendar_date_select .cds_footer {
29
+ background-color: black;
30
+ padding:3px;
31
+ font-size:12px;
32
+ text-align:center;
33
+ }
34
+
35
+ .calendar_date_select table {
36
+ margin: 0px;
37
+ padding: 0px;
38
+ }
39
+
40
+
41
+ .calendar_date_select .cds_header {
42
+ background-color: #ccc;
43
+ border-bottom: 2px solid #aaa;
44
+ text-align:center;
45
+ }
46
+
47
+ .calendar_date_select .cds_header span {
48
+ font-size:15px;
49
+ color: black;
50
+ font-weight: bold;
51
+ }
52
+
53
+ .calendar_date_select select { font-size:11px;}
54
+
55
+ .calendar_date_select .cds_header a:hover {
56
+ color: white;
57
+ }
58
+ .calendar_date_select .cds_header a {
59
+ width:22px;
60
+ height:20px;
61
+ text-decoration: none;
62
+ font-size:14px;
63
+ color:black !important;
64
+ }
65
+
66
+ .calendar_date_select .cds_header a.prev {
67
+ float:left;
68
+ }
69
+ .calendar_date_select .cds_header a.next {
70
+ float:right;
71
+ }
72
+
73
+ .calendar_date_select .cds_header a.close {
74
+ float:right;
75
+ display:none;
76
+ }
77
+
78
+ .calendar_date_select .cds_header select.month {
79
+ width:90px;
80
+ }
81
+
82
+ .calendar_date_select .cds_header select.year {
83
+ width:61px;
84
+ }
85
+ .calendar_date_select .cds_buttons a {
86
+ color: white;
87
+ font-size: 9px;
88
+ }
89
+
90
+ .calendar_date_select td {
91
+ font-size:12px;
92
+ width: 24px;
93
+ height: 21px;
94
+ text-align:center;
95
+ vertical-align: middle;
96
+ background-color: #fff;
97
+ }
98
+ .calendar_date_select td.weekend {
99
+ background-color: #eee;
100
+ border-left:1px solid #ddd;
101
+ border-right:1px solid #ddd;
102
+ }
103
+
104
+ .calendar_date_select td div {
105
+ color: #000;
106
+ }
107
+ .calendar_date_select td div.other {
108
+ color: #ccc;
109
+ }
110
+ .calendar_date_select td.selected div {
111
+ color:white;
112
+ }
113
+
114
+ .calendar_date_select tbody td {
115
+ border-bottom: 1px solid #ddd;
116
+ }
117
+ .calendar_date_select td.selected {
118
+ background-color:#777;
119
+ }
120
+
121
+ .calendar_date_select td:hover {
122
+ background-color:#ccc;
123
+ }
124
+
125
+ .calendar_date_select td.today {
126
+ border: 1px dashed #999;
127
+ }
128
+
129
+ .calendar_date_select td.disabled div {
130
+ color: #e6e6e6;
131
+ }
132
+
133
+ .fieldWithErrors .calendar_date_select {
134
+ border: 2px solid red;
135
+ }