﻿/* ********************************************************************
*  Календарь v2.0
*  03.11.2007
*
*  created by lion
*  lion@zsmk.ru
************************************************************************ */
var day, month, year;
var dw = new Array(7,1,2,3,4,5,6); //Дни недели
var dm = new Array(/*jan*/31,/*feb*/28,/*mar*/31,/*apr*/30,
                   /*may*/31,/*jun*/30,/*jul*/31,/*aug*/31,
                   /*sep*/30,/*oct*/31,/*nov*/30,/*dec*/31);
var mnames = new Array('Январь','Февраль','Март','Апрель',
                       'Май','Июнь','Июль','Август',
                       'Сентябрь','Октябрь','Ноябрь','Декабрь');
var weColor = "#E5E5E5"; // Цвет выходных дней
var cdColor = "#99CCFF"; // Цвет текущего дня
var odColor = "#ABABAB"; // Цвет остальных дней
var curDate = new Date();

day = curDate.getDate();
year = curDate.getFullYear();
month = curDate.getMonth();

var curmonth = month; // Используется как константа
var curyear = year;
var weSaveStyle;
var oCal; // Календарь

if (day == dm[month]){
  curDate.setHours(25);
  month = curDate.getMonth();
}

var Mask, InsObjName;

// Проверка на высокосный год
if(((year % 4 == 0)&&(year % 100 != 0))||(year % 400 == 0)){
	dm[1] = 29;
}

function mouseMove(event){ // Подсветка при наведении Мышью
	var event = new Event(event);
	var obj = event.target;
	if(obj.className == "normal"){
		weSaveStyle = obj.style.backgroundColor;
		obj.style.backgroundColor = "";
		obj.className = "highlight";
	}else{
		if(obj.className == "highlight"){
			obj.style.backgroundColor = weSaveStyle;
			obj.className = "normal";
		}
	}
}

function MonthDec(){ // Предыдущий месяц
 if(month > 0){
  month--;
  renderCalendar(month);
 }
}

function MonthInc(){ // Следующий месяц
 	if(month < 11){
  		month++;
  		renderCalendar(month);
 	}
}

function customMonth(){
 month = $('cmonths').value;
 year = $('cyears').value;
 renderCalendar(month);
}

function formatMask(anumber){ // Форматная маска для возвращаемой даты
	var s = anumber.toString(10);
	if(s.length == 1){
		s = "0"+s;
	}
	return(s);
}

function DayClick(d,month,year){ // Клик по дню
	var s = "",t;
	var objM;
	var objH; 
	if(Mask.length > 0){
		for(i = 0; i <= Mask.length; i++){
			t = Mask.charAt(i);
		    switch(t){
				case "d":
					s += formatMask(d);
					break;
				case "m":
					s += formatMask(++month);
					break;
				case "Y":
					s += year;
					break;
				case "h":
					if(objH.value)
						s += formatMask(objH.value);
					break;
				case "M":
					if(objM.value)
						s += formatMask(objM.value);
					break; 
				default:
					s += t;
					break;
		    }
		} 
	}else{
		s = year+formatMask(++month)+formatMask(d);
	}
	$(InsObjName).setText(s);
	var dd = $('ddate');
	dd.value = s;	
	//CalHide();
}

function CalHide(){ // Спрятать календарь	
	oCal.style.display = "none";	
	day = curDate.getDate();
	year = curDate.getFullYear();
	month = curDate.getMonth();
}

function showCal(amask,aname, e){ // Показать календарь	
	Mask = amask;
	InsObjName = aname;
	
	if(!oCal){
		oCal = $('cal');   
	}	
	//oCal.style.display = "";
	//oCal.style.left = e.clientX+"px";	
	//oCal.style.top = e.clientY+"px";
	
	renderCalendar(month);
}

function closeMMove(s){
	window.status = s;
	return true;
}

