//ф-ии для календаря

var gm;
var gd;
var gy;
var elemid;

//ф-ия для показа календаря за 3 месяца
function show_month(m,d,y,elemid)
{

	gm = m;
	gd = d;
	gy = y;

	var month1 = 	"";
	var month2 = 	"";
	var month3 = 	"";

	month1 = 		calendar_show(m,d,y);
	month2 = 		calendar_move('+','m',m,d,y);
	var dt = 		daten(m+1,d,y);
	//alert (dt.m + '|' + dt.y);
	month3 = 		calendar_move('+','m',dt.m,d,dt.y);

//alert (date1.getDay()+'|'+date1.getMonth()+'|'+date1.getYear());

	document.getElementById('month1').innerHTML = 	month1;
	document.getElementById('month2').innerHTML = 	month2;
	document.getElementById('month3').innerHTML = 	month3;

}

function goback()
{	//alert (gm+'|'+gd+'|'+gy);
	calendar_move_3month('-','m',gm,gd,gy);
}

function gonext()
{	//alert (gm+'|'+gd+'|'+gy);
	calendar_move_3month('+','m',gm,gd,gy);
}

function calendar_move_3month(to, index, m, d, y)
{

/*
	if (m < 1 && to == '-')
	{		m = 	12-m;
		gm = 	m;
		y = 	y-1;
		gy = 	y;
	}
*/

//	alert (d+'|'+m+'|'+y);

	var month1 = 	"";
	var month2 = 	"";
	var month3 = 	"";

	if (to == '-')
	{
		gm = m-1;

		var fix =		daten(gm,gd,gy);
		gm = 			fix.m;
		gy = 			fix.y;

		month1 = 		calendar_move('-','m',m,d,y);
		var dt = 		daten(m,d,y);
		//alert (dt.m + '|' + dt.y);
		//alert (d+'|'+m+'|'+y+'|'+d+'|'+dt.m+'|'+dt.y);
		month2 = 		calendar_show(dt.m,d,dt.y);
		month3 = 		calendar_move('+','m',m,d,y);
	}
	else {
		gm = m+1;

		var fix =		daten(gm,gd,gy);
		gm = 			fix.m;
		gy = 			fix.y;

		month1 = 		calendar_move('+','m',m,d,y);
		var dt = 		daten(m+1,d,y);
		month2 = 		calendar_move('+','m',dt.m,d,dt.y);
		var dt = 		daten(m+2,d,y);
		month3 = 		calendar_move('+','m',dt.m,d,dt.y);
	}

	//alert (month1+'|'+month2+'|'+month3);

	document.getElementById('month1').innerHTML = 	month1;
	document.getElementById('month2').innerHTML = 	month2;
	document.getElementById('month3').innerHTML = 	month3;

}

function daten(m,d,y)
{

	//alert (m);

	if (m > 12)
	{
		m = m-12;
		y = y+1;
	}
	else if (m < 1)
	{
		m = m+12;
		y = y-1;
	}

//alert (d+'|'+m+'|'+y);

return {"m":m, "d":d, "y":y};

}

//var args = window.dialogArguments;
var WeekTitles=new Array('Вс','Пн','Вт','Ср','Чт','Пт','Сб')
var Month = new Array
("Январь",
 "Февраль",
 "Март",
 "Апрель",
 "Май",
 "Июнь",
 "Июль",
 "Август",
 "Сентябрь",
 "Октябрь",
 "Ноябрь",
 "Декабрь");

function showallweektitles(){
	var i, answer="  <tr>\n"
	for(i=0;i<WeekTitles.length;i++) answer+="    <th CLASS=\"calendar\">"+WeekTitles[i]+"</th>\n"
	answer+="  </tr>\n"
	return answer
}

