var cals = ([
	{'index': 0, 'id': 'cal_0', 'box': 'time_beg_date', 'hiddenDate': ''},
	{'index': 1, 'id': 'cal_1', 'box': 'time_end_date', 'hiddenDate': ''}
]);

var actInd = '';
var actCal = '';
//var hiddenDate = '';

var dateSep = '.';

function cal_init()
{
	for (var i = 0; i < cals.length; i++)
	{
		setCal(i);
		fillCal();
	}
}

function setCal(index, obj)
{
	if (index == null)
	{
		while (!obj.id.length)
		{
			obj = obj.parentNode;
		}
		index = obj.id.split('_')[1];
	}
	actInd = index;
	actCal = document.getElementById(cals[index]['id']);
	actBox = document.getElementById(cals[index]['box']);
	//hiddenDate = cals[index]['hiddenDate'];
}

function changeCal(mode, obj)
{
	setCal(null, obj);
	if (cals[actInd]['hiddenDate'].length)
	{
		pieces = cals[actInd]['hiddenDate'].split(dateSep);
		pieces[0] = 1;

		if (mode == 'lastMonth')
		{
			pieces[1]--;
		}
		else if (mode == 'nextMonth')
		{
			pieces[1]++;
		}
		else if (mode == 'lastYear')
		{
			pieces[2]--;
		}
		else if (mode == 'nextYear')
		{
			pieces[2]++;
		}
	}

	cals[actInd]['hiddenDate'] = pieces.join(dateSep);
	$.getJSON("acts.php", { ACT: "11", r: cals[actInd]['calJuurRubr'], d: cals[actInd]['hiddenDate'] }, function(json){
	  changeCalJ(json);
	});

	
}
function changeCalJ(arr)
{
	cals[actInd]['dayLnks'] = arr;
	fillCal();
}
function fillCal()
{
	if (actCal == null)
	{
		return false;
	}
	var dayBox;
	var weekBox;

	var today = new Date();
	var initDate = new Date();
	var calTabel = getClassElement('TBODY', 'calTable', 0, actCal);
	removeChildren(calTabel);

	var todayMonth = today.getMonth();
	var todayYear = today.getFullYear();

	if (cals[actInd]['hiddenDate'].length)
	{
		pieces = cals[actInd]['hiddenDate'].split(dateSep);
		today.setFullYear(pieces[2],pieces[1]-1,pieces[0]);
		initDate.setFullYear(pieces[2],pieces[1]-1,pieces[0]);
	}
	
	var datevar = today.getDate();
	var month = today.getMonth();
	var year = today.getFullYear();
	if (cals[actInd]['initDate'].length && cals[actInd]['hiddenDate'].length && cals[actInd]['initDate'] != cals[actInd]['hiddenDate'])
	{
		var piecesI = cals[actInd]['initDate'].split(dateSep);
		initDate.setFullYear(piecesI[2],piecesI[1]-1,piecesI[0]);
	}
	var todayDay = initDate.getDate();
	var initMonth = initDate.getMonth();
	var initYear = initDate.getFullYear();
	

	if (year == todayYear)
	{
		getClassElement('SPAN', 'nextYear', 0, actCal).innerHTML = '»';
	}
	else
	{
		getClassElement('SPAN', 'nextYear', 0, actCal).innerHTML = '<a onclick="changeCal(\'nextYear\', this)"  class="clk">»</a>';
	}

	if (year == startYear) 
	{
		getClassElement('SPAN', 'lastYear', 0, actCal).innerHTML = '«';
	}
	else
	{
		getClassElement('SPAN', 'lastYear', 0, actCal).innerHTML = '<a onclick="changeCal(\'lastYear\', this)"  class="clk">«</a>';
	}

	if (year == todayYear&&  month == todayMonth)
	{
		getClassElement('SPAN', 'nextMonth', 0, actCal).innerHTML = '»';
	}
	else
	{
		getClassElement('SPAN', 'nextMonth', 0, actCal).innerHTML = '<a onclick="changeCal(\'nextMonth\', this)"  class="clk">»</a>';
	}

	if (year == startYear && month == startMonth )
	{
		getClassElement('SPAN', 'lastMonth', 0, actCal).innerHTML = '«';
	}
	else
	{
		getClassElement('SPAN', 'lastMonth', 0, actCal).innerHTML = '<a onclick="changeCal(\'lastMonth\', this)"  class="clk">«</a>';
	}

	getClassElement('SPAN', 'calMonth', 0, actCal).innerHTML = monthNames[month];
	getClassElement('SPAN', 'calYear', 0, actCal).innerHTML = year;

	var days = numDays(year, month);

	var spaces = new Date(today);

	spaces.setDate(1);
	forward = (spaces.getDay() == 0) ? 6 : (spaces.getDay() - 1);

	spaces.setDate(days);
	back = (spaces.getDay() == 0) ? 0 : (7 - spaces.getDay());

	var boxes = new Array();
	for(i = 0; i < forward; i++)
	{
		boxes.push('&nbsp;');
	}
	for(i = 1; i <= days; i++)
	{
		boxes.push(i);
	}
	for(i = 0; i < back; i++)
	{
		boxes.push('&nbsp;');
	}

	weekBox = document.createElement('TR');

	for (i = 1; i <= boxes.length; i++)
	{
		dayBox = document.createElement('TD');

		if (boxes[i - 1] != '&nbsp;')
		{
			if (todayDay == boxes[i - 1] && year == initYear&&  month == initMonth)
			{
				dayBox.className = 'kalender_aktiivne sprite_img';
			}
			
			dayLink = document.createElement('A');
			dayLink.className = 'clk';
			dayLink.innerHTML = boxes[i - 1];
			dayLink.href = cals[actInd]['dayLnks'][boxes[i - 1]];

			dayBox.appendChild(dayLink);
		}
		else
		{
			dayBox.innerHTML = boxes[i - 1];
		}

		weekBox.appendChild(dayBox);

		if(i%7 == 0)
		{
			calTabel.appendChild(weekBox);
			weekBox = document.createElement('TR');
		}
		else if (i == days)
		{
			calTabel.appendChild(weekBox);
		}
	}
	cals[actInd]['hiddenDate'] = today.getDate() + dateSep + (today.getMonth() + 1) + dateSep + today.getFullYear();
}