function renderCalendar(amonth){ // Календарь
	month = amonth;

	var fdmDate = new Date(year,amonth,1);	
	var s, i, j;
	var days, fday = fdmDate.getDay();
	var dstyle = "", dcolor = "", dclass, dattrs;

	fday = dw[fday];
	days = 1;

	s = "<table bgcolor=\"#F3F3F3\" class=\"cal\">";
	s += "<tr><td colspan=\"7\" align=\"right\">"+
	     //"<a href=\"#\" onclick=\"CalHide();\">"+
	     //"<img src=\"/view/main/images/close.jpg\" border=\"0\" title=\"Закрыть\"></a>"+
	     "</td></tr>";
	s += "<tr><td colspan=\"7\">";
	s += "<table cellpadding=\"0\" cellspacing=\"0\" class=\"cal\">"+ 
	      "<tr><td><select class=\"cal-edit\" id=\"cmonths\" onchange=\"customMonth();\">";
	for(i  = 0; i <= 11; i++){
		s += "<option"+(i == amonth ? " selected" : "")+" value=\""+i+"\">"+mnames[i]+"</option>";
	}
	s += "</select></td><td><select class=\"cal-edit\" id=\"cyears\" onchange=\"customMonth();\">";
	for(i = 2007; i <= 2020; i++){
		s += "<option "+(year == i ? "selected" : "")+" value=\""+i+"\">"+i+"</option>";
	}
	s += "</select></td><tr></table>";

	s += "</td></tr>";
	s += "<tr class=\"cal-wdays\"><td>Пн</td><td>Вт</td><td>Ср</td><td>Чт</td><td>Пт</td><td>Сб</td><td>Вс</td></tr>";
	for(i = 0; i < 6; i++){
		s += "<tr>";
		for(j = 1; j <= 7; j++){
			if((days == day)&&(curmonth == amonth)&&(year == curyear)){ // Подсветка текущей даты
				dstyle = "background-color: "+cdColor+";";
			}else{
				if(j > 5)
					dstyle = "background-color: "+weColor+";"; // Подсветка выходных дней
				else
					dstyle = "";
			}
			
			dcolor = "";
			dclass = "normal";
			dattrs = "onclick=\"DayClick('"+days+"','"+amonth+"','"+year+"');\"";
			dattrs += " onmouseover=\"mouseMove(event);\" onmouseout=\"mouseMove(event);\""; 
			
			if(curmonth > amonth){
    			dcolor = "color: "+odColor+";";
    			dclass = "";
    			dattrs = "";
   			}else{
     			if(curmonth == amonth){
      				if(days <= day){
       					dcolor = "color: "+odColor+";";
       					dclass = "";
       					dattrs = "";
      				}
     			}
    		}
    		
    		// Убираем выходные дни
    		if (j > 5){
    			dcolor = "color: "+odColor+";";
       			dclass = "";
       			dattrs = "";
    		}
		   
			dstyle += dcolor+"text-align: right;";
			if(i == 0){
				if(j >= fday){     
					s += "<td class=\""+dclass+"\" style=\""+dstyle+"\""+dattrs+">"+days+"</td>";
					days++;
				}else{
					s += "<td>&nbsp;</td>";
				}
			}else{
				if(days <= dm[amonth]){
					s += "<td class=\""+dclass+"\" style=\""+dstyle+"\""+dattrs+">"+days+"</td>";
				}else{
					s += "<td>&nbsp;</td>"; 
				}
				days++;
			}
		}
	  s += "</tr>";
	}
	
	/*
	s += "<tr><td colspan=\"7\">"+
	     "<table class=\"cal\"><tr><td>Ч <input type=\"text\" size=\"2\" class=\"edit\" maxlength=\"2\" name=\"calh\" onKeyPress=\"checkTime();\" onKeyUp=\"checkMaxVal();\"></td>"+
	     "<td>М <input type=\"text\" size=\"2\" class=\"edit\" maxlength=\"2\" name=\"calm\" onKeyPress=\"checkTime();\" onkeyup=\"checkMaxVal();\">"+
	     "</td></tr></table>"+ 
	     "</td></tr>";                                     
	*/
	//s += "<tr><td colspan=\"7\"> <b>Сегодня:</b> <a href=\"#\" onclick=\"DayClick("+day+","+curmonth+","+curyear+
	//     ");\" class=\"cal\">"+
	//     day+", "+mnames[curmonth]+" "+curyear+"</a></td></tr><table>";
	
	oCal.setHTML(s);
}