function calendar_show(m, d, y){
	var sdate= new Date(m+'/1/'+y);
	var mdate= new Date(m+'/'+d+'/'+y);
	var todaydate= new Date();
	var days=dayonmonth(m,y)
	var iday=0, day, answer=''
	answer+='<table cellpadding=0 cellspacing=0 class="calendar">'
	answer+='  <tr CLASS="calendar">'
	answer+='  	<th colspan=7>'
	answer+='		<table cellpadding=0 cellspacing=0 id="ctrl">'
	//answer+='  			<tr><td class=c>'+y+'</td></tr>'
	answer+='  			<tr><td class="c ch1">'+Month[m-1]+' '+y+'</td></tr>'
	answer+='		</table>'
	answer+='	</th>'
	answer+='  <tr><td class="ch">Пн</td><td class="ch">Вт</td><td class="ch">Ср</td><td class="ch">Чт</td><td class="ch">Пт</td><td class="ch strong">Сб</td><td class="ch strong">Вс</td></tr>'
	answer+='  <tr class=c>'
	//answer+=showallweektitles()
	//alert (sdate+'|'+sdate.getDay());
	for(day=0;day<sdate.getDay()-1;day++){
		iday++
		//answer+="    <td></td>"
	}

	if (sdate.getDay() == 0)
	{
		iday = 6;
	}

	if (iday != 0)
	{
		//alert (m);
		var ni = 	dayonmonth(m-1,y);
		//alert (ni);
		var wi;
		for (ji=iday;ji>0;ji=ji-1)
		{
			wi = 		ni-ji+1;
			answer+="<td>&nbsp;</td>"
		}
		//alert (ddate);
	}//if (iday != 0)
	for(day=1;day<=days;day++){
		iday++
		if (CheckDate(day,m,y))
		{
			//var addlink = 	"&rest="+RestId;
			var addlink = 	"";

			var holidayclass = ''
			if (iday == 6 || iday == 7)  holidayclass = ' strong';
			else holidayclass = ''

			if (day == d && CalendMnth == m)
			{
				answer+="    <td CLASS=\"calendar a"+holidayclass+"\">"+day+"</td>"
			}//if (day == d)
			else {
				answer+="    <td CLASS=\"calendar"+holidayclass+"\" onMouseOver=\"this.className='calendar_over"+holidayclass+"'\" onMouseOut=\"this.className='calendar"+holidayclass+"'\"> <a href=\"javascript:changeValue("+day+","+m+","+y+")\">"+day+"</a></td>"
			}//else {
		}//if (CheckDate(day,m,y))
		else {
			answer+="    <td CLASS=\"calendar"+holidayclass+"\" onMouseOver=\"this.className='calendar_active"+holidayclass+"'\" onMouseOut=\"this.className='calendar"+holidayclass+"'\">"+day+"</td>"
		}//else {
		if(iday==7){
			answer+="</tr><tr class=c>"
			iday=0
		}
	}


	if (iday < 7 && iday > 0)
	{
		var pi = 1;
		for(ji=iday;ji<7;ji++)
		{
			answer+="<td>&nbsp;</td>"
			pi++;
		}//for(ji=iday;ji<7;ji++)
	}//if (iday < 7)

	answer+="  </tr>"
	answer+='</table>'
	//self.calendar.innerHTML=answer
	return answer;
	//document.getElementById('calendar').innerHTML=answer;
}

function dayonmonth(m, y){ // Функция, для определения количества дней в месяце
	var answer
	if(m!=2){ // Если не "Февраль"
		var date1=new Date(m+'/31/'+y)
		var mm=(m<12)?(m+1):1;
		var yy=(m<12)?y:(y+1);
		var date2=new Date(mm+'/1/'+yy)
		answer=(date1.getDay()==date2.getDay())?'30':'31';
	}else{
		var date1=new Date(m+'/29/'+y)
		var mm=(m<12)?(m+1):1;
		var yy=(m<12)?y:(y+1);
		var date2=new Date(mm+'/1/'+yy)
		answer=(date1.getDay()==date2.getDay())?'28':'29';
	}
	return answer
}

