
Calendar2 = function(el, elDates, parameters)
{
	if (!elDates) elDates = [el];
	Calendar2.parameters = parameters;
	Calendar2.element = (document.getElementById(el)) ? document.getElementById(el) : el;
	Calendar2.elementDates = [];
	for (var i=0;i<elDates.length;i++)
		Calendar2.elementDates[i] = (document.getElementById(elDates[i])) ? document.getElementById(elDates[i]) : elDates[i];	
	
	Calendar2.element.select();
	
	clearTimeout(Calendar2.wait); // отмена ожидания
	
	Calendar2.WaitCal();
	return false;
}

// глобальные
Calendar2.wait = 0; // идентификатор ожидания
Calendar2.element = false; // элемент, куда вписываем дату
Calendar2.elementDates = []; // элементы с датами
Calendar2.calendarFrame = document.getElementById('Calendar2frame'); // фрейм, в котором находится календарь

Calendar2.hideCalendar = function()
{
	Animation(Calendar2.calendarFrame, 'fadeOut')
}

Calendar2.showCalendar = function()
{
	Animation(Calendar2.calendarFrame, 'fadeIn')
}

// ожидание появления календаря
Calendar2.WaitCal = function()
{
	if (!frames[Calendar2.calendarFrame.name]) Calendar2.wait = setTimeout("Calendar2.WaitCal()", 200);
	else
	{
		Calendar2.calendarFrame = document.getElementById('Calendar2frame');
		setTimeout("Calendar2.DoCal()", 1);
	}
}

Calendar2.DoCal = function()
{
	Calendar2.PosCal(); // позиционируем относительно элемента
	frames[Calendar2.calendarFrame.name].DoCal(Calendar2.element, Calendar2.elementDates);
}


Calendar2.getScrollTop = function()
{
	if (document.documentElement.scrollTop) return document.documentElement.scrollTop;
	if (document.body.scrollTop) return document.body.scrollTop;
	if (window.pageYOffset) return window.pageYOffset;
	return 0;
}

Calendar2.getWinHeight = function()
{
	if (window.innerHeight) return window.innerHeight;
	if (document.documentElement.clientHeight) return document.documentElement.clientHeight;
	if (document.body.clientHeight) return document.body.clientHeight;
	return 0;
}

// позиционирование календаря
Calendar2.PosCal = function()
{
	var cP = Calendar2.element;
	var dB = document.body; var eL = 0; var eT = 0;
	

	for (var p=cP;p&&p.tagName!='BODY';p=p.offsetParent) {eL += p.offsetLeft; eT += p.offsetTop;}
	var eH = cP.offsetHeight;
	var dH = parseInt(Calendar2.calendarFrame.style.height);
	var sT = Calendar2.getScrollTop();
	
	var right = true;
	
	if (right) // позиционирование справа от того, по чему мы кликнули
	{
	    if (eT-dH>=sT&&eT+dH>Calendar2.getWinHeight()+sT) eT-=(dH-eH);
	    Calendar2.calendarFrame.style.left=eL+30+cP.offsetWidth+'px';
		Calendar2.calendarFrame.style.top=eT+'px';
	}
	else
	{
	    if (eT-dH>=sT&&eT+eH+dH>Calendar2.getWinHeight()+sT)eT-=dH;else eT+=eH;
	    Calendar2.calendarFrame.style.left=eL+'px';
		Calendar2.calendarFrame.style.top=eT+'px';
	}
}

// установка даты при клике по ней
Calendar2.CalDateSet = function(date)
{
	Calendar2.element.value = date;
	if (Calendar2.parameters && Calendar2.parameters.onSelect) Calendar2.parameters.onSelect(Calendar2.parameters);
}

Calendar2.StringToDate = function(value)
{
	if (!value.length) return new Date();
	value = value.replace(/\s+/g,'');
	if (value.match(/[^-|\d|\.|\/]/)) return new Date();
	var temp = value.split(/-|\.|\//);
	for (var i=0;i<temp.length;i++) temp[i] = parseInt(temp[i], 10);	
	
	if (temp.length < 3) return new Date();
	return new Date(temp[2], temp[1]-1, temp[0]);
}

Calendar2.DateToString = function(date)
{
	var d = date.getDate();
	var m = date.getMonth()+1;
	var y = date.getFullYear();
	if (d < 10) d = '0' + d;
	if (m < 10) m = '0' + m;
	return d + '.' + m + '.' + y;
}

if (!document.onclick) document.onclick = Calendar2.hideCalendar;
else eval('document.onclick = ' + (document.onclick+'').substr(0, (document.onclick+'').indexOf('{')+1) + 'Calendar2.hideCalendar();'
	+ (document.onclick+'').substr((document.onclick+'').indexOf('{')+1));
