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;}*/
  
  //Если клинит оперу и год высвечивается <1900
  if (s_year<=1900)
  {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 (c_year<=1900)
  {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;    
}