function calendar_move(to, index, m, d, y){//	alert (to+'|'+index+'|'+d+'|'+m+'|'+y);

/*	if (m < 1)
	{
		m = 	12+m;
		y = 	y-1;
	}*/

	switch(to){
		case('-'):
			switch(index){
				case('m'):
					if(m>1){
						m--
					}else{
						m=12
						y--
					}
					break
				case('d'):
					var mm=(m>1)?--m:1
					var yy=(m>1)?y:--y
					var days=dayonmonth(mm, yy)
					if(d>1){
						d--
					}else{
						d=days
						m=mm
						y=yy
					}
					break
				case('y'):
					y--
					break
			}
			break
		case('+'):
			switch(index){
				case('m'):
					if(m<12){
						m++
					}else{
						m=1
						y++
					}
					break
				case('d'):
					var mm=(m<12)?++m:1
					var yy=(m<12)?y:++y
					var days=dayonmonth(m, y)
					if(d<days){
						d++
					}else{
						d=1
						m=mm
						y=yy
					}
					break
				case('y'):
					y++
					break
				}
			break
	}
//	alert (d+'|'+m+'|'+y);
	return calendar_show(m, d, y)
}

//ф-ия поиска элимена в массиве cdata
function CheckDate(d,m,y)
{

	return true;

	if (cdata[y + '-' + m + '-' + d] == 1)
	{
		return true;
	}
	else {

		return false;
	}

/*	var res = 	false;

	var n= cdata.length;

	var z = 	y + '-' + m + '-' + d;

	for (var i=0; i <= (n); i++)
	{

		if (cdata[i] ==	z)
		{

			res =	true;

			break;

		}//if (cdata[i] ==	z)

		if (d == 15 && m == 8 && y == 2008)
		{
			alert (cdata[i] + '|' + z);
		}

	}//for (var i=0; i <= (n); i++)

return res;*/

}//function CheckValue()

function changeValue(d,m,y)
{

	m = m-1;

	if (m == 0)
	{
		m = 	12;
		y = 	y-1;
	}

	if (m < 10)
	{
		m = 	'0'+m;
	}

	var calend = 			y+''+m;

	ge(CalendMonth).value = 	y+''+m;
	ge(CalendDay).value = 		d;

	if (CalendMonth1 || CalendDay1)
	{
		UpdateDate(CalendMonth,CalendDay,CalendMonth1,CalendDay1);
	}
	calendClose();

}//function changeValue(d,m,y)

function calendClose()
{
	ge("month1").innerHTML = 		"";
	ge("month2").innerHTML = 		"";
	ge("month3").innerHTML = 		"";
	ge("calendar").style.display = 	"none";
}//function calendClose()

//-----------------------------------------------
// ф-ия для показа или скрытия пути в один конец
//-----------------------------------------------
function UpdateDate(month1,day1,month2,day2)
{

	var mn = 		ge(month1).value.substr(4,2);
	var yr = 		ge(month1).value.substr(0,4);
	var dy = 		ge(day1).value;
	mn = 			mn*1;

	var mn1 = 		ge(month2).value.substr(4,2);
	var yr1 = 		ge(month2).value.substr(0,4);
	var dy1 = 		ge(day2).value;
	mn1 = 			mn1*1;

	var d1 = 		new Date();
	var d2 = 		new Date();

	//alert (d1 + '|' + d2);

    d1.setDate(dy);
    d1.setMonth(mn);
    d1.setYear(yr);

    d2.setDate(dy1);
    d2.setMonth(mn1);
    d2.setYear(yr1);

	var bday = 	getDaysBetween(d1,d2);

	//alert (bday + '|' + d1 + '|' + d2);

	if (bday < 7)
	{

		//alert ("OK");

		d1.setDate(d1.getDate() + 7);
		var d = 	d1.getDate();
		var m = 	d1.getMonth();
		var y = 	d1.getFullYear();

		//alert (d1);

		//m = m-1;

		if (m == 0)
		{
			m = 	12;
			y = 	y*1-1;
		}

		if (m < 10)
		{
			m = 	'0'+m;
		}

		//alert (y + '|' + m);

		var calend = 			y+''+m;

		ge(month2).value = 	y+''+m;
		ge(day2).value = 		d;

	}

}//function UpdateDate()

function getDaysBetween(d1,d2) {

  d2.setHours(d1.getHours(), d1.getMinutes(), d1.getSeconds(), d1.getMilliseconds());

  var diff = d2.getTime() - d1.getTime();
  return (diff)/msPERDAY();
};

function msPERDAY()
{
	return 1000*60*60*24;
}