1;(function($){ 2 3 // Êîëè÷åñòâî ñåêóíä â êàæäîì âðåìåííîì îòðåçêå 4 var days = 24*60*60, 5 hours = 60*60, 6 minutes = 60; 7 8 // Ñîçäàåì ïëàãèí 9 $.fn.countdownshare = function(prop){ 10 11 var options = $.extend({ 12 callback : function(){}, 13 timestamp : 0, 14 showtext : false, 15 text_d: false, 16 text_h: false, 17 text_m: false, 18 text_s: false 19 },prop); 20 21 var left, d, h, m, s, positions; 22 23 // èíèöèàëèçèðóåì ïëàãèí 24 25 initcount(this, options); 26 27 positions = this.find('.position'); 28 29 (function tick(){ 30 31 // Îñòàëîñü âðåìåíè 32 left = Math.floor((options.timestamp - (new Date())) / 1000); 33 34 if(left < 0){ 35 left = 0; 36 } 37 38 // Îñòàëîñü äíåé 39 d = Math.floor(left / days); 40 updateDuo(0, 1, d); 41 left -= d*days; 42 43 // Îñòàëîñü ÷àñîâ 44 h = Math.floor(left / hours); 45 updateDuo(2, 3, h); 46 left -= h*hours; 47 48 // Îñòàëîñü ìèíóò 49 m = Math.floor(left / minutes); 50 updateDuo(4, 5, m); 51 left -= m*minutes; 52 53 // Îñòàëîñü ñåêóíä 54 s = left; 55 updateDuo(6, 7, s); 56 57 // Âûçûâàåì âîçâðàòíóþ ôóíêöèþ ïîëüçîâàòåëÿ 58 options.callback(d, h, m, s); 59 60 // Ïëàíèðóåì ñëåäóþùèé âûçîâ äàííîé ôóíêöèè ÷åðåç 1 ñåêóíäó 61 setTimeout(tick, 1000); 62 })(); 63 64 // Äàííàÿ ôóíêöèÿ îáíîâëÿåò äâå öèôðîâûå ïîçèöèè çà îäèí ðàç 65 function updateDuo(minor,major,value){ 66 switchDigit(positions.eq(minor),Math.floor(value/10)%10); 67 switchDigit(positions.eq(major),value%10); 68 } 69 70 return this; 71 }; 72 73 74function initcount(elem, options){ 75 elem.addClass('countdownHolderN'); 76 77 // Ñîçäàåì ðàçìåòêó âíóòðè êîíòåéíåðà 78 $.each(['Days','Hours','Minutes','Seconds'],function(i){ 79 80 if(options.showtext) { 81 if(this=='Days') 82 var texxt = options.text_d; 83 if(this=='Hours') 84 var texxt = options.text_h; 85 if(this=='Minutes') 86 var texxt = options.text_m; 87 if(this=='Seconds') 88 var texxt = options.text_s; 89 }else{ 90 var texxt = ""; 91 } 92 /* 93 if(this=='Days'){ 94 95 } 96 else if(this=='Seconds') { 97 var texxt = ''; 98 } 99 else{ 100 var texxt = ':'; 101 }*/ 102 //var texxt = options.text_d; 103 elem.append('<span class="count'+this+'"></span>'); 104 $('#'+elem.attr('id')+' .count'+this).html('<span class="position"><span class="digit static">0</span></span><span class="position"><span class="digit static">0</span></span><span class="countDiv countDiv'+i+'">'+texxt+'</span>'); 105 }); 106 107} 108 109// Ñîçäàåì àíèìèðîâàííûé ïåðåõîä ìåæäó äâóìÿ öèôðàìè 110function switchDigit(position,number){ 111 112 var digit = position.find('.digit') 113 114 if(digit.is(':animated')){ 115 return false; 116 } 117 118 if(position.data('digit') == number){ 119 // Ìû óæå âûâåëè äàííóþ öèôðó 120 return false; 121 } 122 123 position.data('digit', number); 124 125 var replacement = $('<span>',{ 126 'class':'digit', 127 css:{ 128 opacity:0 129 }, 130 html:'<b class="bgc_item_'+number+'"></b>' 131 }); 132 133 // Êëàññ .static äîáàâëÿåòñÿ, êîãäà çàâåðøàåòñÿ àíèìàöèÿ. 134 // Âûïîëíåíèå èäåò áîëåå ïëàâíî. 135 136 digit 137 .before(replacement) 138 .removeClass('static') 139 .animate({opacity:0}
139,'fast',function(){ 140 digit.remove(); 141 }) 142 143 replacement 144 .delay(100) 145 .animate({opacity:1},'fast',function(){ 146 replacement.addClass('static'); 147 }); 148} 149 150})(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.