// JScript File

/*
    sid - id для календаря должен быть уникальным для страницы,
    для своих внуренних элементов управления их id фомируется в виде sid_...
    startYr, endYr - начальные и конечные годы для календаря
    strLan - язык календаря (ru, en)
    tekdate - начальная дата для календаря (в виде строки)
    handler - имя функции обработчика выбора даты на календаре
    на странице обязательно должна быть объявлена функция типа function handler(year,month,day,calendarid)
    ctrlcss - класс 
*/
function vertcal_init(sid,startYr,endYr,strLan,tekdate,handler) {
    var c=document.getElementById(sid);
    var ctrlcss,arMonths,arWeekDays
	switch(strLan) {
		case 'en':
        	arMonths=new Array('January','February','March','April','May','June','July','August','September','October','November','December');
        	arWeekDays=new Array('Su','Mo','Tu','We','Th','Fr','Sa');
        	ctrlcss='tmain'
			break;
		case 'be':
        	arMonths=new Array('Студзень', 'Люты', 'Сакавік', 'Красавік', 'Май', 'Чэрвень', 'Ліпень', 'Жнівень', 'Верасень', 'Кастрычнік', 'Лістапад', 'Снежань');
        	arWeekDays=new Array('Пн','Аўт','Ср','Чц','Пт','Сб','Ндз');
        	ctrlcss='bottomtext'
			break;
		default:
        	arMonths=new Array('Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август', 'Сентябрь','Октябрь','Ноябрь','Декабрь');    
        	arWeekDays=new Array('Пн','Вт','Ср','Чт','Пт','Сб','Вс'); 
        	ctrlcss='bottomtext';
	}
    var s='<table class=vcal><tr><td><select class='+ctrlcss+' size=1 style="width:87px" id="'+sid+'_mon"'+
            ' onchange=vertcal_update("'+sid+'","'+strLan+'","'+handler+'","'+tekdate+'")>';
    var s1='';
    for(var i=0;i<=11;i++) {
        s1+='<option value='+(i+1)+'>'+arMonths[i];
    }
    s+=s1+'</select><td style="text-align:right"><select class='+ctrlcss+' size=1 id="'+sid+
        '_year" onchange=vertcal_update("'+sid+'","'+strLan+'","'+handler+'","'+tekdate+'")>';
    s1='';
    for(i=startYr;i<=endYr;i++) {
        s1+='<option value='+i+'>'+i;
    }    
    s+=s1+'</select><tr><td colspan=2><table class=calendar cellSpacing=0 cellPadding=0 border=0 width=145><tr class=toprow>';
    s1='';
    for(i=0;i<7;i++) {
        s1+='<td nowrap';
        var w=arWeekDays[i];
        if(w=='Sa'||w=='Su'||w=='Сб'||w=='Вс'||w=='Ндз')
            s1+=' style="color:#a0a4a0"';
        s1+='>'+w;
    }
    for(var j=1;j<=6;j++) {
        s1+='<tr>';
        for(i=1;i<=7;i++)
            s1+='<td id='+sid+'_n'+j+i+'>';
    };
    s+=s1+'</table></table>';
    c.innerHTML=s;
    vertcal_tekdate(sid,strLan,handler,tekdate);
}

function vertcal_todate(s) {
    var ars=s.split('.');
    if(ars.length!=3) return NaN;
    var d=Date.parse(ars[1]+'/'+ars[0]+'/'+ars[2]);
    if(isNaN(d)) return NaN; else return new Date(d);
};

function vertcal_tekdate(sid,strLan,handler,newd) {
    if(newd!='') {
        var d=vertcal_todate(newd);
        var o=document.getElementById(sid+'_year');
        if(d.getFullYear()>=parseInt(o.options[0].value)&&d.getFullYear()<=parseInt(o.options[o.options.length-1].value)) {
        document.getElementById(sid+'_mon').value=d.getMonth()+1;
        document.getElementById(sid+'_year').value=d.getFullYear();
        } else
            newd='';
    }
    vertcal_update(sid,strLan,handler,newd)
}

/*
    внутренняя функция, вызывать не нужно
*/
function vertcal_update(sid,l,h,tekdate) {
    var m=document.getElementById(sid+'_mon').value-1;
    var y=document.getElementById(sid+'_year').value;
    var td=null;
    if(tekdate!='') td=vertcal_todate(tekdate);
    var d1=new Date(y,m,1);
    var di=d1.getDay()+1;
    if(l!='en') {if(--di==0) di=7}    
	if (m==3||m==5||m==8||m==10) d=30;
	else if(m==1){if(y%4==0&&y%100!=0||y%400==0) d=29; else d=28}
	else d=31;
	for(var i=1;i<di;i++) document.getElementById(sid+'_n1'+i).innerHTML='';
	var j=di,k=1;
    for(i=1;i<=d;i++) {
        var s='<a href=javascript:'+h+'('+y+','+(m+1)+','+i+',"'+sid+'")';
        if(td!=null&&td.getFullYear()==y&&td.getMonth()==m&&td.getDate()==i)
            s+=' style="color:#9c0000;font-weight:bold"';
        else if(l=='en'&&(j==1||j==7)||l=='ru'&&(j==6||j==7)) s+=' style="color:#a0a4a0"';
        s+='>'+i+'</a>';
        document.getElementById(sid+'_n'+k+j).innerHTML=s;
        if(++j>7) {j=1;k++}
    }
    for(;j<=7;j++) document.getElementById(sid+'_n'+k+j).innerHTML='';
    for(++k;k<=6;k++) for(j=1;j<=7;j++) document.getElementById(sid+'_n'+k+j).innerHTML='';
};

