function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function var_dump(obj, obj_name) 
{
   var result = "";
   for (var i in obj) 
   {
      result += obj_name + "." + i + " = " + obj[i] + "<BR>";
   }
   result += "<HR>";
   return result;
}

// Опрелеляем top - left координаты блока obj
function absPosition(obj) 
{ 
	this.x = 0;
	this.y = 0;
    while(obj) 
	{
		this.x += obj.offsetLeft;
		this.y += obj.offsetTop;
		obj = obj.offsetParent;
	}
	return {x:this.x,y:this.y};
}

function showDialog(html, basis, _x, _y) 
{	
	var div = document.getElementById('shcal');
	div.innerHTML = html;
	load();
	if (basis) 
	{
		var _top = absPosition(basis).y + ((_y) ? _y : 0);
		var _left = absPosition(basis).x + ((_x) ? _x : 0);;
	}
	if (_top) div.style.top = _top;
	if (_left) div.style.left = _left;
	div.style.display = "";
}

function hideDialog() 
{
	document.getElementById('shcal').style.display = "none";
}

function showCalendar(_link, obj) 
{
    showDialog("<table border=0 cellspacing='0' cellpadding='0' width='180' align=center><tr><td rowspan='2'><input type=\"hidden\" id=\"id_opener\" name=\"id_opener\" value=\""+obj+"\"><select id='month' onchange=\"change()\" style=\"width:70;font-size:12\"><option value=\"Январь\">Январь</option><option value=\"Февраль\">Февраль</option><option value=\"Март\">Март</option><option value=\"Апрель\">Апрель</option><option value=\"Май\">Май</option><option value=\"Июнь\">Июнь</option><option value=\"Июль\">Июль</option><option value=\"Август\">Август</option><option value=\"Сентябрь\">Сентябрь</option><option value=\"Октябрь\">Октябрь</option><option value=\"Ноябрь\">Ноябрь</option><option value=\"Декабрь\">Декабрь</option></select><td rowspan='2'><input type='text' name='year' id='year' style=\"width:50;font-size:12;text-align:center\" value='' ><td valign=\"middle\"><input type='button' name='btn_up' id='btn_up' onClick='click_up()' style=\"width:15;height:15;font-size:7\" value='+'><input type='button' name='btn_down' id='btn_down' onClick='click_down()' style=\"width:15;height:15;font-size:7\" value='-'></tr></table><div id='inner_div' align=center></div><table border=0 cellspacing='2' cellpadding='0' width='180' align=center><tr><td width=\"20px\" bgcolor=\"#61b0ff\" onClick='load()'></td><td width=\"130px\"><font size=1>&nbsp;-&nbsp;Текущая&nbsp;дата.</font></td><td width=\"30px\"><font size=1><a onClick=\"hideDialog()\" onMouseOver=\"this.style.color='#FF0000'\" onmouseout=\"this.style.color='#0000FF'\">Закрыть</a></font></td></tr></table>", _link);
    return false;
}

function load()
{
    today = new Date();
	//устанавливаем значение года в текстовом окне
	obj=document.getElementById("year");
	s_year=parseInt(today.getYear());

	if (navigator.userAgent.indexOf('MSIE') == -1)
	{s_year=s_year+1900;}
	obj.value=s_year; 
	//теперь месяц
    obj=document.getElementById("month");
    obj.selectedIndex=today.getMonth();
	//создание калs_yearтствии с системной датой					 
    create_cal(s_year,today.getMonth(),today.getDate());
}

//увеличение года на 1
function click_up()
{
    obj=document.getElementById("year");
    obj.value=parseInt(obj.value)+1;
	//перерисуем календарь
	change();
}

//уменьшение года на 1
function click_down()
{
    obj=document.getElementById("year");
    obj.value=parseInt(obj.value)-1;
	//перерисуем календарь
	change();
}
	 
function change()
{
	today = new Date
	//значение года в текстовом окне		
    obj=document.getElementById("year");		
    yr=obj.value;
	//alert("year="+yr);

    //теперь месяц
    obj=document.getElementById("month");
    mh=obj.selectedIndex;
	//alert("mh="+mh);
		
	//день
	day=today.getDay();
	//alert(day);
		
	create_cal(yr,mh,day)
}
	 
