web/lib/django/contrib/admin/media/js/calendar.js
changeset 29 cc9b7e14412b
parent 0 0d40e90630ef
equal deleted inserted replaced
28:b758351d191f 29:cc9b7e14412b
    23 
    23 
    24 // CalendarNamespace -- Provides a collection of HTML calendar-related helper functions
    24 // CalendarNamespace -- Provides a collection of HTML calendar-related helper functions
    25 var CalendarNamespace = {
    25 var CalendarNamespace = {
    26     monthsOfYear: gettext('January February March April May June July August September October November December').split(' '),
    26     monthsOfYear: gettext('January February March April May June July August September October November December').split(' '),
    27     daysOfWeek: gettext('S M T W T F S').split(' '),
    27     daysOfWeek: gettext('S M T W T F S').split(' '),
       
    28     firstDayOfWeek: parseInt(get_format('FIRST_DAY_OF_WEEK')),
    28     isLeapYear: function(year) {
    29     isLeapYear: function(year) {
    29         return (((year % 4)==0) && ((year % 100)!=0) || ((year % 400)==0));
    30         return (((year % 4)==0) && ((year % 100)!=0) || ((year % 400)==0));
    30     },
    31     },
    31     getDaysInMonth: function(month,year) {
    32     getDaysInMonth: function(month,year) {
    32         var days;
    33         var days;
    43             days = 28;
    44             days = 28;
    44         }
    45         }
    45         return days;
    46         return days;
    46     },
    47     },
    47     draw: function(month, year, div_id, callback) { // month = 1-12, year = 1-9999
    48     draw: function(month, year, div_id, callback) { // month = 1-12, year = 1-9999
       
    49         var today = new Date();
       
    50         var todayDay = today.getDate();
       
    51         var todayMonth = today.getMonth()+1;
       
    52         var todayYear = today.getFullYear();
       
    53         var todayClass = '';
       
    54 
    48         month = parseInt(month);
    55         month = parseInt(month);
    49         year = parseInt(year);
    56         year = parseInt(year);
    50         var calDiv = document.getElementById(div_id);
    57         var calDiv = document.getElementById(div_id);
    51         removeChildren(calDiv);
    58         removeChildren(calDiv);
    52         var calTable = document.createElement('table');
    59         var calTable = document.createElement('table');
    54         var tableBody = quickElement('tbody', calTable);
    61         var tableBody = quickElement('tbody', calTable);
    55 
    62 
    56         // Draw days-of-week header
    63         // Draw days-of-week header
    57         var tableRow = quickElement('tr', tableBody);
    64         var tableRow = quickElement('tr', tableBody);
    58         for (var i = 0; i < 7; i++) {
    65         for (var i = 0; i < 7; i++) {
    59             quickElement('th', tableRow, CalendarNamespace.daysOfWeek[i]);
    66             quickElement('th', tableRow, CalendarNamespace.daysOfWeek[(i + CalendarNamespace.firstDayOfWeek) % 7]);
    60         }
    67         }
    61 
    68 
    62         var startingPos = new Date(year, month-1, 1).getDay();
    69         var startingPos = new Date(year, month-1, 1 - CalendarNamespace.firstDayOfWeek).getDay();
    63         var days = CalendarNamespace.getDaysInMonth(month, year);
    70         var days = CalendarNamespace.getDaysInMonth(month, year);
    64 
    71 
    65         // Draw blanks before first of month
    72         // Draw blanks before first of month
    66         tableRow = quickElement('tr', tableBody);
    73         tableRow = quickElement('tr', tableBody);
    67         for (var i = 0; i < startingPos; i++) {
    74         for (var i = 0; i < startingPos; i++) {
    73         var currentDay = 1;
    80         var currentDay = 1;
    74         for (var i = startingPos; currentDay <= days; i++) {
    81         for (var i = startingPos; currentDay <= days; i++) {
    75             if (i%7 == 0 && currentDay != 1) {
    82             if (i%7 == 0 && currentDay != 1) {
    76                 tableRow = quickElement('tr', tableBody);
    83                 tableRow = quickElement('tr', tableBody);
    77             }
    84             }
    78             var cell = quickElement('td', tableRow, '');
    85             if ((currentDay==todayDay) && (month==todayMonth) && (year==todayYear)) {
       
    86                 todayClass='today';
       
    87             } else {
       
    88                 todayClass='';
       
    89             }
       
    90             var cell = quickElement('td', tableRow, '', 'class', todayClass);
       
    91 
    79             quickElement('a', cell, currentDay, 'href', 'javascript:void(' + callback + '('+year+','+month+','+currentDay+'));');
    92             quickElement('a', cell, currentDay, 'href', 'javascript:void(' + callback + '('+year+','+month+','+currentDay+'));');
    80             currentDay++;
    93             currentDay++;
    81         }
    94         }
    82 
    95 
    83         // Draw blanks after end of month (optional, but makes for valid code)
    96         // Draw blanks after end of month (optional, but makes for valid code)