/*массив картинок*/
images = [
				"./images/0.gif",
				"./images/1.gif",
				"./images/2.gif",
				"./images/3.gif",
				"./images/4.gif",
				"./images/5.gif",
				"./images/6.gif",
				"./images/7.gif",
				"./images/8.gif",
				"./images/9.gif",
			]

limit = 20; // количество лет, выводимых в select

/*---------------------------*/

// функция создания действия для объекта
function addEvent( obj, type, fn ) {
  if ( obj.attachEvent ) {
    obj['e'+type+fn] = fn;
    obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
    obj.attachEvent( 'on'+type, obj[type+fn] );
  } else
    obj.addEventListener( type, fn, false );
}

// функция вкл/откл элементов
function disabledElements(elements)
{

	for(var i = 0; i < elements.idElements.length; i++)
	{
		document.getElementById(elements.idElements[i]).disabled = elements.disables[i];
	}
}

// функция создания списка лет
function addSelectYear() {
	var nowDate = new Date();
	var year = nowDate.getFullYear();
	selectYear = document.getElementById('selectYear');
	for(var i = year; i <= (year+limit); i++) {
		var option = document.createElement("option");
		option.value = i;
		option.innerHTML = i;
		selectYear.appendChild(option);
	}
}

// функция создания списка дней
function addSelectDay(selectDay) {
	var days = new Array(null, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	selectYear = document.getElementById('selectYear').value;
	selectMonth = document.getElementById('selectMonth').value;
	if(selectYear == 0 || selectMonth == 0) {
		removeChildrenRecursively(selectDay);
		var option = document.createElement("option");
		option.value = 0;
		option.innerHTML = " - - ";
		selectDay.appendChild(option);
		return;
	}
	removeChildrenRecursively(selectDay);

	var option = document.createElement("option");
	option.value = 0;
	option.innerHTML = " - - ";
	selectDay.appendChild(option);

	if(selectYear % 4 == 0 && selectMonth == 2) days[selectMonth]++;
	for(var i = 1; i <= days[selectMonth]; i++) {
		var option = document.createElement("option");
		option.value = i;
		option.innerHTML = i;
		selectDay.appendChild(option);
	}
}

// функция удаления дочерних узлов
function removeChildrenRecursively(node)
{
    if (!node) return;
    while (node.hasChildNodes()) {
        removeChildrenRecursively(node.firstChild);
        node.removeChild(node.firstChild);
    }
}

// функция запуска таймера
function startTimer()
{
	selectYear = parseInt(document.getElementById('selectYear').value);
	selectMonth = parseInt(document.getElementById('selectMonth').value);
	selectDay = parseInt(document.getElementById('selectDay').value);

	timerDate = new Date(selectYear, selectMonth-1, selectDay);

	timerMSeconds = Date.parse(timerDate.toString());
	nowMSeconds = Date.parse(Date());
	timerSeconds = (timerMSeconds - nowMSeconds) / 1000;

	if(selectYear == 0 || selectMonth == 0 || selectDay == 0)
	{
		alert("Select Date!");
		return;
	}

	if(timerSeconds < 0)
	{
		alert("Error date!");
		return;
	}

	var clocks = document.getElementById("clocks");

	var elements = {
		idElements: ["selectYear", "selectMonth", "selectDay", "start", "stop"],
		disables: [true, true, true, true, false]
	}

	disabledElements(elements);
	clocks.style.display = "block";

	var Timer = {seconds: timerSeconds};

	ourTimer = setInterval(function(){inputTimer(arguments[0], arguments[1])},1000, Timer, clocks);
}

// функция выключения таймера
function stopTimer()
{
	var clocks = document.getElementById("clocks");
	var elements = {
		idElements: ["selectYear", "selectMonth", "selectDay", "start", "stop"],
		disables: [false, false, false, false, true]
	}

	disabledElements(elements);
	clearInterval(ourTimer);
	clocks.innerHTML = "";
	clocks.style.display = "none";
}

// функция рекурсии, подсчёт времени, вывод информации таймера
function inputTimer(obj, id)
{
	obj.seconds--;
	var content = contentTimer(obj.seconds);
	id.innerHTML = content;
}

// функция создания таймера
function contentTimer(seconds)
{

	if(seconds == 0)
	{
		clearInterval(ourTimer);
		return "Таймер вышел!!!";
	}

	var content = "До даты осталось: <br>";

	// years
	years = Math.floor(seconds / 31536000)
	seconds -= years * 31536000;
	content += (years != 0) ? "Лет: "+grafImages(years)+"<br>" : "";

	// months
	months = Math.floor(seconds / 2678400)
	seconds -= months * 2678400;
	content += (months != 0) ? "Месяцев: "+grafImages(months)+"<br>" : "";

	// days
	days = Math.floor(seconds / 86400)
	seconds -= days * 86400;
	content += (days != 0) ? "Дней: "+grafImages(days)+"<br>" : "";

	// hours
	hours = Math.floor(seconds / 3600)
	seconds -= hours * 3600;
	content += "Времени: "+grafImages(hours, true)+" : ";

	// min
	min = Math.floor(seconds / 60)
	seconds -= min * 60;
	content += grafImages(min, true)+" : ";

	content += grafImages(seconds, true);
	
	return content;
}

// функция замены цифр на картинки
function grafImages(string)
{

	string = string+"";
	if(arguments[1] != null && string.length == 1) string = "0"+string;
	var numbers = string.split("");
 	string = "";
	for(var i = 0; i < numbers.length; i++) 	string += "<img src='"+images[numbers[i]]+"'>";
	return string;
}

/* -------------------------- */

// создание действия при загрузке окна
addEvent(window, 'load', function(event) {
	addSelectYear(limit);
	stopTimer();
});


