
Calendar3 = function(el, elDates, parameters)
{
	if (!elDates) elDates = [el];
	Calendar3.parameters = parameters;
	Calendar3.element = (document.getElementById(el)) ? document.getElementById(el) : el;
	Calendar3.elementDates = [];
	for (var i=0;i<elDates.length;i++)
		Calendar3.elementDates[i] = (document.getElementById(elDates[i])) ? document.getElementById(elDates[i]) : elDates[i];	
	
	Calendar3.element.select();
	
	clearTimeout(Calendar3.wait); // отмена ожидания
	
	Calendar3.WaitCal();
	return false;
}

// глобальные
Calendar3.wait = 0; // идентификатор ожидания
Calendar3.element = false; // элемент, куда вписываем дату
Calendar3.elementDates = []; // элементы с датами
Calendar3.calendarFrame = document.getElementById('Calendar3frame'); // фрейм, в котором находится календарь

Calendar3.hideCalendar = function()
{
	Animation(Calendar3.calendarFrame, 'fadeOut')
}

Calendar3.showCalendar = function()
{
	Animation(Calendar3.calendarFrame, 'fadeIn')
}

// ожидание появления календаря
Calendar3.WaitCal = function()
{
	if (!frames[Calendar3.calendarFrame.name]) Calendar3.wait = setTimeout("Calendar3.WaitCal()", 200);
	else
	{
		Calendar3.calendarFrame = document.getElementById('Calendar3frame');
		setTimeout("Calendar3.DoCal()", 1);
	}
}

Calendar3.DoCal = function()
{
	Calendar3.PosCal(); // позиционируем относительно элемента
	frames[Calendar3.calendarFrame.name].DoCal(Calendar3.element, Calendar3.elementDates);
}


Calendar3.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;
}

Calendar3.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;
}

// позиционирование календаря
Calendar3.PosCal = function()
{
	var cP = Calendar3.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(Calendar3.calendarFrame.style.height);
	var sT = Calendar3.getScrollTop();
	
	var right = true;
	
	if (right) // позиционирование справа от того, по чему мы кликнули
	{
	    if (eT-dH>=sT&&eT+dH>Calendar3.getWinHeight()+sT) eT-=(dH-eH);
	    Calendar3.calendarFrame.style.left=eL+30+cP.offsetWidth+'px';
		Calendar3.calendarFrame.style.top=eT+'px';
	}
	else
	{
	    if (eT-dH>=sT&&eT+eH+dH>Calendar3.getWinHeight()+sT)eT-=dH;else eT+=eH;
	    Calendar3.calendarFrame.style.left=eL+'px';
		Calendar3.calendarFrame.style.top=eT+'px';
	}
}

// установка даты при клике по ней
Calendar3.CalDateSet = function(date)
{
	Calendar3.element.value = date;
	if (Calendar3.parameters && Calendar3.parameters.onSelect) Calendar3.parameters.onSelect(Calendar3.parameters);
}

Calendar3.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]);
}

Calendar3.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;
}


addEvent(window, 'load', function() {addEvent(document, 'click', Calendar3.hideCalendar)});
