1(function( $ ){ 2 3 $.fn.timer = function( options ) { 4 5 // СоздаÑм наÑÑÑойки по-ÑмолÑаниÑ, ÑаÑÑиÑÑÑ Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿Ð°ÑамеÑÑов, коÑоÑÑе бÑли пеÑÐµÐ´Ð°Ð½Ñ 6 var now = new Date(); 7 var settings = $.extend( { 8 utc : (-now.getTimezoneOffset())/60, 9 language : 'ru', 10 format_in : '%d.%M.%y %h:%m:%s', 11 format_out : '%d %h %m %s', 12 end_message : "00:00:00", 13 wrapChar: false, 14 onEnd : function () {}, 15 change : true, 16 update_time : 1000 17 }, options); 18 19 return this.each(function() { 20 var obj = $(this); 21 22 var interval; 23 var lang = { 24 days : ['денÑ','днÑ','дней'], 25 hours : ['ÑаÑ','ÑаÑа','ÑаÑов'], 26 minuts : ['минÑÑа','минÑÑÑ','минÑÑ'], 27 seconds : ['ÑекÑнда','ÑекÑндÑ','ÑекÑнд'] 28 }; 29 if (settings.language=='en') { 30 lang = { 31 days : ['day','days','days'], 32 hours : ['hour','hours','hours'], 33 minuts : ['minut','minuts','minuts'], 34 seconds : ['second','seconds','seconds'] 35 }; 36 } 37 var time_output = settings.end_message; 38 var inner = obj.text().replace(/[^0-9]/g," ").split(' '); 39 var inner_format = settings['format_in'].replace(/[^%dMyhms]/g," ").split(' '); 40 var inner_array = []; 41 for (var i = 0; i < inner_format.length; i++) { 42 inner_array[inner_format[i]] = inner[i]; 43 } 44 if (!inner_array['%y']) { 45 if(now > new Date(now.getFullYear(), inner_array['%M']-1, inner_array['%d'], inner_array['%h'],inner_array['%m'],inner_array['%s'])){ 46 inner_array['%y'] = now.getFullYear() + 1; 47 } 48 } 49 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); 50 function modifier_spellcount(num) { 51 var num_null = num<10?'0':''; 52 if (settings.wrapChar) { 53 var num = (num_null + num).toString().split(''); 54 var res = ''; 55 56 for (i = 0; i < num.length; i++) { 57 res += '<' + settings.wrapChar + '>' + num[i] + '</' + settings.wrapChar + '>'; 58 } 59 60 return res; 61 } 62 return num_null + num; 63 } 64 65 function set_time() { 66 now = new Date(); 67 var time_intervar = date_to - now - ((-now.getTimezoneOffset()*60000) - (settings.utc*3600*1000)); 68 var days = Math.floor(time_intervar/3600/1000/24); 69 var hours = Math.floor(time_intervar/3600/1000) - Math.floor(time_intervar/3600/1000/24)*24; 70 var minuts = Math.floor(time_intervar/60/1000) - Math.floor(time_intervar/3600/1000)*60; 71 var seconds = Math.floor(time_intervar/1000) - Math.floor(time_intervar/60/1000)*60; 72 73 if (time_intervar>0) { 74 75 days = modifier_spellcount(days); 76 hours = modifier_spellcount(hours); 77 minuts = modifier_spellcount(minuts); 78 seconds = modifier_spellcount(seconds); 79 80 time_output = settings['format_out'] 81 .replace('%d', days) 82 .replace('%h', hours) 83 .replace('%m', minuts) 84 .replace('%s', seconds); 85 obj.html(time_output); 86 }else{
87 obj.html(settings.end_message); 88 settings.onEnd.call(obj); 89 clearInterval(interval); 90 } 91 } 92 set_time(); 93 if (settings.change) interval = window.setInterval(set_time,settings.update_time); 94 }); 95 }; 96})( 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.