var id;
var cal;
id = "date";
cal = "calendar";
function GetDate(date,nres)
{
    document.getElementById(nres).value = date;
    document.getElementById(cal).className = 'calhide';
}
function cShow(id)
{
    cal = id;
    document.getElementById(id).className = 'calshow';
}
var WeekTitles=new Array('Пн','Вт','Ср','Чт','Пт','Сб','Вс')
var MonthTitles=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 CalendarShow(m, d, y, cal,nres){
    var todaydate= new Date();
    if (y == 0)
    {
        m= todaydate.getMonth()+1;
        d= todaydate.getDate();
        y= todaydate.getFullYear();
    }
    var sdate= new Date(m+'/1/'+y);
    var mdate= new Date(m+'/'+d+'/'+y);
    var days=dayonmonth(m,y)
    var iday=0, day, answer=''
    answer+='<table border=0 CLASS="calendar">'
    answer+='  <tr CLASS="calendar">'
    answer+='      <th CLASS="calendar" colspan=7>'
    answer+='        <table class="noformat" width="100%" border=0 cellpadding=0 cellspacing=0 height="100%">'
    answer+='              <tr CLASS="calendar">'
    answer+='                <td align="left"><b>Месяц</b></td>'
    answer+='                <td align="right">'+MonthTitles[m-1]+' '+y+'</td>'
    answer+='              </tr>'
    answer+='        </table>'
    answer+='    </th>'
    answer+='  </tr>'
    answer+='  <tr CLASS="calendar">'
    answer+='      <th colspan=7>'
    answer+='<table class="noformat" border=0 cellpadding=0 cellspacing=0 width="100%" height="100%">'
    answer+='  <tr CLASS="calendar">'
    answer+='    <td width="25%"><a onClick="calendar_move(\'-\',\'y\','+m+','+d+','+y+', \''+cal+'\',\''+nres+'\')"><<</td>'
    answer+='    <td width="25%"><a onClick="calendar_move(\'-\',\'m\','+m+','+d+','+y+', \''+cal+'\',\''+nres+'\')"><</td>'
    answer+='    <td width="25%"><a onClick="calendar_move(\'+\',\'m\','+m+','+d+','+y+', \''+cal+'\',\''+nres+'\')" >></td>'
    answer+='    <td width="25%"><a onClick="calendar_move(\'+\',\'y\','+m+','+d+','+y+', \''+cal+'\',\''+nres+'\')">>></td>'
    answer+='  </tr>'
    answer+='</table>'
    answer+='    </th>'
    answer+='  </tr>'
    answer+='  <tr>'
    answer+=showallweektitles()
    if(sdate.getDay() == 0)
        tdate = 7
    else
        tdate = sdate.getDay()
    for(day=0;day<tdate-1;day++){
        iday++
        answer+="    <td></td>"
    }
    for(day=1;day<=days;day++){
        iday++
        if((todaydate.getMonth()+1)==m && todaydate.getDate()==day && todaydate.getFullYear()==y)
            answer+="    <td onClick=\"GetDate('"+day+"."+m+"."+y+"','"+nres+"');\" CLASS=\"calendar_today\">"+day+"</td>"
        else
            answer+="    <td onClick=\"GetDate('"+day+"."+m+"."+y+"','"+nres+"');\" CLASS=\"calendar\">"+day+"</td>"
        if(iday==7){

            answer+="</tr><tr>"
            iday=0
        }
    }
    answer+="  </tr>"
    answer+='</table>'
    //self.calendar.innerHTML=answer
    //document.all.calendar.innerHTML=answer
   document.getElementById(cal).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, cal,nres){
    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
    }
    CalendarShow(m, d, y, cal,nres)
}
