var php_script='/netcat/modules/calendar/count.php';
var waiting_image=new Image();
waiting_image.src = "/netcat/modules/calendar/black.gif";
var waiting_image_a=new Image();
waiting_image_a.src="/netcat/modules/calendar/red.gif";
var array_left_image=new Image();
array_left_image.src="/netcat/modules/calendar/left-array.gif";
var array_right_image=new Image();
array_right_image.src="/netcat/modules/calendar/right-array.gif";

var html_start='<table cellpadding=0 cellspacing=0 class=calend_table>\n';
var html_body='';
var html_end = '</table>';
var mask;
var old_year, old_month;
var xmlHttp=false;
var wait_timeout;
var curr_date=new Date();
var curr_year=Math.floor(curr_date.getFullYear());
var curr_month=Math.floor(curr_date.getMonth()+1);
var curr_day=Math.floor(curr_date.getDate());

window.onload=function(){
	// Текстовое поле #1
	if(document.getElementById('calendar')){
		var curr_date=new Date();
		if ((day==0) && (month==0) && (year==0)){
			year=Math.floor(curr_date.getFullYear());
			month=Math.floor(curr_date.getMonth()+1);
			day=Math.floor(curr_date.getDate());
			}
		callServer(day, month, year);
		}
	};

function overlink(obj){
	obj.style.cursor='pointer';
	obj.style.color='#F00';
	}

// текущая дата
function currentDate(){
	curr_date=new Date();
	day=curr_date.getDate()+'';
	month=(curr_date.getMonth()+1)+'';
	if(day.length==1) day='0'+day;
	if(month.length==1) month='0'+month;
	return day+'.'+month+'.'+curr_date.getFullYear();
	}

// кол-во дней в месяце
function days_in_month(month,year){
	if(month!==''){
		var months=new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 30, 31);
		var d=months[month-1];
		if((month==2) && ((year%4)===0)) d++;
		return d;
		}
	}

function new_date(){
	var date_day_Field=document.getElementById('select_day_field');
	var date_month_Field=document.getElementById('select_month_field');
	var date_year_Field=document.getElementById('select_year_field');
	year=Math.floor(date_year_Field.value);
	month=Math.floor(date_month_Field.value);
	day=Math.floor(date_day_Field.value);
	callServer(day, month, year);
	}

function select_day(){
	return '<input type="hidden" id="select_day_field" value="'+day+'">';  
	}
function select_month(){
	var result='<select id="select_month_field" onchange = "new_date();">';
	for(var j=0; j<12; j++) 
		result+='<option value="'+(j+1)+'" '+((month==(j+1))?' selected':' ')+'>'+months[j]+'</option>';
	result+='</select>';
	return result;
	}      
function select_year(){
	var result='<select id="select_year_field" onchange = "new_date();">';
	var limit=curr_year+10;
	for(var j=(curr_year-10); j<=limit; j++)
		result+='<option value="'+(j)+'" '+((year==j)?' selected':' ')+'>'+(j)+'</option>';
	result+='</select>';
	return result;
	}

function generateCalendar2(day2, month2, year2){
	year=year2;
	month=month2;
	day=day2;
	callServer(day, month, year);
	}

