View difference between Paste ID: etgR9Qxj and QeWSaXFA
SHOW: | | - or go back to the newest paste.
1
function Calendar(inVarName, inCurrent)
2
{
3
    var dtmToday = new Date();
4
    dtmToday = new Date(dtmToday.getFullYear(), dtmToday.getMonth(), dtmToday.getDate());
5
    
6
    var dtmCurrent = inCurrent;
7
    var arrMonths = new Array('Januar', 'Februar', 'Marts', 'April', 'Maj', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'December');
8
    var arrDayNames = new Array('M', 'T', 'O', 'T', 'F', 'L', 'S');
9
    var strVarName = inVarName;
10
11
    var arrActiveDays = new Array();
12
13
    var objBoxCalendar = document.getElementById('BoxCalendar');
14
    var objWrapper = null;
15
    var objNaviLeft = null;
16
    var objCalendarYear = null;
17
    var objNaviRight = null;
18
19
    this.create = function ()
20
    {
21
        if (objBoxCalendar)
22
        {
23
            CreateHeader('DayView');
24
            this.viewDays(dtmCurrent);
25
        }
26
    }
27
28
    this.viewDays = function (dtmStart)
29
    {
30
        dtmStart = new Date(dtmStart);
31
        if (dtmStart.getDate() > 1)
32
            dtmStart.setDate(1);
33
34
        for (var i = objWrapper.childNodes.length; i >= 0; i--)
35
        {
36
            var objChild = objWrapper.childNodes[i];
37
            if (objChild)
38
            {
39
                if (objChild.className != 'CalendarRowNavi')
40
                {
41
                    objWrapper.removeChild(objChild);
42
                }
43
            }
44
        }
45
46
        var objCalendarRowDays = document.createElement('div');
47
        objCalendarRowDays.className = 'CalendarRowDays';
48
        objWrapper.appendChild(objCalendarRowDays);
49
        for (var i = 0; i < arrDayNames.length; i++)
50
        {
51
            var objCalendarCell = document.createElement('div');
52
            objCalendarCell.className = 'CalendarCell';
53
            objCalendarCell.appendChild(document.createTextNode(arrDayNames[i]));
54
            objCalendarRowDays.appendChild(objCalendarCell);
55
            objCalendarRowDays.appendChild(document.createTextNode('\n'));
56
        }
57
58
        var intDaysInMonth = DaysInMonth(dtmStart.getFullYear(), dtmStart.getMonth());
59
60
        //Set the correct text and link on the top field
61
        while (objCalendarYear.hasChildNodes())
62
        {
63
            objCalendarYear.removeChild(objCalendarYear.firstChild);
64
        }
65
        objCalendarYear.appendChild(document.createTextNode(arrMonths[dtmStart.getMonth()] + ' ' + dtmStart.getFullYear()));
66
        objCalendarYear.setAttribute('onclick', strVarName + '.viewMonths(\'' + new Date(dtmStart.getFullYear(), dtmStart.getMonth(), 1) + '\')');
67
        //Do the same for the navigation buttons
68
        objNaviLeft.setAttribute('onclick', strVarName + '.viewDays(\'' + new Date(dtmStart.getFullYear(), dtmStart.getMonth() - 1, 1) + '\')');
69
        objNaviRight.setAttribute('onclick', strVarName + '.viewDays(\'' + new Date(dtmStart.getFullYear(), dtmStart.getMonth() + 1, 1) + '\')');
70
71
        //Fill the first row with blank fields until we reach the starting point
72
        var objFirstRow = document.createElement('div');
73
        objFirstRow.className = 'CalendarRow';
74
        objWrapper.appendChild(objFirstRow);
75
        var intCount = 0;
76
        for (intCount; intCount < dtmStart.getUTCDay(); intCount++)
77
        {
78
            var objNotThisMonth = document.createElement('div');
79
            objNotThisMonth.className = 'CalendarCell NotThisMonth';
80
            objFirstRow.appendChild(objNotThisMonth);
81
            objFirstRow.appendChild(document.createTextNode('\n'));
82
        }
83
84
        //Fill the rest of the first row with days
85
        for (intCount; intCount < 7; intCount++)
86
        {
87
            var objCalendarCell = document.createElement('div');
88
            objCalendarCell.className = 'CalendarCell';
89
90
            for (var j = 0; j < arrActiveDays.length; j++)
91
            {
92
                var dtmActiveDay = arrActiveDays[j];
93
                if (dtmActiveDay.getTime() == dtmStart.getTime())
94
                {
95
                    objCalendarCell.setAttribute('onclick', 'window.open(\'/?ci=' + dtmActiveDay.getFullYear() + '-' + eval(dtmActiveDay.getMonth() + 1) + '-' + dtmActiveDay.getDate() + '\', \'_self\');');
96
                    objCalendarCell.className += ' Active';
97
                }
98
            }
99
100
            if (dtmToday.getTime() == dtmStart.getTime())
101
            {
102
                if (dtmCurrent.getTime() == dtmStart.getTime())
103
                {
104
                    objCalendarCell.className += ' Today';
105
                }
106
                else
107
                {
108
                    objCalendarCell.className += ' TodayNotChosen';
109
                }
110
            }
111
            else if (dtmCurrent.getTime() == dtmStart.getTime())
112
            {
113
                objCalendarCell.className += ' Chosen';
114
            }
115
116
            objCalendarCell.appendChild(document.createTextNode(dtmStart.getDate()));
117
            objFirstRow.appendChild(objCalendarCell);
118
            objFirstRow.appendChild(document.createTextNode('\n'));
119
            dtmStart.setDate(dtmStart.getDate() + 1);
120
        }
121
122
        var objCalendarRow = document.createElement('div');
123
        objCalendarRow.className = 'CalendarRow';
124
125
        //Fill each row with days
126
        for (var i = dtmStart.getDate(); i <= intDaysInMonth; i++)
127
        {
128
            if (dtmStart.getUTCDay() == 0)
129
            {
130
                objWrapper.appendChild(document.createTextNode('\n'));
131
                objCalendarRow = document.createElement('div');
132
                objCalendarRow.className = 'CalendarRow';
133
                objWrapper.appendChild(objCalendarRow);
134
            }
135
136
            var objCalendarCell = document.createElement('div');
137
            objCalendarCell.className = 'CalendarCell';
138
139
            for (var j = 0; j < arrActiveDays.length; j++)
140
            {
141
                var dtmActiveDay = arrActiveDays[j];
142
                if (dtmActiveDay.getTime() == dtmStart.getTime())
143
                {
144
                    objCalendarCell.setAttribute('onclick', 'window.open(\'/?ci=' + dtmActiveDay.getFullYear() + '-' + eval(dtmActiveDay.getMonth() + 1) + '-' + dtmActiveDay.getDate() + '\', \'_self\');');
145
                    objCalendarCell.className += ' Active';
146
                }
147
            }
148
149
            if (dtmToday.getTime() == dtmStart.getTime())
150
            {
151
                if (dtmCurrent.getTime() == dtmStart.getTime())
152
                {
153
                    objCalendarCell.className += ' Today';
154
                }
155
                else
156
                {
157
                    objCalendarCell.className += ' TodayNotChosen';
158
                }
159
            }
160
            else if (dtmCurrent.getTime() == dtmStart.getTime())
161
            {
162
                objCalendarCell.className += ' Chosen';
163
            }
164
165
            objCalendarCell.appendChild(document.createTextNode(dtmStart.getDate()));
166
            objCalendarRow.appendChild(objCalendarCell);
167
            objCalendarRow.appendChild(document.createTextNode('\n'));
168
169
            dtmStart.setDate(dtmStart.getDate() + 1);
170
        }
171
172
        //Fill the rest of the last row with blank fields
173
        for (var i = dtmStart.getUTCDay(); i < 7; i++)
174
        {
175
            var objNotThisMonth = document.createElement('div');
176
            objNotThisMonth.className = 'CalendarCell NotThisMonth';
177
            objCalendarRow.appendChild(objNotThisMonth);
178
            objCalendarRow.appendChild(document.createTextNode('\n'));
179
        }
180
181
    }
182
183
    this.viewMonths = function (dtmStart)
184
    {
185
        dtmStart = new Date(dtmStart);
186
        if (dtmStart.getDate() > 1)
187
            dtmStart.setDate(1);
188
189
        for (var i = objWrapper.childNodes.length; i >= 0; i--)
190
        {
191
            var objChild = objWrapper.childNodes[i];
192
            if (objChild)
193
            {
194
                if (objChild.className != 'CalendarRowNavi')
195
                {
196
                    objWrapper.removeChild(objChild);
197
                }
198
            }
199
        }
200
201
        //Set the correct text and link on the top field
202
        while (objCalendarYear.hasChildNodes())
203
        {
204
            objCalendarYear.removeChild(objCalendarYear.firstChild);
205
        }
206
        objCalendarYear.appendChild(document.createTextNode(dtmStart.getFullYear()));
207
        objCalendarYear.setAttribute('onclick', strVarName + '.viewYears(\'' + new Date(dtmStart.getFullYear(), 0, 1) + '\')');
208
        //Do the same for the navigation buttons
209
        objNaviLeft.setAttribute('onclick', strVarName + '.viewMonths(\'' + new Date(dtmStart.getFullYear() - 1, dtmStart.getMonth(), 1) + '\')');
210
        objNaviRight.setAttribute('onclick', strVarName + '.viewMonths(\'' + new Date(dtmStart.getFullYear() + 1, dtmStart.getMonth(), 1) + '\')');
211
212
        var objCalendarMonthRow = null;
213
214
        for (var i = 0; i < arrMonths.length; i++)
215
        {
216
            if (i % 3 == 0)
217
            {
218
                objCalendarMonthRow = document.createElement('div');
219
                objCalendarMonthRow.className = 'CalendarMonthRow';
220
                objWrapper.appendChild(objCalendarMonthRow);
221
            }
222
223
            var objCalendarCell = document.createElement('div');
224
            objCalendarCell.className = 'CalendarCell';
225
            objCalendarCell.appendChild(document.createTextNode(arrMonths[i]));
226
            objCalendarCell.appendChild(document.createTextNode('\n'));
227
            objCalendarCell.setAttribute('onclick', strVarName + '.viewDays(\'' + new Date(dtmStart.getFullYear(), i, 1) + '\')');
228
            objCalendarMonthRow.appendChild(objCalendarCell);
229
            objCalendarMonthRow.appendChild(document.createTextNode('\n'));
230
        }
231
    }
232
233
    this.viewYears = function (dtmStart)
234
    {
235
        dtmStart = new Date(dtmStart);
236
        if (dtmStart.getDate() > 1)
237
            dtmStart.setDate(1);
238
239
        for (var i = objWrapper.childNodes.length; i >= 0; i--)
240
        {
241
            var objChild = objWrapper.childNodes[i];
242
            if (objChild)
243
            {
244
                if (objChild.className != 'CalendarRowNavi')
245
                {
246
                    objWrapper.removeChild(objChild);
247
                }
248
            }
249
        }
250
251
        //Set the correct text and link on the top field
252
        while (objCalendarYear.hasChildNodes())
253
        {
254
            objCalendarYear.removeChild(objCalendarYear.firstChild);
255
        }
256
        objCalendarYear.appendChild(document.createTextNode(dtmStart.getFullYear() + ' - ' + eval(dtmStart.getFullYear() + 11)));
257
        //Do the same for the navigation buttons
258
        objNaviLeft.setAttribute('onclick', strVarName + '.viewYears(\'' + new Date(dtmStart.getFullYear() - 12, 0, 1) + '\')');
259
        objNaviRight.setAttribute('onclick', strVarName + '.viewYears(\'' + new Date(dtmStart.getFullYear() + 12, 0, 1) + '\')');
260
261
        var objCalendarYearRow = null;
262
263
        for (var i = 0; i < 12; i++)
264
        {
265
            if (i % 3 == 0)
266
            {
267
                objCalendarYearRow = document.createElement('div');
268
                objCalendarYearRow.className = 'CalendarYearRow';
269
                objWrapper.appendChild(objCalendarYearRow);
270
            }
271
272
            var objCalendarCell = document.createElement('div');
273
            objCalendarCell.className = 'CalendarCell';
274
            objCalendarCell.appendChild(document.createTextNode(eval(dtmStart.getFullYear() + i)));
275
            objCalendarCell.appendChild(document.createTextNode('\n'));
276
            objCalendarCell.setAttribute('onclick', strVarName + '.viewMonths(\'' + new Date(eval(dtmStart.getFullYear() + i), 0, 1) + '\')');
277
            objCalendarYearRow.appendChild(objCalendarCell);
278
            objCalendarYearRow.appendChild(document.createTextNode('\n'));
279
        }
280
    }
281
282
    this.addActiveDay = function (inDate)
283
    {
284
        arrActiveDays[arrActiveDays.length] = inDate;
285
    }
286
287
    CreateHeader = function (inType)
288
    {
289
        var objHeader = document.createElement('div');
290
        objHeader.className = 'Header';
291
292
        var objHeaderImage = document.createElement('img');
293
        objHeaderImage.src = '/gfx/box/headers/calendar.png';
294
        objHeaderImage.width = '16';
295
        objHeaderImage.width = '151';
296
        objHeaderImage.alt = 'Maritim Kalender';
297
        objHeader.appendChild(objHeaderImage);
298
299
        var objContent = document.createElement('div');
300
        objContent.className = 'Content';
301
302
        objWrapper = document.createElement('div');
303
        objWrapper.className = 'CalendarWrapper';
304
        objContent.appendChild(objWrapper);
305
306
        var objCalendarRowNavi = document.createElement('div');
307
        objCalendarRowNavi.className = 'CalendarRowNavi';
308
        objWrapper.appendChild(objCalendarRowNavi);
309
        objCalendarRowNavi.appendChild(document.createTextNode('\n'));
310
311
        objNaviLeft = document.createElement('div');
312
        objNaviLeft.className = 'CalendarCell NaviLeft';
313
        objCalendarRowNavi.appendChild(objNaviLeft);
314
        objCalendarRowNavi.appendChild(document.createTextNode('\n'));
315
316
        objCalendarYear = document.createElement('div');
317
        objCalendarYear.className = 'CalendarCell CalendarYear';
318
        objCalendarRowNavi.appendChild(objCalendarYear);
319
        objCalendarRowNavi.appendChild(document.createTextNode('\n'));
320
321
        objNaviRight = document.createElement('div');
322
        objNaviRight.className = 'CalendarCell NaviRight';
323
        objCalendarRowNavi.appendChild(objNaviRight);
324
325
        while (objBoxCalendar.hasChildNodes())
326
        {
327
            objBoxCalendar.removeChild(objBoxCalendar.firstChild);
328
        }
329
        objBoxCalendar.appendChild(objHeader);
330
        objBoxCalendar.appendChild(objContent);
331
    }
332
333
    DaysInMonth = function (year, month)
334
    {
335
        return 32 - new Date(year, month, 32).getDate();
336
    }
337
}