
// имена месяцев и т.п.
var calendarNames = new Array();
calendarNames.month = ['Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень'];
calendarNames.monthShort = ['січ', 'лют', 'бер', 'кві', 'тра', 'чер', 'лип', 'сер', 'вер', 'жов', 'лис', 'гру'];
calendarNames.weekday = ['П', 'В', 'С', 'Ч', 'П', 'С', 'Н'];
calendarNames.today= 'Зверніть увагу: початок терміну розміщення реклами можливий лише з середи кожного тиждня';
//глобальная
var currDate = new Date();
var closeCalendarTimeOut = 0;

//показать календарь: когда нажимаем на кнопку "показать"
function showCal(){
	
	closeCalendarTimeOut = 0;
	//addEvent(calDIV, 'click', calendarClick);
	//addEvent(calBUT, 'click', calendarClick);
	//addEvent(document, 'click', hideCalendar);
	addEvent(calDIV, 'mouseover', calendarMouseOver);
	addEvent(calDIV, 'mouseout', calendarMouseOut);

	hiddenValue = document.getElementById('hiddenValue');
	currDate = value2date(hiddenValue.value); 
	calDIV.innerHTML = calendarHTML(currDate.getMonth(), currDate.getFullYear(), currDate); 
	calDIV.style.display = 'block';	
	//alert("hello!!!");
}
//показать календарь: когда переключаем (год || месяц)
function switchMonthTo(month, year) {
	hiddenValue = document.getElementById('hiddenValue');
	currDate = value2date(hiddenValue.value);
	calDIV.innerHTML = calendarHTML(month, year, currDate);
	calDIV.style.display = 'block';
}


//устанавливаем выбранную дату, закрываем календарик
function setDateFromCalendar(dayToSet, monthToSet, yearToSet) {
	hiddenValue = document.getElementById('hiddenValue');
	hiddenValue.value = zeroFill(dayToSet)+'.'+zeroFill(monthToSet+1)+'.'+yearToSet;
	calDIV.style.display = 'none';
	
	
	if(divValue) divValue.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+hiddenValue.value;
}
//устанавливаем сегодняшнюю дату, закрываем календарик
function setTodayFromCalendar() {
	hiddenValue = document.getElementById('hiddenValue');
	var date=new Date();
	hiddenValue.value = zeroFill(date.getDate())+'.'+zeroFill(date.getMonth()+1)+'.'+date.getFullYear();
	calDIV.style.display = 'none';
	divValue = document.getElementById('divValue');
	if(divValue) document.getElementById('divValue').innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+document.getElementById('hiddenValue').value;
}



//закрываем календарик: когда кликаем в пространстве
function hideCalendar(e){
	calDIV.style.display = 'none';
}
//ничего не делаем: когда кликаем на календаре
function calendarClick(e) {
	evt = (e)? e : window.event;
	evt.cancelBubble = true;
}
//ничего не делаем: при наведении мыши
function calendarMouseOver(e) {
	if (closeCalendarTimeOut) {
		clearTimeout(closeCalendarTimeOut);
		closeCalendarTimeOut = 0;
	}
}
//закрываем календарик: когда сводим мышь
function calendarMouseOut(e) {
	if (closeCalendarTimeOut) {
		clearTimeout(closeCalendarTimeOut);
	}
	closeCalendarTimeOut = setTimeout('hideCalendar()', 1000);
}


