var tds = [];
var hovers = {
	'column1':[1,2,3],
	'column2':[4,5,6],
	'column3':[7,8,9],
	'row1':[1,4,7],
	'row2':[2,5,8],
	'row3':[3,6,9],
	'diagonal1':[1,5,9],
	'diagonal2':[3,5,7]
};
var selects = {};

function $(s)
{
	return document.getElementById(s);
}

function Collect()
{
	for(var i = 1; i <= 9; i++)
	{
		tds[i] = $('td' + i);
	}
	
	selects.day = $('select_day');
	selects.month = $('select_month');
	selects.year = $('select_year');
}

function Hover(td)
{
	var h = hovers[td];
	var hc = h.length;
	for(var i = 0; i < hc; i++)
	{
		AddClass(tds[h[i]],'hover');
	}
}

function Out(td)
{
	var h = hovers[td];
	var hc = h.length;
	for(var i = 0; i < hc; i++)
	{
		RemoveClass(tds[h[i]],'hover');
	}
}

function AddClass(object,className)
{
	object.className += ' ' + className;
}
function RemoveClass(object,className)
{
	eval('var s = object.className.replace(/' + className + '/g,\'\');');
	object.className = s;
}

function CorrectSelects()
{
	var current_year = selects.year.value;
	var current_month = selects.month.value;
	var number_days = GetNumberDays(current_year,current_month);
	var length = selects.day.options.length;
	if(number_days < length)
	{
		var selected_index = selects.day.selectedIndex;
		var diff = length - number_days;
		for(var a = 0; a < diff; a++)
		{
			selects.day.remove(selects.day.options.length - 1);
		}
		if(selected_index > (number_days-1))
		{
		 selects.day.selectedIndex = selects.day.options.length - 1;
		}
	}
	
	if(number_days > length )
	{
		var diff = number_days - length;
		for(var a = 1; a <= diff; a++)
		{
			var new_value = Number(length) + a;
			var new_option = document.createElement('option');
			new_option.value = new_value;
			new_option.text = new_value;
			try {
			  selects.day.add(new_option, null);
			}
			catch(ex) {
			  selects.day.add(new_option);
			}
		}
	}
	
}

function GetNumberDays(year,month)
{
  	return 32 - new Date(year, (month-1), 32).getDate();
}

function Set(day,month,year)
{
selects.month.value = month;
selects.year.value = year;
CorrectSelects();
selects.day.value = day;
}
