var __calendars = new Array();
function calendar_cls()
{
	this.client_id = ''
	this.id = '';
	this.name = '';
	this.year = '';
	this.month = '';
	this.day = '';
	this.date = '';
	this.disabled = false;
}

function _get_calendar(tg)
{
    var cldr_name = (typeof(tg)=='object' ? tg.name.substr(0, tg.name.indexOf('__')) : tg);
	var cldr;
	
	if (__calendars[cldr_name])
	{
		cldr = __calendars[cldr_name];
	}
	else
	{
		for (cldr in __calendars)
		{
			if (cldr.client_id == cldr_name) break;
		}
		if (cldr.client_id != cldr_name) cldr = new calendar_cls()
	}
	
	var frm = document.forms[0];
	if (cldr.id != '')
	{
		cldr.year = frm[cldr.name + '__year'];
		cldr.month = frm[cldr.name + '__month'];
		if (frm[cldr.name + '__day']) cldr.day = frm[cldr.name + '__day'];
		if (!isNaN(parseInt(cldr.year.value)) )
		{
			cldr.date = new Date(cldr.year.value, cldr.month.value, (cldr.day != '' ? cldr.day.value : 1));
		}
	}
	return cldr; 
}

function _init_calendar( tg, d, m, y )
{
	var cldr = _get_calendar(tg);
	if (!isNaN(parseInt(y)) && !isNaN(parseInt(m)) && !isNaN(parseInt(d)) )
	{
	    if (cldr.day != '' )
	    {
		    var aMonthArr = new Array(31,(y % 4 == 0 ? 29 : 28),31,30,31,30,31,31,30,31,30,31); 
		    cldr.day.options.length = 0;
		    var selIdx = 0;
		    for (var i=1; i <= aMonthArr[m-1]; i++)
		    {
                var oOption = document.createElement('OPTION');
                oOption.text = i;
                oOption.value = i;
                if (d*1 == i) 
                {
                    oOption.selected = true;
                    selIdx = i-1;
                }
                cldr.day.add(oOption);
		    }
		    cldr.day.selectedIndex = selIdx;
		}
	    cldr.month.selectedIndex = m*1-1;
	    cldr.year.value = y;
	}
}

function doYearSelect(tg)
{
	var cldr = _get_calendar(tg);
	var msg = 'Ââåäèòå ãîä îò 1901';
	if (isNaN(parseInt(cldr.year.value)) )
	{
		cldr.year.value = '1901';
		alert(msg);
	}
	else if (parseInt(cldr.year.value) < 1901)
	{
		cldr.year.value = '1901';
		alert(msg);
	}
	else
	{
		doMonthSelect(tg);
	}
}

function doMonthSelect(tg)
{
//	var frm = document.forms[0];
	var cldr = _get_calendar(tg)
	if (cldr.day != '')
	{
		var aMonthArr = new Array(31,(cldr.year.value % 4 == 0 ? 29 : 28),31,30,31,30,31,31,30,31,30,31); 
		
		var iLastIdx = cldr.day.options.length - 1;
		var iLastVal = iLastIdx > 0 ? cldr.day.options[iLastIdx].value*1 : iLastIdx+1;
		var iDaysInMonth = aMonthArr[cldr.month.value-1];
		if ( iLastVal < iDaysInMonth)
		{
			for (var i=iLastVal+1; i<=iDaysInMonth; i++ )
			{
				var oOption = document.createElement('OPTION');
				oOption.text=i;
				oOption.value=i;
				cldr.day.add(oOption);
			}
			iLastVal = iDaysInMonth;
			iLastIdx = cldr.day.options.length - 1;
		}
		while (cldr.day.options[iLastIdx].value > iDaysInMonth)
		{
			cldr.day.remove(iLastIdx);
			iLastIdx--;
		}
	}
}

function getCalendarStr(tg)
{
	var s = '';
	var cldr = _get_calendar(tg)
	if (cldr.id != '')
	{
		var y = cldr.year.value;
		var m = cldr.month.value;
		if (m.length < 2) m = '0' + m;
		s = m + '.' + y;
		if ( cldr.day != '' )
		{
			var d = cldr.day.value;
			s = (d.length < 2 ? '0' : '') + d + '.' + s ;
		}
	}
	return(s);
}

function getCalendarDate(tg)
{
	var s = '';
	var cldr = _get_calendar(tg)
	if (cldr.id != '')
	{
		var y = cldr.year.value;
		var m = cldr.month.value;
		var d = ( cldr.day != '' ) ? cldr.day.value : 1;
	}
	return( new Date(y, m, d) );
}
