PageSourceSearch

https://zavtra.ru/js/calendar_kdg.js

js zavtra.ru collected 2026-10-02 02:52:26 UTC 8,936 bytes, 301 lines download raw bytes

1/* Javascript Calendar
2(c) kdg http://HTMLWEB.RU/java/example/calendar_kdg.php */
3
4
5var _Calendar=function(){
6var _Calendar={
7now:null,
8sccd:null,
9sccm:null,
10sccy:null,
11ccm:null,
12ccy:null,
13updobj:null,
14enddate:enddate,
15mn:new Array('Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'),
16mnn:new Array('31','28','31','30','31','30','31','31','30','31','30','31'),
17mnl:new Array('31','29','31','30','31','30','31','31','30','31','30','31'),
18calvalarr:new Array(42),
19
20$:function(objID)
21{
22    if(document.getElementById){return document.getElementById(objID);}
23    else if(document.all){return document.all[objID];}
24    else if(document.layers){return document.layers[objID];}
25},
26
27checkClick:function(e){
28	e?evt=e:evt=event;
29	CSE=evt.target?evt.target:evt.srcElement;
30	if (_Calendar.$('calc-kdg'))
31		if (!_Calendar.isChild(CSE,_Calendar.$('calc-kdg')) )
32			_Calendar.$('calc-kdg').style.display='none';
33},
34	
35isChild:function(s,d){
36	while(s){
37		if (s==d)
38			return true;
39		s=s.parentNode;
40	}
41	return false;
42},
43
44Left:function(obj){
45	var curleft = 0;
46	if (obj.offsetParent)
47	{
48		while (obj.offsetParent)
49		{
50			curleft += obj.offsetLeft
51			obj = obj.offsetParent;
52		}
53	}
54	else if (obj.x)
55		curleft += obj.x;
56	return curleft;
57},
58
59Top:function(obj){
60	var curtop = 0;
61	if (obj.offsetParent)
62	{
63		while (obj.offsetParent)
64		{
65			curtop += obj.offsetTop
66			obj = obj.offsetParent;
67		}
68	}
69	else if (obj.y)
70		curtop += obj.y;
71	return curtop;
72},
73
74
75lcs:function(ielem){
76    _Calendar.updobj=ielem;
77    _Calendar.$('calc-kdg').style.left=_Calendar.Left(ielem)+'px';
78    _Calendar.$('calc-kdg').style.top=_Calendar.Top(ielem)+ielem.offsetHeight+'px';
79	_Calendar.$('calc-kdg').style.display='block';
80	
81	// First check date is valid
82	curdt=ielem.value;
83	curdtarr=curdt.split('-');
84	
85	
86	isdt=true;
87	for(var k=0;k<curdtarr.length;k++){
88		if (isNaN(curdtarr[k]))
89			isdt=false;
90	}
91	if (isdt&(curdtarr.length==3)){
92		_Calendar.ccm=curdtarr[1]-1;
93		_Calendar.ccy=curdtarr[2];
94		_Calendar.prepcalendar(curdtarr[0],curdtarr[1]-1,curdtarr[2]);
95		_Calendar.prepcalendar(curdtarr[0],curdtarr[1]-1,curdtarr[2]);
96	}
97
98},
99
100evtTgt:function(e)
101{
102	var el;
103	if(e.target)el=e.target;
104	else if(e.srcElement)el=e.srcElement;
105	if(el.nodeType==3)el=el.parentNode; // defeat Safari bug
106	return el;
107},
108EvtObj:function(e){if(!e)e=window.event;return e;},
109
110cs_over:function(e){
111	_Calendar.evtTgt(_Calendar.EvtObj(e)).style.background='#cc4014';
112},
113
114cs_out:function(e){
115	_Calendar.evtTgt(_Calendar.EvtObj(e)).style.background='#ededed';
116},
117
118cs_click:function(e){
119	_Calendar.updobj.value=_Calendar.calvalarr[_Calendar.evtTgt(_Calendar.EvtObj(e)).id.substring(2,_Calendar.evtTgt(_Calendar.EvtObj(e)).id.length)];
120	_Calendar.$('calc-kdg').style.display='none';
121	
122	if ($('#exSearch').length == 0 ) 	AjaxSend(0,0); 
123},
124
125f_cps:function(obj){
126	obj.style.background='#ededed';
127	obj.style.font='18px trebuchet ms';
128	obj.style.color='#333333';
129	obj.style.textAlign='center';
130	obj.style.textDecoration='none';
131	obj.style.border='4px solid #fff';
132	obj.style.cursor='pointer';
133},
134
135prepcalendar:function( hd, cm, cy ){
136	_Calendar.now=new Date();
137	sd=_Calendar.now.getDate();
138	md=Math.max(cy,_Calendar.now.getFullYear());
139	td=new Date();
140	td.setDate(1);
141	td.setFullYear(cy);
142	td.setMonth(cm);
143	cd=td.getDay(); // день недели
144	if(cd==0)cd=6; else cd--;
145
146	vd='';
147	for(var m=0;m<12;m++) vd=vd+'<option value="'+m+'"'+(m==cm?' selected':'')+'>'+_Calendar.mn[m]+'</option>'; // цикл по месяцам
148
149	d='';
150	for(var y=cy-6;y<=md;y++)   d=d+'<option value="'+y+'"'+(y==cy?' selected':'')+'>'+y+'</option>'; // цикл по годам
151	_Calendar.$('mns').innerHTML=' <div class="DivYears"><select class="years" onChange="_Calendar.cyear(this);">' + d + '</select></div><div class="DivDay"><select class="days" onChange="_Calendar.cmonth(this);">' + vd + '</select></div><div id="data-but-clear"></div>'; // текущий месяц и год
152
153	marr=((cy%4)==0)?_Calendar.mnl:_Calendar.mnn;
154
155	for(var d=1;d<=42;d++)// цикл по всем ячейкам таблицы
156	{	d=parseInt(d);
157		vd=_Calendar.$ ( 'cv' + d );
158		_Calendar.f_cps ( vd );
159		if ((d >= (cd -(-1)))&&(d<=cd-(-marr[cm]))) {
160			dd = new Date(d-cd,cm,cy);
161			if(d==36)_Calendar.$("last_table_tr").style.display="";
162			vd.onmouseover=_Calendar.cs_over;
163			vd.onmouseout=_Calendar.cs_out;
164			vd.onclick=_Calendar.cs_click;
165			vd.classList.remove('to-be');
166
167			if (_Calendar.sccm == cm && _Calendar.sccd == (d-cd) && _Calendar.sccy == cy){
168				vd.style.color='#cc4014';			// сегодня
169				//vd.style.background='#cc4014';			// сегодня
170				//vd.classList.add('today');
171			}
172			if (_Calendar.enddate && _Calendar.sccm < cm && _Calendar.sccy <= cy){
173				vd.style.color='#ccc';
174				vd.onmouseover=null;
175				vd.onmouseout=null;
176				vd.onclick=null;
177				vd.style.cursor='default';
178				vd.classList.add('to-be');
179			}
180			
181			if ( _Calendar.enddate && _Calendar.sccm == cm && _Calendar.sccy == cy && _Calendar.sccd < (d-cd) ){
182				vd.style.color='#ccc';
183				vd.onmouseover=null;
184				vd.onmouseout=null;
185				vd.onclick=null;
186				vd.style.cursor='default';
187				vd.classList.add('to-be');
188			}
189				/*else if(dd.getDay()==6||dd.getDay()==0)
190				vd.style.color='#FF0000'; // выходной*/
191		//alert (_Calendar.sccm);
192			vd.innerHTML=d-cd;
193
194		//	$('.line-category span').trigger('click');
195			_Calendar.calvalarr[d]=_Calendar.addnull(d-cd,cm-(-1),cy);
196			
197			
198		}
199		else
200		{
201			if(d==36){_Calendar.$("last_table_tr").style.display="none"; break;}
202			vd.innerHTML='&nbsp;';
203			vd.onmouseover=null;
204			vd.onmouseout=null;
205			vd.onclick=null;
206			vd.style.cursor='default';
207		}
208	}
209	
210},
211
212caddm:function(){
213	marr=((_Calendar.ccy%4)==0)?_Calendar.mnl:_Calendar.mnn;
214
215	_Calendar.ccm+=1;
216	
217	if (_Calendar.ccm>=12){
218		_Calendar.ccm=0;
219		_Calendar.ccy++;
220	}
221	_Calendar.prepcalendar('',_Calendar.ccm,_Calendar.ccy);
222},
223
224csubm:function(){
225	marr=((_Calendar.ccy%4)==0)?_Calendar.mnl:_Calendar.mnn;
226
227	_Calendar.ccm-=1;
228	if (_Calendar.ccm<0){
229		_Calendar.ccm=11;
230		_Calendar.ccy--;
231	}
232	_Calendar.prepcalendar('',_Calendar.ccm,_Calendar.ccy);
233	
234},
235
236cmonth:function(t){
237    _Calendar.ccm=t.options[t.selectedIndex].value;
238    _Calendar.prepcalendar('',_Calendar.ccm,_Calendar.ccy);
239},
240
241cyear:function(t){
242	_Calendar.ccy=t.options[t.selectedIndex].value;
243	_Calendar.prepcalendar('',_Calendar.ccm,_Calendar.ccy);
244},
245
246today:function(){
247	_Calendar.updobj.value=_Calendar.addnull(_Calendar.now.getDate(),_Calendar.now.getMonth()+1,_Calendar.now.getFullYear());
248	_Calendar.$('calc-kdg').style.display='none';
249	_Calendar.prepcalendar('',_Calendar.sccm,_Calendar.sccy);
250	if ($('#exSearch').length == 0 ) 	AjaxSend(0,0);
251},
252
253addnull:function(d,m,y){
254	var d0='',m0='';
255	if (d<10)d0='0';
256	//if (m<10)m0='0';
257	var months = ['','января', 'февраля', 'марта', 'апреля','мая', 'июня', 'июля', 'августа','сентября', 'октября', 'ноября', 'декабря'];
258	
259	return ''+d0+d+' '+months[m]+' '+y;
260}
261}
262
263_Calendar.now=n=new Date;
264_Calendar.sccd=n.getDate();
265_Calendar.sccm=n.getMonth();
266_Calendar.sccy=n.getFullYear();
267_Calendar.ccm=n.getMonth();
268_Calendar.ccy=n.getFullYear();
269
270document.write('<div id="calc-kdg"><table id="fc" style="border-collapse:collapse;background:#FFFFFF;-moz-user-select:none;-khtml-user-select:none;user-select:none;z-index:100;" cellpadding=2>');
271document.write('<tr style="font:bold 13px Arial; height: 50px;"><td colspan="7" id="mns" align="center"></td></tr>');
272document.write('<tr style="background: #fff; color: #000; font: bold 14px trebuchet ms; height: 35px; vertical-align: middle;"><td align=center>пн</td><td align=center>вт</td><td align=center>ср</td><td align=center>чт</td><td align=center>пт</td><td align=center>сб</td><td align=center>вс</td></tr>');
273for(var kk=1;kk<=6;kk++){
274	//document.write('<tr>');
275	if(kk==6)
276		document.write('<tr id="last_table_tr">')
277	else
278		document.write('<tr>');
279	for(var tt=1;tt<=7;tt++){
280		num=7 * (kk-1) - (-tt);
281		document.write('<td id="cv' + num + '" style="width:35px;height:35px">&nbsp;</td>');
282	}
283	document.write('</tr>');
284}
285document.write('<tr><td colspan="7" align="center" style="cursor:pointer; height: 35px;font:16px trebuchet ms;background:#ededed;color:#333;border: 4px solid #fff;" onclick="_Calendar.today()">Сегодня <b style="border-bottom: 1px dotted;">'+_Calendar.addnull(_Calendar.sccd,_Calendar.sccm+1,_Calendar.sccy)+'</b></td></tr>');
286document.write('</table></div>');
287
288document.all?document.attachEvent('onclick',_Calendar.checkClick):document.addEventListener('click',_Calendar.checkClick,false);
289
290_Calendar.prepcalendar('',_Calendar.ccm,_Calendar.ccy);
291
292return _Calendar;
293}();
294
295
296$('#data-but-clear').click(function(){
297	$('.date-select input').val('Выбрать дату');
298	$('#calc-kdg').hide();
299	
300	if ($('#exSearch').length == 0 ) 	AjaxSend(0,0);
301});

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.