document.write('<link rel="stylesheet" href="/PROG/JS_CALENDAR/style.css" type="text/css">');
document.write('<!--[if IE]><link rel="stylesheet" href="/PROG/JS_CALENDAR/style_ie.css" type="text/css"><![endif]-->');

function show_calendar(div_id, output_id){
	document.body.onmousedown = function (){
		close_calendar(div_id, output_id)
	};

	document.getElementById(div_id).onmousedown = function (){
		calendar_click(div_id)
	};

	document.getElementById(div_id).parentNode.onclick = function (){};
	document.getElementById(div_id).parentNode.style.cursor = 'auto';

	start_month = -1;
	start_year = -1;
	if(document.getElementById(div_id + '_month123')){
		start_month = document.getElementById(div_id + '_month123').value;
		start_year = document.getElementById(div_id + '_year123').value;
	}
	draw_calendar(div_id, output_id, start_month, start_year);
}


function close_calendar(div_id, output_id){
         if(document.getElementById(div_id + '_check123').value == '1')
		document.getElementById(div_id + '_check123').value = '0';
	else{
		document.body.onmousedown = function (){};
		document.getElementById(div_id).style.display = 'none';
		document.getElementById(div_id).parentNode.onclick = function (){
			show_calendar(div_id, output_id)
		};
		document.getElementById(div_id).parentNode.style.cursor = 'pointer';
	}
}


function calendar_click(div_id){
	document.getElementById(div_id + '_check123').value = '1';
}



function draw_calendar(div_id, output_id, start_month, start_year){
	document.getElementById(div_id).style.display = 'block';

	date_inf = get_date_inf(start_month, start_year);

	document.getElementById(div_id).innerHTML = '<input type="hidden" id="' + div_id + '_check123" value="0">';
	document.getElementById(div_id).innerHTML += '<input type="hidden" id="' + div_id + '_month123" value="' + date_inf[2] + '">';
	document.getElementById(div_id).innerHTML += '<input type="hidden" id="' + div_id + '_year123" value="' + date_inf[4] + '">';
	document.getElementById(div_id).innerHTML += '<div class="month"><div style="float: left">&nbsp;&nbsp;&nbsp;<a href="javascript: draw_calendar(\'' + div_id + '\', \'' + output_id + '\', ' + date_inf[9] + ', ' + date_inf[8] + ')">&lt;</a></div><div style="float: right"><a href="javascript: draw_calendar(\'' + div_id + '\', \'' + output_id + '\', ' + date_inf[11] + ', ' + date_inf[10] + ')">&gt;</a>&nbsp;&nbsp;&nbsp;</div>' + date_inf[3] + ' ' + date_inf[4] + '</div>';

	document.getElementById(div_id).innerHTML += '<div class="day">Пн</div><div class="day">Вт</div><div class="day">Ср</div><div class="day">Чт</div><div class="day">Пт</div><div class="day">Сб</div><div class="day">Вс</div>';

	// prev month
	if(date_inf[7] != 1){
		days_from_last_month = date_inf[7] - 1;
		if(days_from_last_month == -1) days_from_last_month = 6;
		for(i = days_from_last_month - 1; i >= 0; i--)
			document.getElementById(div_id).innerHTML += '<a href="javascript: save_calendar_date(\'' + div_id + '\', \'' + output_id + '\', ' + (date_inf[6] - i) + ', ' + date_inf[9] + ', ' + date_inf[8] + ')" class="other">' + (date_inf[6] - i) + '</a>';
	}

	// this month
	for(i = 1; i <= date_inf[5]; i++)
		if(check_weekend(i, date_inf[2], date_inf[4]))
			document.getElementById(div_id).innerHTML += '<a href="javascript: save_calendar_date(\'' + div_id + '\', \'' + output_id + '\', ' + i + ', ' + date_inf[2] + ', ' + date_inf[4] + ')" class="weekend">' + i + '</a>';
		else
			document.getElementById(div_id).innerHTML += '<a href="javascript: save_calendar_date(\'' + div_id + '\', \'' + output_id + '\', ' + i + ', ' + date_inf[2] + ', ' + date_inf[4] + ')">' + i + '</a>';

	// next month
	if(date_inf[12] != 0)
		for(i = 1; i <= (7 - date_inf[12]); i++)
			document.getElementById(div_id).innerHTML += '<a href="javascript: save_calendar_date(\'' + div_id + '\', \'' + output_id + '\', ' + i + ', ' + date_inf[11] + ', ' + date_inf[10] + ')" class="other">' + i + '</a>';
}

function save_calendar_date(div_id, output_id, d, m, y){
	m++; if(m < 10) m = '0' + m;
	res = d + '.' + m + '.' + y;

	if(document.getElementById(output_id).tagName == 'INPUT')
		document.getElementById(output_id).value = res;
	else if(document.getElementById(output_id).tagName == 'SELECT'){
		objSel = document.getElementById(output_id);
		objSel.options[objSel.options.length] = new Option(res, res, false, true);
	}else document.getElementById(output_id).innerHTML = res;

	close_calendar(div_id, output_id);
}

function check_weekend(d, m, y){
	d_obj = new Date(y, m, d); day_w = d_obj.getDay();
	return ((day_w == 6) || (day_w == 0));
}

function get_date_inf(start_month, start_year){
	if(start_month == -1) d_obj = new Date(); else d_obj = new Date(start_year, start_month, 1);
	day_m = d_obj.getDate();
	day_w = d_obj.getDay();
	month = d_obj.getMonth();
	year = d_obj.getFullYear();

	d_in_this_m = get_days_in_months(year, month);
	d_in_last_m = get_days_in_months(year, month - 1);
	first_day = get_first_day(day_m, day_w);
	last_day = get_last_day(day_m, day_w, d_in_this_m);

	prev_year = year; next_year = year; prev_month = month - 1; next_month = month + 1;
	if(prev_month < 0){prev_month = 11; prev_year--;}
	if(next_month > 11){next_month = 0; next_year++;}

	m_names = new Array('Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь');

	return Array(day_m, day_w, month, m_names[month], year, d_in_this_m, d_in_last_m, first_day, prev_year, prev_month, next_year, next_month, last_day);
}

function get_days_in_months(year, month){
	if(month < 0){month += 12; year--;}

	days_in_months = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	if((year / 4) == Math.round(year / 4)) days_in_months[1] = 29;

	return days_in_months[month];
}

function get_first_day(day_m, day_w){
	res = day_w - day_m + 1;
	while(res < 0) res += 7;
	return res;
}

function get_last_day(day_m, day_w, d_in_this_m){
	res = day_w + d_in_this_m - day_m;
	while(res > 6) res -= 7;
	return res;
}
