var months = [["styczeń", 31], ["luty", 29], ["marzec", 31], ["kwiecień", 30], ["maj", 31], ["czerwiec", 30], ["lipiec", 31], ["sierpień", 31], ["wrzesień", 30], ["październik", 31], ["listopad", 30], ["grudzień", 31]];

var kCalendar = new Class({
	initialize: function(month, day) {
		this.month = month;
		this.day = day;
		
		this.setMonths();
		this.setDays(month);
		
		this.setDate(month, day);
	},
	
	setMonths: function() {
		months.each(function(v, i) {
			var li = new Element("li");
			li.id = "calendar_month_" + (i + 1);
			li.innerHTML = v[0];
			
			li.onclick = function() {
				$("calendar_months").getChildren().each(function(v) {
					v.set("class", "");
				});

				$("calendar_month_" + (i + 1)).set("class", "current");

				this.setDays(i + 1);
			}.bind(this);
			
			if (i + 1 == this.month) {
				li.set("class", "current");
			}
			
			$("calendar_months").appendChild(li);
		}.bind(this));
	},
	
	setDays: function(month) {	
		$("calendar_days").innerHTML = "";

		for (var i=1; i<=31; i++) {
			var li = new Element("li");
			li.id = "calendar_month_" + month + "_day_" + i;
			li.innerHTML = i;;

			if (i <= months[(month-1)][1]) {
				this.addOnClickForLi(li, month, i);
				
				if (i == this.day && month == this.month) {
					li.set("class", "current");
				}
			}
			else {
				li.set("class", "disabled");
			}
			
			$("calendar_days").appendChild(li);
		}
	},
	
	addOnClickForLi: function(li, month, day) {		
		li.onclick = function() {
			$("calendar_days").getChildren().each(function(v) {
				if (!v.hasClass("disabled")) {
					v.set("class", "");
				}
			});

			li.set("class", "current");
			this.setDate(month, day);
		}.bind(this);		
	},
	
	setDate: function (month, day) {
		this.month = month;
		this.day = day;
		
		$("calendar_month_" + this.month + "_day_" + this.day).set("class", "current");
		
		$("reminder_month").value = this.month;
		$("reminder_day").value = this.day;
		$("calendar_current_date").innerHTML = this.day + " " + months[(this.month - 1)][0];
	}
});

var kRating = new Class({
	initialize: function(cardId, cardStripped, start, vote) {
		this.current = start;
		
		for (var i=1; i<=5; i++) {
			var li = new Element("li");
			
			var img = new kRating_Star(cardId, cardStripped, i, start, vote);
			
			li.appendChild(img.img);
			$("rating").appendChild(li);
		}
		
		kRating.update(start, true);
	}
});
kRating.update = function(to, mode) {
	mode = mode ? "on" : "off";
	
	for (var i=1; i<=to; i++) {
		$("rating_" + i + "_star").src = "/images/rating/" + mode + ".png";
	}
}
var kRating_Star = new Class({
	initialize: function(cardId, cardStripped, id, start, vote) {
		this.cardId = cardId;
		this.cardStripped = cardStripped;
		this.id = id;
		this.start = start;
		this.vote = vote;
		
		var img = new Element("img");
		img.src = "/images/rating/off.png";
		img.id = "rating_" + id + "_star";
		img.alt = "Oceń kartkę na " + id;
		img.title = img.alt;
		
		img.onmouseover = function() {
			//this.img.src = "/images/rating/on.png";
			kRating.update(5, false);
			kRating.update(this.id, true);
		}.bind(this);
		
		img.onmouseout = function() {
			kRating.update(5, false);
			kRating.update(this.start, true);
		}.bind(this);
		
		if (this.vote == true) {
			img.onclick = function() {
				document.location.href = "/ocen-kartke/" + this.cardId + "/" + this.cardStripped + "/ocena/" + this.id + ".html";
			}.bind(this);
		}
		
		this.img = img;
	}
});

var kPopUp = new Class({
	initialize: function(url, width, height) {
		w = width || 700;
		h = height || 500;
		window.open(url, "kPopUp", "toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=0,width=" + w + ",height=" + h);
	}
});

var lastHolidaysDay = null;
function markHolidaysForDay(day) {
	day = parseInt(day);
	
	if ($("holidaysDayTd_" + lastHolidaysDay)) {
		$("holidaysDayTd_" + lastHolidaysDay).removeClass("selected");
	}
	
	$("holidaysDayTd_" + day).addClass("selected");
	lastHolidaysDay = day;
	
	$("holidaysList").getChildren().removeClass("selected");
	$(document.body).getElements(".holidaysDayLi_" + day).addClass("selected");
}
