PageSourceSearch

https://www.bd-bulletin.com/templates/bulletine-web/js/js_calender.js

js bd-bulletin.com collected 2026-10-02 17:13:41 UTC 9,946 bytes, 323 lines download raw bytes

1var dayOffset = 2;
2var month_names = {
3	'bn':{
4		1:'জানুয়ারি',
5		2:'ফেব্রুয়ারি',
6		3:'মার্চ',
7		4:'এপ্রিল',
8		5:'মে',
9		6:'জুন',
10		7:'জুলাই',
11		8:'আগস্ট',
12		9:'সেপ্টেম্বর',
13		10:'অক্টোবর',
14		11:'নভেম্বর',
15		12:'ডিসেম্বর'
16		},
17	'en':{
18		1:'January',
19		2:'February',
20		3:'March',
21		4:'April',
22		5:'May',
23		6:'June',
24		7:'July',
25		8:'August',
26		9:'September',
27		10:'October',
28		11:'November',
29		12:'December'
30		}
31	};
32	
33var mDays = new Array(13);
34	mDays[1] = 31;
35	mDays[2] = 29;
36	mDays[3] = 31;
37	mDays[4] = 30;
38	mDays[5] = 31;
39	mDays[6] = 30;
40	mDays[7] = 31;
41	mDays[8] = 31;
42	mDays[9] = 30;
43	mDays[10] = 31;
44	mDays[11] = 30;
45	mDays[12] = 31;
46
47var bDays = new Array(11);
48	bDays[0] = '০';
49	bDays[1] = 'à§§';
50	bDays[2] = '২';
51	bDays[3] = 'à§©';
52	bDays[4] = '৪';
53	bDays[5] = 'à§«';
54	bDays[6] = '৬';
55	bDays[7] = 'à§­';
56	bDays[8] = 'à§®';
57	bDays[9] = '৯';
58
59function banglaNumber(v){
60	//IE7 FIX, IE7 does not index string
61	v = v.toString();
62	v = v.split("");
63	var bangla = "";
64	$(v).each(function(index, element) {
65		if(parseInt(element)>=0 && parseInt(element)<=9)
66			bangla += bDays[element];
67		else
68			bangla += element;
69		});
70	return bangla;
71	}
72
73function languageNumber(v,l){
74	if( l == 'bn' ){
75		return banglaNumber(v);
76		}
77	else{
78		return v;
79		}
80	}
81
82//IE 8 and 7 FIX
83/**Parses string formatted as YYYY-MM-DD to a Date object.
84 * If the supplied string does not match the format, an 
85 * invalid Date (value NaN) is returned.
86 * @param {string} dateStringInRange format YYYY-MM-DD, with year in
87 * range of 0000-9999, inclusive.
88 * @return {Date} Date object representing the string.
89 */
90function parseISO8601(dateStringInRange) {
91	var isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/,
92		date = new Date(NaN), month,
93		parts = isoExp.exec(dateStringInRange);
94
95	if(parts) {
96		month = +parts[2];
97		date.setFullYear(parts[1], month - 1, parts[3]);
98		if(month != date.getMonth() + 1){
99			date.setTime(NaN);
100			}
101		}
102	return date;
103	}
104
105
106
107var js_calender = function(st){	
108		var ths = new Object;
109		
110		ths.container = st.container?st.container:'';
111		ths.language = st.language?st.language:'en';
112		ths.lowest_year = st.lowest_year?st.lowest_year:'2005';
113		ths.current_date = st.current_date?st.current_date:'';
114		ths.last_date = st.last_date?st.last_date:'';
115		ths.url_prefix = st.url_prefix?st.url_prefix:'';
116		ths.url_postfix = st.url_postfix?st.url_postfix:'';	
117		ths.delimeter = st.delimeter?st.delimeter:'-';	
118		
119		ths.afterresizeinterval = null;
120		
121		ths.init = function(){
122			
123			var total_width = $(ths.container).parent().width() - 1;
124			
125			var each_cell_width = parseInt(total_width / 7);
126			ths.fixed_cell_width = each_cell_width - 3;
127			
128			$(ths.container + " .dayZone dt").width(ths.fixed_cell_width);
129			$(ths.container + " .dayZone dt").height(ths.fixed_cell_width);
130			$(ths.container + " .dayZone dt").css('line-height',ths.fixed_cell_width + "px");
131			
132			$(ths.container).width((each_cell_width*7) + 1);
133			ths.calenderRender('init');
134			
135			$(ths.container + " .yearSelector").change(ths.YearcalenderRender)
136			$(ths.container + " .monthSelector").change(ths.MonthcalenderRender);
137			$(ths.container + " .editionType span").click(ths.EditioncalenderRender);
138			
139			}
140		
141		ths.YearcalenderRender = function(){
142			ths.calenderRender('year');
143			}
144		ths.MonthcalenderRender = function(){
145			ths.calenderRender('month');
146			}
147		ths.EditioncalenderRender = function(){
148			$(ths.container + " .editionType span").removeClass('active');
149			$(this).addClass('active');
150			ths.calenderRender('edition');
151		}
152		ths.calenderRender = function(status){
153			var month;
154			var year;
155			var last_month;
156			var last_year;
157			var d_last = new Date(parseISO8601(ths.last_date));
158			var d = new Date(parseISO8601(ths.current_date));
159			var d_lowest = new Date(parseISO8601(ths.lowest_year));
160
161			if( status == 'init' ){
162				last_month = d_last.getMonth();
163				last_year = d_last.getFullYear();
164				month = d.getMonth();
165				year = d.getFullYear();
166				
167				if( d > d_last ){
168					month = last_month;
169					year = last_year;
170					}
171				
172				$(ths.container + " .calendarTop .monthSelector").html("");
173				
174				if(d_last.getFullYear() == d.getFullYear()){
175					for(i=1;i<=d_last.getMonth()+1;i++){
176						$(ths.container + " .calendarTop .monthSelector").append("<option value="+i+">"+ month_names[ths.language][i] +"</option>");
177						}
178					}
179				else if(d_lowest.getFullYear() == d.getFullYear()){
180					for(i=d_lowest.getMonth()+1;i<=12;i++){
181						$(ths.container + " .calendarTop .monthSelector").append("<option value="+i+">"+ month_names[ths.language][i] +"</option>");
182						}
183					}
184				else{
185					for(i=1;i<=12;i++){
186						$(ths.container + " .calendarTop .monthSelector").append("<option value="+i+">"+ month_names[ths.language][i] +"</option>");
187						}
188					}
189				
190				$(ths.container + " .calendarTop .yearSelector").html("");
191				for(i=d_lowest.getFullYear();i<=d_last.getFullYear();i++){
192					var bang_year = languageNumber(i,ths.language);
193					$(ths.container + " .calendarTop .yearSelector").append("<option value="+i+">"+ bang_year +"</option>");
194					}
195				
196				$(ths.container + " .monthSelector").val(month+1);
197				$(ths.container + " .yearSelector").val(year);
198
199				}
200			else if( status == 'year' || status == 'init' ){
201				$(ths.container + " .calendarTop .monthSelector").html("");
202				//var d_last = new Date(parseISO8601(ths.last_date));
203				
204				if(d_last.getFullYear() == $(ths.container + " .yearSelector").val()){
205					for(i=1;i<=d_last.getMonth()+1;i++){
206						$(ths.container + " .calendarTop .monthSelector").append("<option value="+i+">"+ month_names[ths.language][i] +"</option>");
207						}
208					}
209				else if(d_lowest.getFullYear() == $(ths.container + " .yearSelector").val()){
210					for(i=d_lowest.getMonth()+1;i<=12;i++){
211						$(ths.container + " .calendarTop .monthSelector").append("<option value="+i+">"+ month_names[ths.language][i] +"</option>");
212						}
213					}
214				else{
215					for(i=1;i<=12;i++){
216						$(ths.container + " .calendarTop .monthSelector").append("<option value="+i+">"+ month_names[ths.language][i] +"</option>");
217						}
218					}
219				}
220			
221			month = $(ths.container + " .monthSelector").val();
222			year = $(ths.container + " .yearSelector").val();			
223			
224			tmpD = new Date(year,month-1,1);
225			var startDay = tmpD.getDay()+dayOffset;
226			
227			var tDays = mDays[month];
228			
229			if( year % 4 && month == 2 ){
230				tDays = 28;
231				}
232			
233			if( startDay > 7 ){
234				startDay = startDay % 7;
235				}
236			
237			$(ths.container + " .dayHolder").html(ths.jFillDay(tDays,startDay,year,month));
238			$(ths.container + " .dayZone dd, " + ths.container + " .dateZone dd, " + ths.container + " .dateZone dt, " + ths.container + " .dateZone a").width(ths.fixed_cell_width);
239			$(ths.container + " .dayZone dd, " + ths.container + " .dateZone dd, " + ths.container + " .dateZone dt, " + ths.container + " .dateZone a").height(ths.fixed_cell_width);
240			$(ths.container + " .dayZone dd, " + ths.container + " .dateZone dd, " + ths.container + " .dateZone dt, " + ths.container + " .dateZone a").css('line-height',ths.fixed_cell_width + "px");
241			
242		}
243		
244		ths.jFillDay = function(month_length,startDay,y,m){
245			
246			var day = 1
247			var tBox = 42;
248			var html = "";
249			//var curDate = new Date(parseISO8601(__jwArchiveDate));
250			var curDate = new Date(parseISO8601(ths.current_date));
251			var d_lowest = new Date(parseISO8601(ths.lowest_year));
252			//last published date will be archived too, purpose will not server if arvhived date
253			//var lDate = new Date(); //new Date(__jwLastPublishedDate);
254			var lDate = new Date(parseISO8601(ths.last_date));
255			var d = y + "-" + ( m < 10 ? '0' : '' ) + m + "-";
256			// pad boxs
257			for (var i=1;i<startDay;i++){	
258				html += '<dd><a href="javascript:" class="blank_day disabled">&nbsp;</a></dd>';
259				tBox--;
260				}
261			
262			// fill days
263			tmp2 = new Date(parseISO8601(d + "01"));
264
265			if(d_lowest.getFullYear() == y && d_lowest.getMonth()+1 == m){
266				while(day < d_lowest.getDate()) {
267					t = ( day < 10 ? '0' : '' ) + day;
268					html += '<dd><a href="javascript:" class="disabled">'+languageNumber(t,ths.language)+'</a></dd>';
269					day++
270					tBox--;
271					}
272				}
273			
274			edition = $(ths.container + " .editionType .active").data('val');
275
276			while( day <= month_length && ( tmp2.getFullYear() == lDate.getFullYear() && tmp2.getMonth() <= lDate.getMonth() || tmp2.getFullYear() < lDate.getFullYear() ) ){
277				t = ( day < 10 ? '0' : '' ) + day;
278				tmp = d + t;
279				
280				tmp2 = new Date(parseISO8601(tmp));
281				if( tmp2.getFullYear() == lDate.getFullYear() && tmp2.getMonth() == lDate.getMonth() && lDate.getDate() < tmp2.getDate() ) break;
282				
283				classs = '';
284				if( tmp2.getFullYear() == curDate.getFullYear() && tmp2.getMonth() == curDate.getMonth() && curDate.getDate() == tmp2.getDate() ) classs = "active";
285				
286				html += '<dd><a href="' + ths.url_prefix + (edition?edition+'/':'') + tmp.replace(/(-)/g, ths.delimeter) + ths.url_postfix + '" class="' + classs + '">' + languageNumber(t,ths.language) + '</a></dd>';
287				day++
288				tBox--;
289				}
290				
291			// fill disabled days
292			
293			while(day <= month_length) {
294				t = ( day < 10 ? '0' : '' ) + day;
295				html += '<dd><a href="javascript:" class="disabled">'+languageNumber(t,ths.language)+'</a></dd>';
296				day++
297				tBox--;
298				}
299			
300			
301			//remaining box
302			/*while(tBox){
303				html += '<dd><a href="javascript:" class="disabled">&nbsp;</a></dd>';
304				tBox--;
305				}*/
306			return html;
307			}
308		
309		
310		ths.resizeinit = function(){
311			if( !ths.afterresizeinterval ) return;
312			clearInterval(ths.afterresizeinterval);
313			ths.init();
314			}
315		ths.resize_event = function(){
316			clearInterval(ths.afterresizeinterval);
317			ths.afterresizeinterval = setInterval(ths.resizeinit,500);
318			}
319			
320		ths.afterresizeinterval = setInterval(ths.resizeinit,100);
321			
322		$(window).resize(ths.resize_event);
323	}

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.