PageSourceSearch

https://mcconline.org.in/js/jquery.countdown.js

js mcconline.org.in collected 2026-10-07 00:12:37 UTC 3,215 bytes, 154 lines download raw bytes

1/**
2 * @name		jQuery Countdown Plugin
3 * @author		Martin Angelov
4 * @version 	1.0
5 * @url			http://tutorialzine.com/2011/12/countdown-jquery/
6 * @license		MIT License
7 */
8
9(function($){
10	
11	// Number of seconds in every time division
12	var days	= 24*60*60,
13		hours	= 60*60,
14		minutes	= 60;
15	
16	// Creating the plugin
17	$.fn.countdown = function(prop){
18		
19		var options = $.extend({
20			callback	: function(){},
21			timestamp	: 0
22		},prop);
23		
24		var left, d, h, m, s, positions;
25
26		// Initialize the plugin
27		init(this, options);
28		
29		positions = this.find('.position');
30		
31		(function tick(){
32			
33			// Time left
34			left = Math.floor((options.timestamp - (new Date())) / 1000);
35			
36			if(left < 0){
37				left = 0;
38			}
39			
40			// Number of days left
41			d = Math.floor(left / days);
42			updateDuo(0, 1, d);
43			left -= d*days;
44			
45			// Number of hours left
46			h = Math.floor(left / hours);
47			updateDuo(2, 3, h);
48			left -= h*hours;
49			
50			// Number of minutes left
51			m = Math.floor(left / minutes);
52			updateDuo(4, 5, m);
53			left -= m*minutes;
54			
55			// Number of seconds left
56			s = left;
57			updateDuo(6, 7, s);
58			
59			// Calling an optional user supplied callback
60			options.callback(d, h, m, s);
61			
62			// Scheduling another call of this function in 1s
63			setTimeout(tick, 1000);
64		})();
65		
66		// This function updates two digit positions at once
67		function updateDuo(minor,major,value){
68			switchDigit(positions.eq(minor),Math.floor(value/10)%10);
69			switchDigit(positions.eq(major),value%10);
70		}
71		
72		return this;
73	};
74
75
76	function init(elem, options){
77		elem.addClass('countdownHolder');
78
79		// Creating the markup inside the container
80		$.each(['Days','Hours','Minutes','Seconds'],function(i){
81			var boxName;
82			if(this=="Days") {
83				boxName = "DAYS";
84			}
85			else if(this=="Hours") {
86				boxName = "Hours";
87			}
88			else if(this=="Minutes") {
89				boxName = "Minutes";
90			}
91			else {
92				boxName = "Seconds";
93			}
94			$('<div class="count'+this+'">' +
95				'<span class="position">' +
96					'<span class="digit static">0</span>' +
97				'</span>' +
98				'<span class="position">' +
99					'<span class="digit static">0</span>' +
100				'</span>' +
101				'<span class="boxName">' +
102					'<span class="'+this+'">' + boxName + '</span>' +
103				'</span>'
104			).appendTo(elem);
105			
106			if(this!="Seconds"){
107				elem.append('<span class="points">:</span><span class="countDiv countDiv'+i+'"></span>');
108			}
109		});
110
111	}
112
113	// Creates an animated transition between the two numbers
114	function switchDigit(position,number){
115		
116		var digit = position.find('.digit')
117		
118		if(digit.is(':animated')){
119			return false;
120		}
121		
122		if(position.data('digit') == number){
123			// We are already showing this number
124			return false;
125		}
126		
127		position.data('digit', number);
128		
129		var replacement = $('<span>',{
130			'class':'digit',
131			css:{
132				top:0,
133				opacity:0
134			},
135			html:number
136		});
137		
138		// The .static class is added when the animation
139		// completes. This makes it run smoother.
140		
141		digit
142			.before(replacement)
143			.removeClass('static')
144			.animate({top:0,opacity:0},'fast',function(){
145				digit.remove();
146			})
147
148		replacement
149			.delay(100)
150			.animate({top:0,opacity:1},'fast',function(){
151				replacement.addClass('static');
152			});
153	}
154})(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.