var boxKalendarDaysInMonths = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var boxKalendarTBody = null;
var boxKalendarMonth = null;
var boxKalendarYear = null;
var boxKalendarWaitIcon = null;
var boxUdalostiUL = null;
var boxKalendarJsonObject = null;
var udalostContent = null;
var boxKalendarCountInfoNumber = null;

function leadingZero(num, count) {
	var numZeropad = num + "";
	while(numZeropad.length < count) {
		numZeropad = "0" + numZeropad;
	}
	return numZeropad;
}

function boxKalendarInit() {
	boxKalendarTBody = DOM.gI("boxKalendarTBody");
	if(boxKalendarTBody) {
		boxKalendarWaitIcon			= DOM.gI("boxKalendarWaitIcon");
		boxKalendarMonth			= DOM.gI("boxKalendarMonth");
		boxKalendarYear				= DOM.gI("boxKalendarYear");
		boxUdalostiUL				= DOM.gI("boxUdalostiUL");
		udalostContent				= DOM.gI("udalostContent");
		boxKalendarCountInfoNumber	= DOM.gI("boxKalendarCountInfoNumber");
		var populateDate = new Date(boxKalendarDateObject.getFullYear(), boxKalendarDateObject.getMonth(), 1, 0, 0, 0);
		boxKalendarPopulate(populateDate, true);
	}
}

