var php_script= '/CMS/modules/calendar/count.php';
var waiting_image = new Image();
    waiting_image.src = "/CMS/modules/calendar/black.gif";
var waiting_image_a = new Image();
    waiting_image_a.src = "/CMS/modules/calendar/red.gif";
var array_left_image = new Image();
    array_left_image.src = "/CMS/modules/calendar/left-array.gif";
var array_right_image = new Image();
    array_right_image.src = "/CMS/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 months = Array('январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь' );
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 = 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=1; i<=7; i++){
		switch(i){
			case(1):letter='пон'; break;
			case(2):letter='втр'; break;
			case(3):letter='срд'; break;
			case(4):letter='чет'; break;
			case(5):letter='пят'; break;
			case(6):letter='суб'; break;
			case(7):letter='вск'; break;
		}
		days += '\t<td align="center" class="days'+(((i%7)==6)?'_sun':'')+''+(((i%7)==0)?'_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:#00578e">'+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><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="/1.gif"></td></tr>'+
	'<tr><td colspan="7"><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="'+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 create_object(){
  xmlHttp = false;
  /*@cc_on @*/
  /*@if (@_jscript_version >= 5)
  try {
    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e2) {
      xmlHttp = false;
    }
  }
  @end @*/
  if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
    xmlHttp = new XMLHttpRequest();
  }
}



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="/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="/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;
  if (xmlHttp.readyState!=0 && xmlHttp.readyState!=4) create_object();
 
  var url = php_script+'?month=' + month + '&year=' + year + '&PATTERN=' + class_id;
  xmlHttp.open('GET', url, true);
  xmlHttp.onreadystatechange = updatePage;
  xmlHttp.send(null);
}

function updatePage() {
  if (xmlHttp.readyState == 4) {
    clearTimeout(wait_timeout);
    var response = xmlHttp.responseText;
    mask=response.split('.');
    generateCalendar(day,month,year);

  }
//  elseif(xmlHttp.readyState == ?? ){
//    alert ('Ошибка возврата от сервера');
//  }
}