//HTML-код календарика
function calendarHTML(month, year, currDate) {
	// смотрим этот ли месяц показываем
	var isThisMonth = (currDate)? (currDate.getMonth() == month && currDate.getFullYear() == year) : false;
	
	// устанавливаем месяц, который будем рисовать
	var drawMonth = new Date(); drawMonth.setMonth(month, 1); drawMonth.setYear(year); drawMonth.setDate(1);
	
	// переменные для кнопок навигации по месяцам/годам
	var thisMonth = drawMonth.getMonth();
	var nextMonth = (thisMonth == 11)? 0 : thisMonth + 1;
	var prevMonth = (thisMonth == 0)? 11 : thisMonth - 1;
	var thisYear = drawMonth.getFullYear();
	var nextMonthYear = (thisMonth == 11)? thisYear + 1 : thisYear;
	var nextYear = thisYear + 1;
	var prevMonthYear = (thisMonth == 0)? thisYear - 1 : thisYear;
	var prevYear = thisYear - 1;

	var pixelSpacer = '<div style="width: 1px; height: 1px;"><spacer type="block" width="1" height="1" /><\/div>';
	var imagesFolder = '../templates/template_1/images/calendar/';
	
	// запихиваем в строку весь код - открываем таблицы...
	var calendarCode = '<table cellpadding="0" cellspacing="0" border="0" style="position: relative; border: 1px solid #000000; width: 180; left: -152; top: 0; ">';
	calendarCode += '<tr><td><table cellpadding="0" cellspacing="3" border="0" width="100%" bgcolor="cccccc">';
	// здесь указываем клик на прошлый год
	calendarCode += '<tr><td><img src="' + imagesFolder + 'arr-prev.gif" width="12" height="12" border="0" onClick="switchMonthTo(' + thisMonth + ', ' + prevYear + ')" style="cursor: pointer; cursor: hand;" /><\/td>';
	//calendarCode += '<tr><td><\/td>';
	// текущий (показываемый) год
	calendarCode += '<td align="center">' + thisYear + '<\/td>';
	// клик на следующий год
	calendarCode += '<td align="right"><img src="' + imagesFolder + 'arr-next.gif" width="12" height="12" border="0" onClick="switchMonthTo(' + thisMonth + ', ' + nextYear + ')" style="cursor: pointer; cursor: hand;" /><\/td><\/tr>';
	// клик на предыдущий месяц
	calendarCode += '<tr><td><img src="' + imagesFolder + 'arr-prev.gif" width="12" height="12" border="0" onClick="switchMonthTo(' + prevMonth + ', ' + prevMonthYear + ')" style="cursor: pointer; cursor: hand;" /><\/td>';
	//calendarCode += '<tr><td><\/td>';	
	// текущий месяц
	calendarCode += '<td align="center">' + calendarNames.month[thisMonth] + '<\/td>';
	// клик на следующий месяц
	calendarCode += '<td align="right"><img src="' + imagesFolder + 'arr-next.gif" width="12" height="12" border="0" onClick="switchMonthTo(' + nextMonth + ', ' + nextMonthYear + ')" style="cursor: pointer; cursor: hand;" /><\/td><\/tr>';
	calendarCode += '<\/table><\/td><\/tr>';

	// начинаем таблицу самого месяца
	calendarCode += '<tr><td style="border-top: 1px solid #808080;" bgcolor="#ffffff"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tr>';
	calendarCode += '<td>&nbsp;<\/td><td>&nbsp;<\/td>';
	for (var i = 0; i < calendarNames.weekday.length; i++) {
		var styleClass = (i < calendarNames.weekday.length - 1)? 'rightCell whiteCell' : 'rightCell sundayCell';
		calendarCode += '<td class="' + styleClass + '" align="right" style="padding-right: 5">' + calendarNames.weekday[i] + '<\/td>';
	}
	calendarCode += '<td>&nbsp;<\/td><td class="whiteCell">&nbsp;<\/td><\/tr>';
	
	// разделительная полоска
	calendarCode += '<tr><td height="1" nowrap="nowrap">' + pixelSpacer + '<\/td>';
	calendarCode += '<td height="1" nowrap="nowrap" colspan="9" bgcolor="#0000000">' + pixelSpacer + '<\/td>';
	calendarCode += '<td height="1" nowrap="nowrap">' + pixelSpacer + '<\/td><\/tr>';

	// сам месяц
	calendarCode += '<tr><td><br /><\/td><td><br /><\/td>';

	// рисуем пустые ячейки если нужно...
	var daysToStart = (drawMonth.getDay() == 0)? 7 : drawMonth.getDay();
	for (var i = 0; i < daysToStart - 1; i++) calendarCode += '<td><br /><\/td>';
	
	// собственно циферки
	for (var i = 1; i < 33; i++) {
		drawMonth.setDate(i);
		if (isThisMonth && i == currDate.getDate()) {
			calendarCode += '<td align="right" style="padding-right: 5"><strong>' + i + '<\/strong><\/td>'
		} else {
			if (drawMonth.getMonth() == thisMonth) {
				var styleClass = (drawMonth.getDay() == 0)? 'rightCell sundayCell' : 'rightCell whiteCell'
				sereda = (drawMonth.getDay() == 3)? 1: 0;
				if(sereda) calendarCode += '<td  style="padding-right: 5; font-weight: bold;" class="' + styleClass + '" align="right"><a href="#" style="text-decoration: none; color: black" onClick="setDateFromCalendar(' + i + ', ' + month + ', ' + year + '); return false;">' + i + '</a><\/td>';
				if(!sereda) calendarCode += '<td  style="padding-right: 5; color: #888888;" class="' + styleClass + '" align="right">' + i + '<\/td>';
			} else break;
		}
			if (drawMonth.getDay() == 0) calendarCode += '<td><br /><\/td><td><br /><\/td><\/tr><tr><td><br /><\/td><td><br /><\/td>';
	}
	
	// опять рисуем пустые ячейки
	if (drawMonth.getDay() != 1) {
		var daysToEnd = 8 - ((drawMonth.getDay() == 0)? 7 : drawMonth.getDay());
		for (var i = 0; i < daysToEnd; i++) calendarCode += '<td><br /><\/td>';
	}
	calendarCode += '<td><br /><\/td><td><br /><\/td><\/tr><\/table><\/td><\/tr>';

	// ссылка на сегодня
	calendarCode += '<tr><td bgcolor="#545454" style="border-top: 1px solid #000000; color: #ffffff; padding: 3px; font-size: 10px; font-weight: bold;" align="center">'+calendarNames.today+'<\/td><\/tr>';

	// конец
	calendarCode += '<\/table>';

	return calendarCode;
}



//служебные
function zeroFill(value){
	return (value<10 ? '0':'')+value;
}

function value2date(value){
	if (value && value != '00.00.0000'){
	        var re = /(\d+)\.(\d+)\.(\d+)/i;
		var date = re.exec(value);
		if (date) return(new Date(date[3],date[2]-1,date[1]));
	}
        return null;
}

function addEvent(elementPtr, eventType, eventFunc) {
	if (elementPtr.addEventListener) {
		elementPtr.addEventListener(eventType, eventFunc, false);
	} if (elementPtr.attachEvent) {
		elementPtr.attachEvent('on' + eventType, eventFunc);
	} else {
		// ничего не делаем
	}
}
