PageSourceSearch

https://m-radiodetali.ru/local/templates/main/js/simplecalendar.js?175083944812797

js m-radiodetali.ru collected 2026-10-07 16:35:26 UTC 12,797 bytes, 313 lines download raw bytes

1var simpleCalendarStep = 0;
2var calendar = {
3
4	init: function(ajax, events) {
5
6		if (ajax) {
7
8      // ajax call to print json
9      $.ajax({
10  				url: 'data/events.json',
11  				type: 'GET',
12  			})
13  			.done(function(data) {
14          var events = data.events;
15
16          // loop json & append to dom
17          for (var i = 0; i < events.length; i++) {
18            $('.list').append('<div class="day-event" date-day="'+ events[i].day +'" date-month="' + events[i].month +'" date-year="'+ events[i].year +'" data-number="'+ i +'"><a href="#" class="close fontawesome-remove"></a><div class="title calendar__title">'+ events[i].title +'</div><p>'+ events[i].description +'</p><label class="check-btn"><input type="checkbox" class="save" id="save" name="" value=""/><span>Save to personal list!</span></label></div>');
19          }
20
21          // start calendar
22          calendar.startCalendar();
23
24  			})
25  			.fail(function(data) {
26  				console.log(data);
27  			});
28		} else {
29		if (typeof events != "undefined"){
30			var events = events;
31		}
32			// loop json & append to dom
33			for (var i = 0; i < events.length; i++) {
34				$('.list').append('<div class="day-event" date-day="'+ events[i].day +'" date-month="' + events[i].month +'" date-year="'+ events[i].year +'" data-number="'+ i +'"><a href="#" class="close fontawesome-remove"></a><div class="title calendar__title">'+ events[i].title +'</div><p>'+ events[i].description +'</p><label class="check-btn"><input type="checkbox" class="save" id="save" name="" value=""/><span>Save to personal list!</span></label></div>');
35			}
36      // if not using ajax start calendar
37      calendar.startCalendar();
38    }
39
40	},
41
42  startCalendar: function() {
43    	var mon = 'ПН';
44		var tue = 'ВТ';
45		var wed = 'СР';
46		var thur = 'ЧТ';
47		var fri = 'ПТ';
48		var sat = 'СБ';
49		var sund = 'ВС';
50
51		/**
52		 * Get current date
53		 */
54		var d = new Date();
55	  	var yearNumber = (new Date).getFullYear();
56		var strDate = yearNumber + "/" + (d.getMonth() + 1) + "/" + d.getDate();
57		/**
58		 * Get current month and set as '.current-month' in title
59		 */
60		var monthNumber = d.getMonth() + 1;
61
62		function GetMonthName(monthNumber) {
63			var months = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'];
64			return months[monthNumber - 1];
65		}
66
67		setMonth(monthNumber, mon, tue, wed, thur, fri, sat, sund);
68
69		function setMonth(monthNumber, mon, tue, wed, thur, fri, sat, sund) {
70			$('.month').text(GetMonthName(monthNumber) + ' ' + yearNumber);
71			$('.month').attr('data-month', monthNumber);
72			printDateNumber(monthNumber, mon, tue, wed, thur, fri, sat, sund);
73		}
74
75		$('.btn-next').on('click', function(e) {
76			var monthNumber = $('.month').attr('data-month');
77			if (monthNumber > 11) {
78				$('.month').attr('data-month', '0');
79				var monthNumber = $('.month').attr('data-month');
80				yearNumber = yearNumber + 1;
81				setMonth(parseInt(monthNumber) + 1, mon, tue, wed, thur, fri, sat, sund);
82			} else {
83				setMonth(parseInt(monthNumber) + 1, mon, tue, wed, thur, fri, sat, sund);
84			};
85		});
86
87		$('.btn-prev').on('click', function(e) {
88			var monthNumber = $('.month').attr('data-month');
89			if (monthNumber < 2) {
90				$('.month').attr('data-month', '13');
91				var monthNumber = $('.month').attr('data-month');
92				yearNumber = yearNumber - 1;
93				setMonth(parseInt(monthNumber) - 1, mon, tue, wed, thur, fri, sat, sund);
94			} else {
95				setMonth(parseInt(monthNumber) - 1, mon, tue, wed, thur, fri, sat, sund);
96			};
97		});
98
99		/**
100		 * Get all dates for current month
101		 */
102
103		function printDateNumber(monthNumber, mon, tue, wed, thur, fri, sat, sund) {
104
105			$($('tbody.event-calendar tr')).each(function(index) {
106				$(this).empty();
107			});
108
109			$($('thead.event-days tr')).each(function(index) {
110				$(this).empty();
111			});
112
113			function getDaysInMonth(month, year) {
114				// Since no month has fewer than 28 days
115				var date = new Date(year, month, 1);
116				var days = [];
117				while (date.getMonth() === month) {
118					days.push(new Date(date));
119					date.setDate(date.getDate() + 1);
120				}
121				return days;
122			}
123
124			i = 0;
125
126			setDaysInOrder(mon, tue, wed, thur, fri, sat, sund);
127
128			function setDaysInOrder(mon, tue, wed, thur, fri, sat, sund) {
129				var monthDay = getDaysInMonth(monthNumber - 1, yearNumber)[0].toString().substring(0, 3);
130				if (monthDay === 'Mon') {
131                    simpleCalendarStep = 0;
132					//$('thead.event-days tr').append('<td>' + mon + '</td><td>' + tue + '</td><td>' + wed + '</td><td>' + thur + '</td><td>' + fri + '</td><td>' + sat + '</td><td>' + sund + '</td>');
133				} else if (monthDay === 'Tue') {
134                    simpleCalendarStep = 1;
135					//$('thead.event-days tr').append('<td>' + tue + '</td><td>' + wed + '</td><td>' + thur + '</td><td>' + fri + '</td><td>' + sat + '</td><td>' + sund + '</td><td>' + mon + '</td>');
136				} else if (monthDay === 'Wed') {
137                    simpleCalendarStep = 2;
138					//$('thead.event-days tr').append('<td>' + wed + '</td><td>' + thur + '</td><td>' + fri + '</td><td>' + sat + '</td><td>' + sund + '</td><td>' + mon + '</td><td>' + tue + '</td>');
139				} else if (monthDay === 'Thu') {
140                    simpleCalendarStep = 3;
141					//$('thead.event-days tr').append('<td>' + thur + '</td><td>' + fri + '</td><td>' + sat + '</td><td>' + sund + '</td><td>' + mon + '</td><td>' + tue + '</td><td>' + wed + '</td>');
142				} else if (monthDay === 'Fri') {
143                    simpleCalendarStep = 4;
144					//$('thead.event-days tr').append('<td>' + fri + '</td><td>' + sat + '</td><td>' + sund + '</td><td>' + mon + '</td><td>' + tue + '</td><td>' + wed + '</td><td>' + thur + '</td>');
145				} else if (monthDay === 'Sat') {
146                    simpleCalendarStep = 5;
147					//$('thead.event-days tr').append('<td>' + sat + '</td><td>' + sund + '</td><td>' + mon + '</td><td>' + tue + '</td><td>' + wed + '</td><td>' + thur + '</td><td>' + fri + '</td>');
148				} else if (monthDay === 'Sun') {
149                    simpleCalendarStep = 6;
150					//$('thead.event-days tr').append('<td>' + sund + '</td><td>' + mon + '</td><td>' + tue + '</td><td>' + wed + '</td><td>' + thur + '</td><td>' + fri + '</td><td>' + sat + '</td>');
151				}
152                $('thead.event-days tr').append('<td>' + mon + '</td><td>' + tue + '</td><td>' + wed + '</td><td>' + thur + '</td><td>' + fri + '</td><td>' + sat + '</td><td>' + sund + '</td>');
153			};
154			var daysInMonth = getDaysInMonth(monthNumber - 1, yearNumber);
155           // daysInMonth += simpleCalendarStep;
156			for (var i = 1; i <=  simpleCalendarStep; i++){
157                $('tbody.event-calendar tr.1').append('<td class="empty-calendar"></td>');
158			}
159			$(daysInMonth).each(function(index) {
160                var index = index + 1;
161
162				if (index <= 0){
163                    $('tbody.event-calendar tr.1').append('<td></td>');
164				} else if (index < 8 - simpleCalendarStep) {
165					$('tbody.event-calendar tr.1').append('<td date-month="' + monthNumber + '" date-day="' + index + '" date-year="' + yearNumber + '">' + index + '</td>');
166				} else if (index < 15 - simpleCalendarStep) {
167					$('tbody.event-calendar tr.2').append('<td date-month="' + monthNumber + '" date-day="' + index + '" date-year="' + yearNumber + '">' + index + '</td>');
168				} else if (index < 22 - simpleCalendarStep) {
169					$('tbody.event-calendar tr.3').append('<td date-month="' + monthNumber + '" date-day="' + index + '" date-year="' + yearNumber + '">' + index + '</td>');
170				} else if (index < 29 - simpleCalendarStep) {
171					$('tbody.event-calendar tr.4').append('<td date-month="' + monthNumber + '" date-day="' + index + '" date-year="' + yearNumber + '">' + index + '</td>');
172				} else if (index < 32) {
173					$('tbody.event-calendar tr.5').append('<td date-month="' + monthNumber + '" date-day="' + index + '" date-year="' + yearNumber + '">' + index + '</td>');
174				}
175				i++;
176			});
177			var date = new Date();
178			var month = date.getMonth() + 1;
179			var thisyear = new Date().getFullYear();
180			setCurrentDay(month, thisyear);
181			setEvent();
182			//displayEvent();
183		}
184
185		/**
186		 * Get current day and set as '.current-day'
187		 */
188		function setCurrentDay(month, year) {
189			var viewMonth = $('.month').attr('data-month');
190			var eventYear = $('.event-days').attr('date-year');
191			if (parseInt(year) === yearNumber) {
192				if (parseInt(month) === parseInt(viewMonth)) {
193					$('tbody.event-calendar td[date-day="' + d.getDate() + '"]').addClass('current-day');
194				}
195			}
196		};
197
198		/**
199		 * Add class '.active' on calendar date
200		 */
201		$('tbody td').on('click', function(e) {
202			if ($(this).hasClass('event')) {
203				$('tbody.event-calendar td').removeClass('active');
204				$(this).addClass('active');
205			} else {
206				$('tbody.event-calendar td').removeClass('active');
207			};
208		});
209
210		/**
211		 * Add '.event' class to all days that has an event
212		 */
213		function setEvent() {
214			$('.day-event').each(function(i) {
215				var eventMonth = $(this).attr('date-month');
216				var eventDay = $(this).attr('date-day');
217				var eventYear = $(this).attr('date-year');
218				var eventClass = $(this).attr('event-class');
219				if (eventClass === undefined) eventClass = 'event';
220				else eventClass = 'event ' + eventClass;
221
222				if (parseInt(eventYear) === yearNumber) {
223					$('tbody.event-calendar tr td[date-month="' + eventMonth + '"][date-day="' + eventDay + '"]').addClass(eventClass);
224				}
225			});
226		};
227
228		/**
229		 * Get current day on click in calendar
230		 * and find day-event to display
231		 */
232		function displayEvent() {
233			$('tbody.event-calendar td').on('click', function(e) {
234				$('.day-event').slideUp('fast');
235				var monthEvent = $(this).attr('date-month');
236				var dayEvent = $(this).text();
237				$('.day-event[date-month="' + monthEvent + '"][date-day="' + dayEvent + '"]').slideDown('fast');
238			});
239		};
240
241		/**
242		 * Close day-event
243		 */
244		$('.close').on('click', function(e) {
245			$(this).parent().slideUp('fast');
246		});
247
248		/**
249		 * Save & Remove to/from personal list
250		 */
251		$('.save').click(function() {
252			if (this.checked) {
253				$(this).next().text('Remove from personal list');
254				var eventHtml = $(this).closest('.day-event').html();
255				var eventMonth = $(this).closest('.day-event').attr('date-month');
256				var eventDay = $(this).closest('.day-event').attr('date-day');
257				var eventNumber = $(this).closest('.day-event').attr('data-number');
258				$('.person-list').append('<div class="day" date-month="' + eventMonth + '" date-day="' + eventDay + '" data-number="' + eventNumber + '" style="display:none;">' + eventHtml + '</div>');
259				$('.day[date-month="' + eventMonth + '"][date-day="' + eventDay + '"]').slideDown('fast');
260				$('.day').find('.close').remove();
261				$('.day').find('.save').removeClass('save').addClass('remove');
262				$('.day').find('.remove').next().addClass('hidden-print');
263				remove();
264				sortlist();
265			} else {
266				$(this).next().text('Save to personal list');
267				var eventMonth = $(this).closest('.day-event').attr('date-month');
268				var eventDay = $(this).closest('.day-event').attr('date-day');
269				var eventNumber = $(this).closest('.day-event').attr('data-number');
270				$('.day[date-month="' + eventMonth + '"][date-day="' + eventDay + '"][data-number="' + eventNumber + '"]').slide
270Up('slow');
271				setTimeout(function() {
272					$('.day[date-month="' + eventMonth + '"][date-day="' + eventDay + '"][data-number="' + eventNumber + '"]').remove();
273				}, 1500);
274			}
275		});
276
277		function remove() {
278			$('.remove').click(function() {
279				if (this.checked) {
280					$(this).next().text('Remove from personal list');
281					var eventMonth = $(this).closest('.day').attr('date-month');
282					var eventDay = $(this).closest('.day').attr('date-day');
283					var eventNumber = $(this).closest('.day').attr('data-number');
284					$('.day[date-month="' + eventMonth + '"][date-day="' + eventDay + '"][data-number="' + eventNumber + '"]').slideUp('slow');
285					$('.day-event[date-month="' + eventMonth + '"][date-day="' + eventDay + '"][data-number="' + eventNumber + '"]').find('.save').attr('checked', false);
286					$('.day-event[date-month="' + eventMonth + '"][date-day="' + eventDay + '"][data-number="' + eventNumber + '"]').find('span').text('Save to personal list');
287					setTimeout(function() {
288						$('.day[date-month="' + eventMonth + '"][date-day="' + eventDay + '"][data-number="' + eventNumber + '"]').remove();
289					}, 1500);
290				}
291			});
292		}
293
294		/**
295		 * Sort personal list
296		 */
297		function sortlist() {
298			var personList = $('.person-list');
299
300			personList.find('.day').sort(function(a, b) {
301				return +a.getAttribute('date-day') - +b.getAttribute('date-day');
302			}).appendTo(personList);
303		}
304
305		/**
306		 * Print button
307		 */
308		$('.print-btn').click(function() {
309			window.print();
310		});
311  },
312
313};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.