function boxKalendarPopulate(populateDate, onWindowLoad) {
	boxKalendarDateObject = populateDate;
	boxKalendarWaitIcon.style.display = "inline-block";
	(new AJAX).RPC(BASE + "/cms/boxPrehladUdalostiRPC.php", "getArticlesFromMonth", [populateDate.getFullYear(), (populateDate.getMonth() + 1), cmsLanguageCode], function(jsonObject) {
    	if(jsonObject.result != null) {
    		boxKalendarJsonObject = jsonObject.result; // Načítanie JSON resultu do globálnej premennej
    		for(var i = 0; i < boxKalendarJsonObject.length; i++) {
    			var boxCalendarDayLinkElement = DOM.gI("boxCalendarDayLink-" + boxKalendarJsonObject[i].thisEventsDate);
    			if(boxCalendarDayLinkElement) {
    				// Urobím linku, ktorou budem zobrazoať anotáciu článku s náhľadom a popisom
    				boxCalendarDayLinkElement.title = (boxCalendarDayLinkElement.title == "" ? "" : boxCalendarDayLinkElement.title + " | ") + boxKalendarJsonObject[i].title;
    				boxCalendarDayLinkElement.innerHTML = "<strong>" + boxCalendarDayLinkElement.innerHTML + "</strong>";
    			}
    			
    			if(boxKalendarJsonObject[i].deadline != null) {
	    			var boxCalendarDayDeadlineLinkElement = DOM.gI("boxCalendarDayLink-" + boxKalendarJsonObject[i].deadline);
	    			if(boxCalendarDayDeadlineLinkElement) {
	    				// Urobím linku, ktorou budem zobrazoať anotáciu článku s náhľadom a popisom
	    				boxCalendarDayDeadlineLinkElement.title = (boxCalendarDayDeadlineLinkElement.title == "" ? "" : boxCalendarDayDeadlineLinkElement.title + " | ") + boxKalendarJsonObject[i].title;
	    				boxCalendarDayDeadlineLinkElement.innerHTML = "<strong>" + boxCalendarDayDeadlineLinkElement.innerHTML + "</strong>";
	    			}
    			}
    			
    			if(onWindowLoad == false) { // Nespúšťať pri načítaní stránky
    				//boxUdalostiUL.innerHTML = boxUdalostiUL.innerHTML + '<li><a href="..' + boxKalendarJsonObject[i].coolURLtitle + '" title="' + boxKalendarJsonObject[i].description + '">' + boxKalendarJsonObject[i].title + '</a></li>';
    			}
    		}
    	}
    	boxKalendarSetDate("");
    	boxKalendarWaitIcon.style.display = "none";
    });
	var firstDay = populateDate.getDay();
	var dayCSSClass = "";
    var currentRow = 0;
    var currentMonthDays = boxKalendarDaysInMonths[populateDate.getMonth()];
    if(populateDate.getMonth() == 1 && (populateDate.getFullYear() % 4) == 0) { // Február a prechodný rok
    	currentMonthDays = currentMonthDays + 1;
    }
    var selectedYear = populateDate.getFullYear();
    var selectedMonth = populateDate.getMonth();
    
    boxKalendarMonth.innerHTML	= boxKalendarMonths[selectedMonth];
    boxKalendarYear.innerHTML	= selectedYear;
        
    switch(selectedMonth) {
    	case 11:
    		var nextMonthYear = selectedYear + 1;
	    	var nextMonthMonth = 0;
	    	var prevMonthYear = selectedYear;
	    	var prevMonthMonth = selectedMonth - 1;
	    	break;
	    case 0:
	    	var nextMonthYear = selectedYear;
	    	var nextMonthMonth = selectedMonth + 1;
	    	var prevMonthYear = selectedYear - 1;
	    	var prevMonthMonth = 11;
	    	break;
	    default:
	    	var nextMonthYear = selectedYear;
	    	var nextMonthMonth = selectedMonth + 1;
	    	var prevMonthYear = selectedYear;
	    	var prevMonthMonth = selectedMonth - 1;
	    	break;
    }
    
    var nextMonthDay = 1;
    if(prevMonthMonth == 1 && (prevMonthYear % 4) == 0) { // Február a prechodný rok
    	var prevMonthDay = boxKalendarDaysInMonths[prevMonthMonth] + 1;
    } else {
    	var prevMonthDay = boxKalendarDaysInMonths[prevMonthMonth];
    }
    if(firstDay == 0) {
    	prevMonthDay = prevMonthDay - 5;
    } else {
	    prevMonthDay = prevMonthDay - firstDay + 2;
    }
    
    var currentDayIter = 1;
    var startMonth = false;
    var cellID = new String();
    for(var i = 0; i < boxKalendarTBody.rows.length; i++) {
    	for(var y = 0; y < boxKalendarTBody.rows[i].cells.length; y++) {
    		dayCSSClass = "";
    		if(i == 0) {
    			cellID = boxKalendarTBody.rows[i].cells[y].id
    			if(cellID == "boxKalendarCell_0_" + firstDay.toString()) {
    				startMonth = true;
    			}
    		}
    		
    		if(startMonth == true && currentDayIter <= currentMonthDays) {
    			boxKalendarTBody.rows[i].cells[y].innerHTML = "<span><a href=\"javascript: void(0);\" onclick=\"javascript: boxKalendarSetDate('" + selectedYear + "-" + leadingZero(selectedMonth + 1, 2) + "-" + leadingZero(currentDayIter, 2) + "');\" id=\"boxCalendarDayLink-" + selectedYear + "-" + leadingZero(selectedMonth + 1, 2) + "-" + leadingZero(currentDayIter, 2) + "\">" + currentDayIter + "</a></span>";
	    		currentDayIter = currentDayIter + 1;
    		} else {
    			if(currentDayIter == 1) {
    				boxKalendarTBody.rows[i].cells[y].innerHTML = "<span class=\"prevNextMonth\"><a href=\"javascript: void(0);\" onclick=\"javascript: boxKalendarSetDate('" + prevMonthYear + "-" + leadingZero(prevMonthMonth + 1, 2) + "-" + leadingZero(prevMonthDay, 2) + "');\" id=\"boxCalendarDayLink-" + prevMonthYear + "-" + leadingZero(prevMonthMonth + 1, 2) + "-" + leadingZero(prevMonthDay, 2) + "\">" + prevMonthDay + "</a></span>";
    				prevMonthDay = prevMonthDay + 1;
    			} else {
	    			boxKalendarTBody.rows[i].cells[y].innerHTML = "<span class=\"prevNextMonth\"><a href=\"javascript: void(0);\" onclick=\"javascript: boxKalendarSetDate('" + nextMonthYear + "-" + leadingZero(nextMonthMonth + 1, 2) + "-" + leadingZero(nextMonthDay, 2) + "');\" id=\"boxCalendarDayLink-" + nextMonthYear + "-" + leadingZero(nextMonthMonth + 1, 2) + "-" + leadingZero(nextMonthDay, 2) + "\">" + nextMonthDay + "</a></span>";
	    			nextMonthDay = nextMonthDay + 1;
    			}
    		}
    	}
    }
}

function boxKalendarMonthPlus() {
	if(boxKalendarDateObject.getMonth() == 11) {
		boxKalendarDateObject.setMonth(0);
		var newYear = boxKalendarDateObject.getFullYear() + 1;
		boxKalendarDateObject.setYear(newYear);
	} else {
		boxKalendarDateObject.setDate(1);
		boxKalendarDateObject.setMonth(boxKalendarDateObject.getMonth() + 1);
	}
	
    boxKalendarPopulate(boxKalendarDateObject, false);
}