function numDays(year, month)
{
	var days = new Date();
	days.setFullYear(year, month, 1);

	var minDays = 28;
	var maxDays = 31;
	var newMonth = new Array();

	for (i = minDays - 1; i <= maxDays + 1; i++)
	{
		days.setDate(i);
		newMonth[i] = days.getMonth();

		if(newMonth[i] != newMonth[minDays - 1])
		{
			return(i - 1);
		}
	}
}


function getClassElements(htmlTag, elemClass, elemCont)
{
	if (elemCont == null)
	{
		elemCont = document;
	}

	var elems = elemCont.getElementsByTagName(htmlTag);
	var classElems = Array();

	var pattern = new RegExp('(^|\\s)' + elemClass + '(\\s|$)');

	for (var i = 0; i < elems.length; i++)
	{
		if (pattern.test(elems[i].className))
		{
			classElems.push(elems[i]);
		}
	}
	return classElems;
}

function getClassElement(htmlTag, elemClass, index, elemCont)
{
	if (elemCont == null)
	{
		elemCont = document;
	}
	if (index == null)
	{
		index = 0;
	}
	var elem = getClassElements(htmlTag, elemClass, elemCont);
	return elem[index];
}

function removeChildren(elem)
{
	if (elem.hasChildNodes())
	{
		while (elem.childNodes.length > 0)
		{
			elem.removeChild(elem.firstChild);
		}
	}
}