web/static/admin/js/calendar.js
changeset 104 b62a2a3e272d
parent 103 5578dcb54f4d
child 105 6094ab306d77
--- a/web/static/admin/js/calendar.js	Mon May 09 18:57:23 2011 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,156 +0,0 @@
-/*
-calendar.js - Calendar functions by Adrian Holovaty
-*/
-
-function removeChildren(a) { // "a" is reference to an object
-    while (a.hasChildNodes()) a.removeChild(a.lastChild);
-}
-
-// quickElement(tagType, parentReference, textInChildNode, [, attribute, attributeValue ...]);
-function quickElement() {
-    var obj = document.createElement(arguments[0]);
-    if (arguments[2] != '' && arguments[2] != null) {
-        var textNode = document.createTextNode(arguments[2]);
-        obj.appendChild(textNode);
-    }
-    var len = arguments.length;
-    for (var i = 3; i < len; i += 2) {
-        obj.setAttribute(arguments[i], arguments[i+1]);
-    }
-    arguments[1].appendChild(obj);
-    return obj;
-}
-
-// CalendarNamespace -- Provides a collection of HTML calendar-related helper functions
-var CalendarNamespace = {
-    monthsOfYear: gettext('January February March April May June July August September October November December').split(' '),
-    daysOfWeek: gettext('S M T W T F S').split(' '),
-    firstDayOfWeek: parseInt(get_format('FIRST_DAY_OF_WEEK')),
-    isLeapYear: function(year) {
-        return (((year % 4)==0) && ((year % 100)!=0) || ((year % 400)==0));
-    },
-    getDaysInMonth: function(month,year) {
-        var days;
-        if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12) {
-            days = 31;
-        }
-        else if (month==4 || month==6 || month==9 || month==11) {
-            days = 30;
-        }
-        else if (month==2 && CalendarNamespace.isLeapYear(year)) {
-            days = 29;
-        }
-        else {
-            days = 28;
-        }
-        return days;
-    },
-    draw: function(month, year, div_id, callback) { // month = 1-12, year = 1-9999
-        var today = new Date();
-        var todayDay = today.getDate();
-        var todayMonth = today.getMonth()+1;
-        var todayYear = today.getFullYear();
-        var todayClass = '';
-
-        month = parseInt(month);
-        year = parseInt(year);
-        var calDiv = document.getElementById(div_id);
-        removeChildren(calDiv);
-        var calTable = document.createElement('table');
-        quickElement('caption', calTable, CalendarNamespace.monthsOfYear[month-1] + ' ' + year);
-        var tableBody = quickElement('tbody', calTable);
-
-        // Draw days-of-week header
-        var tableRow = quickElement('tr', tableBody);
-        for (var i = 0; i < 7; i++) {
-            quickElement('th', tableRow, CalendarNamespace.daysOfWeek[(i + CalendarNamespace.firstDayOfWeek) % 7]);
-        }
-
-        var startingPos = new Date(year, month-1, 1 - CalendarNamespace.firstDayOfWeek).getDay();
-        var days = CalendarNamespace.getDaysInMonth(month, year);
-
-        // Draw blanks before first of month
-        tableRow = quickElement('tr', tableBody);
-        for (var i = 0; i < startingPos; i++) {
-            var _cell = quickElement('td', tableRow, ' ');
-            _cell.style.backgroundColor = '#f3f3f3';
-        }
-
-        // Draw days of month
-        var currentDay = 1;
-        for (var i = startingPos; currentDay <= days; i++) {
-            if (i%7 == 0 && currentDay != 1) {
-                tableRow = quickElement('tr', tableBody);
-            }
-            if ((currentDay==todayDay) && (month==todayMonth) && (year==todayYear)) {
-                todayClass='today';
-            } else {
-                todayClass='';
-            }
-            var cell = quickElement('td', tableRow, '', 'class', todayClass);
-
-            quickElement('a', cell, currentDay, 'href', 'javascript:void(' + callback + '('+year+','+month+','+currentDay+'));');
-            currentDay++;
-        }
-
-        // Draw blanks after end of month (optional, but makes for valid code)
-        while (tableRow.childNodes.length < 7) {
-            var _cell = quickElement('td', tableRow, ' ');
-            _cell.style.backgroundColor = '#f3f3f3';
-        }
-
-        calDiv.appendChild(calTable);
-    }
-}
-
-// Calendar -- A calendar instance
-function Calendar(div_id, callback) {
-    // div_id (string) is the ID of the element in which the calendar will
-    //     be displayed
-    // callback (string) is the name of a JavaScript function that will be
-    //     called with the parameters (year, month, day) when a day in the
-    //     calendar is clicked
-    this.div_id = div_id;
-    this.callback = callback;
-    this.today = new Date();
-    this.currentMonth = this.today.getMonth() + 1;
-    this.currentYear = this.today.getFullYear();
-}
-Calendar.prototype = {
-    drawCurrent: function() {
-        CalendarNamespace.draw(this.currentMonth, this.currentYear, this.div_id, this.callback);
-    },
-    drawDate: function(month, year) {
-        this.currentMonth = month;
-        this.currentYear = year;
-        this.drawCurrent();
-    },
-    drawPreviousMonth: function() {
-        if (this.currentMonth == 1) {
-            this.currentMonth = 12;
-            this.currentYear--;
-        }
-        else {
-            this.currentMonth--;
-        }
-        this.drawCurrent();
-    },
-    drawNextMonth: function() {
-        if (this.currentMonth == 12) {
-            this.currentMonth = 1;
-            this.currentYear++;
-        }
-        else {
-            this.currentMonth++;
-        }
-        this.drawCurrent();
-    },
-    drawPreviousYear: function() {
-        this.currentYear--;
-        this.drawCurrent();
-    },
-    drawNextYear: function() {
-        this.currentYear++;
-        this.drawCurrent();
-    }
-}