function generateCalendar(day, month, year){
	day = Math.floor(day);
	month = Math.floor(month);
	year = Math.floor(year);

	var d=new Date(year, month-1, day);
	var d1=new Date(year, month-1, 1);
	var days='';
	var class_td='';
	var letter='';

	days+='<tr>\n';
	for(var i=0; i<7; i++){
		letter=weekdays[i];
		days+='\t<td align="center" class="days'+((i==5)?'_sun':'')+''+((i==6)?'_sun_right':'')+'">'+letter+'</td>\n';
		}
	days+='</tr>\n<tr>\n';
	var wd=d1.getDay();

	if(wd===0) {wd=7;}
	for(var i=1; i<wd; i++){
		days += '\t<td class="no_day'+((((i%7)==6) || ((i%7)==0))?'_sun"':'"')+'>&nbsp;</td>\n';
		}
	for(var i=1; i<=days_in_month(month, year); i++){
		if(((wd+i-1)%7)==1) {days += '</tr>\n<tr>\n';}

		if ((wd+i-1)%7==6) {class_td = 'class="day_sun"';} 
      else if ((wd+i-1)%7==0) {class_td = 'class="day_sun_right"';}
        else {class_td = 'class="day"';}
    var class_name=class_td.split('"');
    if (mask[i-1]==1){days +='<td align=center '+class_td+' onClick=location.href="./?cal_date='+i+'.'+month+'.'+year+'" onmouseover="this.className=\'mouseover\'" onmouseout="this.className=\''+class_name[1]+'\'" style="text-decoration: underline; color: #35731d">'+i+'</td>\n';} 
      else {days += '\t<td align=center '+class_td+' >'+i+'</td>\n';}
	}

	d1 = new Date(year, month-1, days_in_month(month, year));
	var wd = d1.getDay(); if(wd==0) {wd=7;}
	for(var i=(wd+1); i<=7; i++){days += '\t<td class="no_day'+(((i%7)==6)?'_sun':'')+''+(((i%7)==0)?'_sun_right':'')+'">&nbsp;</td>\n';}
	days += '</tr>\n';

	html_body='<tr class="noborder"><td colspan="6" align="right" class="navig_form1">'+select_day()+'&nbsp;'+select_month()+'&nbsp;'+select_year()+'</td><td class="navig_form1" align="right"><img id="waiting" height=16 width=16 border=0 alt="waiting" title="waiting" src="/i/transparent.gif"></td></tr>'+
		'<tr class="noborder"><td colspan="7"><table cellspacing="0" class="navig_form2" width="100%"><tr>'+
			'<td align="left" class="navig_butt" onClick="generateCalendar2('+day+', '+((month==1)?12:(month-1))+', '+((month==1)?(year-1):year)+');"><img src="'+array_left_image.src+'" height="21" width="29"></td>'+
			'<td align="center" class="navig_date">'+months[month-1]+' '+year+'</td>'+
			'<td align="right" class="navig_butt" onClick="generateCalendar2('+day+', '+((month==12)?1:(month+1))+', '+((month==12)?(year+1):year)+');"><img src="'+array_right_image.src+'" height="21" width="29"></td>'+
		'</tr></table></td></tr>';

	document.getElementById('calendar').innerHTML=html_start+html_body+days+html_end;
	}

function callServer(day, month, year){
	if(document.getElementById('waiting')){
		document.getElementById('waiting').src= waiting_image_a.src;
		wait_timeout=setTimeout("(document.getElementById('waiting'))?document.getElementById('waiting').src= waiting_image.src:'';", 400);
		}
	else{
		html_body='<tr><td align="right" class="navig_form1">'+select_day()+'&nbsp;'+select_month()+'&nbsp;'+select_year()+'</td><td class="navig_form1" height=28 align=right><img src='+waiting_image.src+'></td></tr>'+
                  '<tr><td colspan="2"><table cellpadding=0 cellspacing=0 class="navig_form2" width=100%><tr>'+
                  '<td align="left" class="navig_butt" onClick="generateCalendar2('+day+', '+((month==1)?12:(month-1))+', '+((month==1)?(year-1):year)+');"><img src="/netcat/modules/calendar/left-array.gif" height="21" width="29"></td>'+
	                '<td align="center" class="navig_date">'+months[month-1]+' '+year+'</td>'+
	                '<td align="right" class="navig_butt" onClick="generateCalendar2('+day+', '+((month==12)?1:(month+1))+', '+((month==12)?(year+1):year)+');"><img src="/netcat/modules/calendar/right-array.gif" height="21" width="29"></td>'+
                  '</tr></table></td></tr>';
		document.getElementById('calendar').innerHTML=html_start+html_body+html_end;
		}

	if(old_year==year && old_month==month) return;
	old_month=month; old_year=year;

	var url=php_script+'?month=' + month + '&year=' + year + '&PATTERN=' + class_id;
	makeRequest(url, updatePage);
	}

function updatePage(http_request){
	if(http_request.readyState==4){
		if (http_request.status==200){
			clearTimeout(wait_timeout);
			var response=http_request.responseText;
			mask=response.split('.');
			generateCalendar(day, month, year);
			}
		else{
			alert('Произошла ошибка при обработке запроса');
			}
		}
	}

