	var months={1: "Январь", 2: "Февраль", 3: "Март", 4: "Апрель", 5: "Май", 6: "Июнь",
		7: "Июль", 8: "Август", 9: "Сентябрь", 10: "Октябрь", 11: "Ноябрь", 12: "Декабрь"};

	var month=null;
	var year=null;
	var sel_td=null;
	var d=new Date();
	var cl_tbl=null;
	var for_obj=null;
	var tbl_clk=0;

	function tbl_click()
	{
		tbl_clk=1;
	}

	function body_click()
	{
		if(!tbl_clk)
		{
			show_cl(0);
		}

		tbl_clk=0;
	}

	function show_cl(on, obj, disp, for_name)
	{
		if(on)
		{
			lf=abs_left(obj)+(disp?disp:0);
			tp=abs_top(obj);
			cl_tbl.style.left=lf;
			cl_tbl.style.top=tp+20;
			cl_tbl.style.display="block";
			for_obj=for_name;
			tbl_clk=1;
		}
		else
		{
			cl_tbl.style.display="none";
			for_obj=null;
		}
	}

	function abs_left(obj)
	{
		sum=obj.offsetLeft;
		while(obj.offsetParent)
		{
			obj=obj.offsetParent;
			sum+=obj.offsetLeft;
		}
		return sum;
	}

	function abs_top(obj)
	{
		sum=obj.offsetTop;
		while(obj.offsetParent)
		{
			obj=obj.offsetParent;
			sum+=obj.offsetTop;
		}
		return sum;
	}

	function cal_init()
	{
		month=document.getElementById('month');
		year=document.getElementById('year');
		cl_tbl=document.getElementById('tbl');

		document.body.onclick=body_click;

		var i;
		for(i=1;i<=12;i++)
		{
			var opt=document.createElement("option");
			opt.value=i;
			opt.text=months[i];
			month.options.add(opt);
		}

		var mn=d.getMonth();
		var yr=d.getFullYear();
		year.value=yr;
		month.selectedIndex=mn;

		set_month(0);
	}

	function done()
	{
		var dt=0;
		if(sel_td) dt=parseInt(sel_td.innerHTML);
		if(!(dt>0)) {alert("Выберите дату"); return;}
		var mn=month.selectedIndex+1;
		var yr=parseInt(year.value);

		if(sel_td) sel_td.className="norm";
		sel_td=null;
		cl_tbl.style.display="none";
		document.sform[for_obj].value=(dt>9?dt:"0"+dt)+"."+(mn>9?mn:"0"+mn)+"."+yr;
		for_obj=null;
	}

	function seldone(){sel(1);}

	function sel(dn)
	{
		var dt=parseInt(this.innerHTML);
		if(dt>0)
		{
			if(sel_td) sel_td.className="norm";
			this.className="sel";
			sel_td=this;
		}
		if(dn==1) done();
	}

	function step(inc)
	{
		if(inc)
			if(month.selectedIndex==11)
			{
				month.selectedIndex=0;
				year.value=parseInt(year.value)+1;
			}
			else month.selectedIndex++;
		else
			if(month.selectedIndex==0)
			{
				month.selectedIndex=11;
				year.value=parseInt(year.value)-1;
			}
			else month.selectedIndex--;

		update();
	}

	function update()
	{
		var mn=month.selectedIndex;
		var yr=parseInt(year.value);
		if(yr>2100) {year.value=2100; yr=2100;}
		set_month(yr*12+mn-(d.getFullYear()*12+d.getMonth()));
	}

	function getWeek(d)
	{
		if(d==0) return 6;
		else return d-1;
	}

	function set_month(disp)
	{
		sel_td=null;
		var tbl=cl_tbl;
		while(tbl.rows[3]) tbl.rows[2].parentNode.removeChild(tbl.rows[2]);

		var d=new Date();
		var mn=d.getMonth();
		var yr=d.getFullYear();
		ym=yr*12+mn;
		ym+=disp;
		yr=parseInt(ym/12);
		mn=ym%12;

		d.setYear(yr);
		d.setMonth(mn);

		d.setDate(1);
		w=getWeek(d.getDay());
		i=1-w;

		y=2;
		while(d.getMonth()==mn)
		{
			if(i>1)
			{
				d.setDate(i);
				if(d.getMonth()!=mn)	break;
			}
			var r=tbl.insertRow(y);
			y++;
			for(x=0;x<7;x++,i++)
			{
				var c=r.insertCell(-1);
				c.onclick=sel;
				c.ondblclick=seldone;
				c.onselectstart=startsel;
				if(i<1) {c.className="empt"; continue;}
				d.setDate(i);
				if(d.getMonth()==mn) {c.innerHTML=i; c.className="norm";}
				else c.className="empt";
			}
		}
	}

	function startsel()
	{
		return false;
	}