function get_date(td_id)
{
	//значение года в текстовом окне		
    obj=document.getElementById("year");		
    yr=obj.value;

    //теперь месяц
    obj=document.getElementById("month");
    mh=obj.selectedIndex+1;
	//alert("mh="+mh);
	if (mh<10) mh='0'+mh;
		
	//день
	day=td_id;
	if (day<10) day='0'+day;

    //где нужно вставить дату
    obj=document.getElementById(this.id_opener.value);
	obj.value=day+"-"+mh+"-"+yr;
	hideDialog();
}

//массив - количество дней в месяце	
function array_days_in_months(year)
{
    this[0] = 31;
    this[1] = 28;
    if (year)
     	this[1] = 29;
    this[2] = 31;
    this[3] = 30;
    this[4] = 31;
    this[5] = 30;
    this[6] = 31;
    this[7] = 31;
    this[8] = 30;
    this[9] = 31;
    this[10] = 30;
    this[11] = 31;
}
	 
//весокосный год
function days_in_month(month, year)
{
    var isLeapYear = (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0));
    var month_days  = new array_days_in_months(isLeapYear);
    return month_days[month];
}

//создание полей(числа) календаря
function create_cal(yr,mh,day)
{
	str="";
    td_id=0;

    //шапка. Дни недели
    str+='<table width="180" cellpadding="0" cellspacing="0"><tr style="font-size:10;background-color:#3399FF" align="center"><td style="color:\'red\';">Вс</td><td style="color:\'white\';">Пн</td><td style="color:\'white\';">Вт<td style="color:\'white\';">Ср</td><td style="color:\'white\';">Чт</td><td style="color:\'white\';">Пт</td><td style="color:\'red\';">Сб</td></tr>';
	p_date = new Date (yr,mh,day);
	num_day=days_in_month(mh,yr)
	 
	//находим 'стартовый' день  недели
	var firstday=p_date;
	firstday.setDate(1);
	var start_day = firstday.getDay();
	today= new Date;
	c_year=today.getYear();
	if (navigator.userAgent.indexOf('MSIE') == -1)
	{c_year=c_year+1900;}
	
    for (i=0;i<6;i++)
    {
     	str+='<tr style="font-size: 10;background-color:#e7efff">';		 
     	for(j=0;j<7;j++)
		{
			if (td_id<start_day) 
        		str+='<td>'+'&nbsp;'+'</td>';
			else
			{
				if (((td_id-start_day)+1)==today.getDate()&&document.getElementById("month").selectedIndex==today.getMonth()&&document.getElementById("year").value==c_year)
				{
				 	str+='<td align="center" style="border-style:solid;border-top:none;border-left:none;border-right-width:1px;border-bottom-width:1px;border-color:black" id='+(td_id-start_day+1)+' bgcolor=\'#61b0ff\' onMouseOver="this.style.backgroundColor=\'#3399FF\'" onmouseout="this.style.backgroundColor=\'#61b0ff\'" onclick="get_date('+(td_id-start_day+1)+')">'+((td_id-start_day)+1)+'</td>';
				}
				else if (j==0||j==6)
				{
					str+='<td align="center" style="border-style:solid;border-top:none;border-left:none;border-right-width:1px;border-bottom-width:1px;border-color:black" id='+(td_id-start_day+1)+' onMouseOver="this.style.backgroundColor=\'#3399FF\';this.style.fontColor=\'#FFFFFF\';" onmouseout="this.style.backgroundColor=\'#e7efff\'" onclick="get_date('+(td_id-start_day+1)+')"><font color=\'#FF0000\'>'+((td_id-start_day)+1)+'</font></td>';
				}
				else
				{
				 	str+='<td align="center" style="border-style:solid;border-top:none;border-left:none;border-right-width:1px;border-bottom-width:1px;border-color:black" id='+(td_id-start_day+1)+' onMouseOver="this.style.backgroundColor=\'#3399FF\';this.style.fontColor=\'#FFFFFF\';" onmouseout="this.style.backgroundColor=\'#e7efff\'" onclick="get_date('+(td_id-start_day+1)+')">'+((td_id-start_day)+1)+'</td>';
				}			   
			};
			td_id++;
			if (td_id>(num_day+start_day-1)) break;			 	 	
		};
		if (td_id>(num_day+start_day-1)) break;
     	str+='</tr>';
    };
    str+='</table>';
	//помещаем в HTML
    obj=document.getElementById('inner_div');
    obj.innerHTML=str;		
}