function boxKalendarMonthMinus() {
	if(boxKalendarDateObject.getMonth() == 0) {
		boxKalendarDateObject.setMonth(11);
		var newYear = boxKalendarDateObject.getFullYear() - 1;
		boxKalendarDateObject.setYear(newYear);
	} else {
		boxKalendarDateObject.setDate(1);
		boxKalendarDateObject.setMonth(boxKalendarDateObject.getMonth() - 1);
	}
	
    boxKalendarPopulate(boxKalendarDateObject, false);
}

function boxKalendarSettingsDateInterval(thisValue) {
	boxKalendarWaitIcon.style.display = "inline-block";
	var kalendarSettingsDateInterval_1	= DOM.gI("kalendarSettingsDateInterval_1");
	var kalendarSettingsDateInterval_3	= DOM.gI("kalendarSettingsDateInterval_3");
	var kalendarSettingsDateInterval_7	= DOM.gI("kalendarSettingsDateInterval_7");
	var kalendarSettingsDateInterval_31	= DOM.gI("kalendarSettingsDateInterval_31");
	
	kalendarSettingsDateInterval_1.className = "";
	kalendarSettingsDateInterval_3.className = "";
	kalendarSettingsDateInterval_7.className = "";
	kalendarSettingsDateInterval_31.className = "";
	
	switch(thisValue) {
		case 1: kalendarSettingsDateInterval_1.className = "active"; break;
		case 3: kalendarSettingsDateInterval_3.className = "active"; break;
		case 7: kalendarSettingsDateInterval_7.className = "active"; break;
		case 31: kalendarSettingsDateInterval_31.className = "active"; break;
	}
	
	(new AJAX).RPC(BASE + "/cms/boxPrehladUdalostiRPC.php", "boxKalendarSettingsDateInterval", [thisValue], function(jsonObject) {
		boxKalendarSetDate("");
	});
}

function boxKalendarSetDate(newDate) {
	boxKalendarWaitIcon.style.display = "inline-block";
	(new AJAX).RPC(BASE + "/cms/boxPrehladUdalostiRPC.php", "boxKalendarSetStartDate", [newDate, cmsLanguageCode], function(jsonObject) {
		var boxKalendarTBody = DOM.gI("boxKalendarTBody");
		var boxKalendarTBodyLinks = boxKalendarTBody.getElementsByTagName("a");
		var boxKalendarTBodyLinksLength = boxKalendarTBodyLinks.length;
		var newDateParsed = jsonObject.result["dateStart"].split("-");
		
		for(var i = 0; i < boxKalendarTBodyLinksLength; i++) {
			boxKalendarTBodyLinks[i].style.background = "";
		}
		
		for(var i = 0; i < jsonObject.result["dateInterval"]; i++) {
			var newDateHighlight = new Date(parseInt(newDateParsed[0], 10), parseInt(newDateParsed[1], 10) - 1, parseInt(newDateParsed[2], 10) + i, 0, 0, 0);
			if(DOM.gI("boxCalendarDayLink-" + newDateHighlight.getFullYear() + "-" + leadingZero(newDateHighlight.getMonth() + 1, 2) + "-" + leadingZero(newDateHighlight.getDate(), 2))) {
				DOM.gI("boxCalendarDayLink-" + newDateHighlight.getFullYear() + "-" + leadingZero(newDateHighlight.getMonth() + 1, 2) + "-" + leadingZero(newDateHighlight.getDate(), 2)).style.background = "#EEEEEE";
			}
		}
		
		
		boxUdalostiUL.innerHTML = "";
		boxKalendarCountInfoNumber.innerHTML = jsonObject.result["numRows"];
		
		for(var i = 0; i < jsonObject.result["resultRows"].length; i++) {
			boxUdalostiUL.innerHTML = boxUdalostiUL.innerHTML + '<li><a href="..' + jsonObject.result["resultRows"][i].coolURLtitle + '" title="' + jsonObject.result["resultRows"][i].description + '">' + jsonObject.result["resultRows"][i].title + (jsonObject.result["resultRows"][i].deadline ? " (" + jsonObject.result["resultRows"][i].deadlineFormatted + ")" : "") + '</a></li>';
		}
		
		boxKalendarWaitIcon.style.display = "none";
	});
}

DOM.aE(window, "load", boxKalendarInit, false); 
