PageSourceSearch

https://biz-soft.net/g/s3/lp/lpc.v4/plugins/timer/timer.js

js biz-soft.net collected 2026-09-24 14:25:12 UTC 4,447 bytes, 146 lines download raw bytes

1(function( $ ){
2
3  $.fn.lpcTimer = function( options ) {  
4
5	var now = new Date();
6    var settings = $.extend( {
7		utc : (-now.getTimezoneOffset())/60,
8		language : 'ru',		
9		format_in : '%d.%M.%y %h:%m:%s',
10		format_out : '%d %h %m %s',
11		end_message : "00:00:00",
12		wrapChar: false,
13		onEnd : function () {},
14		change : true,
15		update_time : 1000
16    }, options);
17    
18    var htmlLang = document.documentElement.lang,
19    	timerDays, timerHours, timerMinutes, timerSeconds;
20    
21    if (htmlLang == 'de' || htmlLang == 'en') {
22		timerDays = 'days';
23		timerHours = 'hours';
24		timerMinutes = 'minutes';
25		timerSeconds = 'seconds'
26    } else {
27		timerDays = 'Дней';
28		timerHours = 'Часов';
29		timerMinutes = 'Минут';
30		timerSeconds = 'Секунд'
31    }
32
33
34
35    return this.each(function() {        
36		var obj = $(this);
37
38		//var short = $.trim(obj.text());
39		var short = $.trim(obj.data('timer-date'));
40
41		var interval;
42		var lang = {
43				days : ['День','Дня','Дней'],
44				hours : ['Час','Часа','Часов'],
45				minuts : ['Минута','Минуты','Минут'],
46				seconds : ['Секунда','Секунды','Секунд']
47		};
48
49		if (settings.language=='en') {
50			lang = {
51				days : ['Day','Days','Days'],
52				hours : ['Hour','Hours','Hours'],
53				minuts : ['Minut','Minuts','Minuts'],
54				seconds : ['Second','Seconds','Seconds']
55			};
56		}
57		var time_output = settings.end_message;
58
59		var inner = short.replace(/[^0-9]/g," ").split(' ');
60
61		var inner_format = settings['format_in'].replace(/[^%dMyhms]/g," ").split(' ');
62		var inner_array = [];
63		for (var i = 0; i < inner_format.length; i++) {
64			inner_array[inner_format[i]] = inner[i];
65		}
66		if (!inner_array['%y']) {
67			if(now > new Date(now.getFullYear(), inner_array['%M']-1, inner_array['%d'], inner_array['%h'],inner_array['%m'],inner_array['%s'])){
68				inner_array['%y'] = now.getFullYear() + 1;
69			}
70		}
71		var date_to = new Date(inner_array['%y'], (inner_array['%M']-1>=0?inner_array['%M']-1:now.getMonth()), inner_array['%d']||now.getDate()+1, inner_array['%h']||0, inner_array['%m']||0, inner_array['%s']||0);
72
73
74
75		function modifier_spellcount(num) {
76			var num_null = num<10?'0':'';
77			if (settings.wrapChar) {
78				var num = (num_null + num).toString().split('');
79				var res = '';
80
81				for (i = 0; i < num.length; i++) {
82					res += '<' + settings.wrapChar + '>' + num[i] + '</' + settings.wrapChar + '>';
83				}
84
85				return res;
86			}
87			return num_null + num;
88		}
89
90		function declension(number, one, two, five) {
91			number = Math.abs(number);
92		    number %= 100;
93		    if (number >= 5 && number <= 20) {
94		        return five;
95		    }
96		    number %= 10;
97		    if (number == 1) {
98		        return one;
99		    }
100		    if (number >= 2 && number <= 4) {
101		        return two;
102		    }
103		    return five;
104		}
105
106		function set_time() {
107			now = new Date();
108			var time_intervar = date_to - now - ((-now.getTimezoneOffset()*60000) - (settings.utc*3600*1000));
109			var days = Math.floor(time_intervar/3600/1000/24);
110			var hours = Math.floor(time_intervar/3600/1000) - Math.floor(time_intervar/3600/1000/24)*24;
111			var minuts = Math.floor(time_intervar/60/1000) - Math.floor(time_intervar/3600/1000)*60;
112			var seconds = Math.floor(time_intervar/1000) - Math.floor(time_intervar/60/1000)*60;
113			var daysName, hoursName, minutesName, secondsName;
114
115			if (time_intervar>0) {
116				
117				daysName = declension(days, lang.days[0], lang.days[1], lang.days[2]);
118				hoursName = declension(hours, lang.hours[0], lang.hours[1], lang.hours[2]);
119				minutesName = declension(minuts, lang.minuts[0], lang.minuts[1], lang.minuts[2]);
120				secondsName = declension(seconds, lang.seconds[0], lang.seconds[1], lang.seconds[2]);
121				days = modifier_spellcount(days);
122				hours = modifier_spellcount(hours);
123				minuts = modifier_spellcount(minuts);
124				seconds = modifier_spellcount(seconds);
125
126				time_output = settings['format_out']
127					.replace('%d', days)
128					.replace('%h', hours)
129					.replace('%m', minuts)
130					.replace('%s', seconds)
131					.replace(timerDays, daysName)
132					.replace(timerHours, hoursName)
133					.replace(timerMinutes, minutesName)
134					.replace(timerSeconds, secondsName);
135				obj.html(time_output);
136			}else{
137				obj.html(settings.end_message);
138				settings.onEnd.call(obj);
139				clearInterval(interval);
140			}
141		}
142		set_time();
143		if (settings.change) interval = window.setInterval(set_time,settings.update_time);
144    });
145  };
146})( jQuery );

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.