Advertisement
zero50x

Календарь на JS 1

Jul 24th, 2017
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  3.   "http://www.w3.org/TR/html4/loose.dtd">
  4.  
  5. <html>
  6. <head>
  7.   <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  8.   <meta http-equiv="content-language" content="ru">
  9.   <title>JavaScript Calendar Demo</title>
  10.  
  11. <style type="text/css">
  12. /* Таблица календарика */
  13. .calendar {
  14.   border: 1px solid #909090;
  15.   border-collapse: collapse;
  16.   font-family: Arial;
  17.   font-size: 14px;
  18. }
  19. /* Заголовок */
  20. .calendar th {
  21.   text-align: center;
  22.   width: 36px;
  23.   height: 36px;
  24.   background: #D0D0D0;
  25.   color: #000000;
  26.   border: 1px solid #909090;
  27. }
  28. /* Заголовок праздника */
  29. .calendar th.holiday {
  30.   color: #FF0000;
  31. }
  32. /* Ячейка дня */
  33. .calendar td {
  34.   text-align: right;
  35.   width: 28px;
  36.   height: 36px;
  37.   padding-right: 8px;
  38.   border: 1px solid #909090;
  39.   text-align: right;
  40.   cursor: pointer;
  41. }
  42. /* Затемненный день */
  43. .calendar td.grayed {
  44.   background: #F0F0F0;
  45.   cursor: auto !important;
  46. }
  47. /* Выбранный день */
  48. .calendar td.selected {
  49.   background: #6DAFBF;
  50.   color: #FFFFFF;
  51.   box-shadow: 1px 1px rgba(255, 255, 255, 0.5) inset;
  52. }
  53. /* Праздничный день */
  54. .calendar td.holiday {
  55.   color: #FF0000;
  56. }
  57. /* Кнопки навигации */
  58. .calendar td.navigation {
  59.   text-align: center;
  60.   border: 0px none !important;
  61.   font-size: 20px;
  62.   cursor: pointer;
  63.   white-space: nowrap;
  64. }
  65. </style>
  66.  
  67.  
  68. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  69. </head>
  70.  
  71. <body>
  72. <div id="calendar_table"></div>
  73. <div id="test_type"></div>
  74.  
  75. <script type="text/javascript">
  76. // console.log(calendar.HolyDays[i]);
  77.  
  78.  
  79.  
  80. calendar = {};
  81.  
  82. // Выходные дни
  83. calendar.HolyDays=[
  84. 2,4,6,8,10,12
  85. ];
  86.  
  87. // Рабочие дни
  88. calendar.WorkDays=[
  89.   '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31',
  90. ];
  91.  
  92.  
  93.  
  94. // Названия месяцев
  95. calendar.monthName=[
  96.   'Январь', 'Февраль', 'Март', 'Апрель',
  97.   'Май', 'Июнь', 'Июль', 'Август',
  98.   'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'
  99. ];
  100.  
  101. // Названия дней недели
  102. calendar.dayName=[
  103.   'ПН', 'ВТ', 'СР', 'ЧТ', 'ПТ', 'СБ', 'ВС'
  104. ];
  105.  
  106. // Выбранная дата
  107. calendar.selectedDate = {
  108.   'Day' : null,
  109.   'Month' : null,
  110.   'Year' : null
  111. };
  112.  
  113. // ID элемента для размещения календарика
  114. calendar.element_id=null;
  115.  
  116. // Выбор даты
  117. calendar.selectDate = function(day,month,year) {
  118.   calendar.selectedDate={
  119.     'Day' : day,
  120.     'Month' : month,
  121.     'Year' : year
  122.   };
  123.   //calendar.drawCalendar(month,year);
  124.     return this.selectedDate;
  125. }
  126. var data = calendar.selectDate(1,2,2015);
  127. document.getElementById('test_type').innerHTML=data.Day+" : "+data.Month+" : "+data.Year;
  128.  
  129.  
  130. // Отрисовка календарика на выбранный месяц и год
  131. calendar.drawCalendar = function(month,year) {
  132.   var tmp='';
  133.   tmp+='<table class="calendar" cellspacing="0" cellpadding="0">';
  134.  
  135.   // Месяц и навигация
  136.   tmp+='<tr>';
  137.   tmp+='<td class="navigation" '+
  138.        'onclick="calendar.drawCalendar('+(month>1?(month-1):12)+
  139.        ','+(month>1?year:(year-1))+');">&#9668;<\/td>';
  140.   tmp+='<td colspan="5" class="navigation" '+
  141.        'onclick="calendar.drawCalendar('+
  142.        calendar.selectedDate.Month+','+
  143.        calendar.selectedDate.Year+');">'+
  144.        calendar.monthName[(month-1)]+'&nbsp;-&nbsp;'+year+'<\/td>';
  145.   tmp+='<td class="navigation" '+
  146.        'onclick="calendar.drawCalendar('+(month<12?(month+1):1)+
  147.        ','+(month<12?year:(year+1))+');">&#9658;<\/td>';
  148.   tmp+='<\/tr>';
  149.  
  150.   // Шапка таблицы с днями недели
  151.   tmp+='<tr>';
  152.   tmp+='<th>'+calendar.dayName[0]+'<\/th>';
  153.   tmp+='<th>'+calendar.dayName[1]+'<\/th>';
  154.   tmp+='<th>'+calendar.dayName[2]+'<\/th>';
  155.   tmp+='<th>'+calendar.dayName[3]+'<\/th>';
  156.   tmp+='<th>'+calendar.dayName[4]+'<\/th>';
  157.   tmp+='<th class="holiday">'+calendar.dayName[5]+'<\/th>';
  158.   tmp+='<th class="holiday">'+calendar.dayName[6]+'<\/th>';
  159.   tmp+='<\/tr>';
  160.  
  161.   // Количество дней в месяце
  162.   var total_days = 32 - new Date(year, (month-1), 32).getDate();
  163.   // Начальный день месяца
  164.   var start_day = new Date(year, (month-1), 1).getDay();
  165.   if (start_day==0) { start_day=7; }
  166.   start_day--;
  167.   // Количество ячеек в таблице
  168.   var final_index=Math.ceil((total_days+start_day)/7)*7;
  169.  
  170.  
  171.  
  172.   var day=1;
  173.   var index=0;
  174.   do {
  175.     // Начало строки таблицы
  176.     if (index%7==0) {
  177.       tmp+='<tr>';
  178.     }
  179.     // Пустые ячейки до начала месяца или после окончания
  180.     if ((index<start_day) || (index>=(total_days+start_day))) {
  181.       tmp+='<td class="grayed">&nbsp;<\/td>';
  182.     }
  183.     else {
  184.       var class_name='';
  185.       // Выбранный день
  186.       if (calendar.selectedDate.Day==day &&
  187.           calendar.selectedDate.Month==month &&
  188.           calendar.selectedDate.Year==year) {
  189.         class_name='selected';
  190.       }
  191.  
  192.       // Праздничный день
  193.         for (i = 0; i < calendar.HolyDays.length; i++) {
  194.           if(day==calendar.HolyDays[i]){
  195.             class_name='holiday';
  196.           }
  197.         }
  198.  
  199.       // Ячейка с датой
  200.       tmp+='<td class="'+class_name+'" '+
  201.            'onclick="calendar.selectDate('+
  202.            day+','+month+','+year+');">'+day+'<\/td>';
  203.       day++;
  204.     }
  205.     // Конец строки таблицы
  206.     if (index%7==6) {
  207.       tmp+='<\/tr>';
  208.     }
  209.     index++;
  210.   }
  211.   while (index<final_index);
  212.  
  213.   tmp+='<\/table>';
  214.  
  215.   // Вставить таблицу календарика на страницу
  216.   var el=document.getElementById(calendar.element_id);
  217.   if (el) {
  218.     el.innerHTML=tmp;
  219.   }
  220. }
  221.  
  222. // ID элемента для размещения календарика
  223. calendar.element_id = 'calendar_table';
  224.  
  225. // По умолчанию используется текущая дата
  226. calendar.selectedDate={
  227.   'Day' : new Date().getDate(),
  228.   'Month' : parseInt(new Date().getMonth())+1,
  229.   'Year' : new Date().getFullYear()
  230. };
  231.  
  232. // Нарисовать календарик
  233. calendar.drawCalendar(
  234.   calendar.selectedDate.Month,
  235.   calendar.selectedDate.Year
  236. );
  237. </script>
  238. </body>
  239. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement