var loadedPages = 1;
var weHaveLastPage = false;

$(document).ready(function() {
	$(".mainpage-parties-party").hover (showBubble, hideBubble);
	$("#page-left-off, #page-right-off").fadeIn("slow");
	$("a.party-strankovani-left-link").click(function(){
		slideParties('left');
	});
	$("a.party-strankovani-right-link").click(function(){
		slideParties('right');
	});
	loadNextParties(3);
});

function showBubble() {
	$(this).find(".mainpage-parties-party-flyer-fade").stop().animate({
		opacity: 0.0
	}, "slow");
	$(this).find(".mainpage-parties-party-data").stop().animate({
		opacity: 0.0
	}, "slow");
	$(this).find(".mainpage-parties-party-bubble").css("display", "block");
	$(this).find(".mainpage-parties-party-bubble").stop().animate({
		opacity: 0.8
	}, "slow");
}

function hideBubble() {
	$(this).find(".mainpage-parties-party-flyer-fade").stop().animate({
		opacity: 0.85
	}, "slow");
	$(this).find(".mainpage-parties-party-data").stop().animate({
		opacity: 1.0
	}, "slow");
	$(this).find(".mainpage-parties-party-bubble").stop().animate({
		opacity: 0.0
	}, "slow", "swing", function() {$(this).css("display", "none");});
}

function loadNextParties(totalPagesCount) {

	if (weHaveLastPage) {
		return;
	}

	//Nacteme dalsi stranky s akcemi
	for (i = loadedPages; i < totalPagesCount; i++) {
		loadNextPartyPage();
	}

}

function loadNextPartyPage() {

	loadedPages += 1;
	var pageNum = loadedPages;

	var page = $('<div class="mainpage-parties-list-item blocked" id="mainpage-parties-list-item-'+pageNum+'" style="display: none;"></div>');
	$(".mainpage-parties-list").append(page);
	
	loadPartyPage (pageNum, page);

}

function loadPartyPage (pageNum, container) {
	
	$.getJSON("/script/mainpage/ajax-parties.php?start="+((pageNum - 1)*6), function(data) {
		
		var poradi = ((pageNum - 1) * 6) + 1;

		if (typeof data['0'] === 'undefined') {
			weHaveLastPage = true;
			container.parent().remove('#mainpage-parties-list-item-'+pageNum);
			return;
		} else if (typeof data['5'] === 'undefined') {
			weHaveLastPage = true;
		}

		$.each(data, function(key, val) {
			var party = $("#party-1").parent().clone();
			party.attr("id", "party-"+poradi);
			party.find("p.mainpage-parties-party-data").html(val.datum+"<br />"+val.nazev);
			party.attr("href", val.link);

			var letak = party.find("img.mainpage-parties-party-flyer-img");
			letak.attr("src", val.letak);
			letak.attr("alt", val.letak_alt);
			
			if (val.letak_width > 0) {
				letak.attr("width", val.letak_width);
			} else {
				letak.removeAttr("width");
			}
			if (val.letak_height > 0) {
				letak.attr("height", val.letak_height);
			} else {
				letak.removeAttr("height");
			}
			if (val.letak_top > 0) {
				letak.css("top", "-"+val.letak_top+"px");
			} else {
				letak.css("top", "0px");
			}
			if (val.letak_left > 0) {
				letak.css("left", "-"+val.letak_left+"px");
			} else {
				letak.css("left", "0px");
			}

			var bubble = party.find("div.mainpage-parties-party-bubble");
			if (typeof val.live !== 'undefined') {
				bubble.find("p.mainpage-parties-party-bubble-live").html(val.live);
				bubble.find("div.mainpage-parties-bubble-live-container").css("display", "block");
			} else {
				bubble.find("div.mainpage-parties-bubble-live-container").css("display", "none");
			}
			if (typeof val.djs !== 'undefined') {
				bubble.find("p.mainpage-parties-party-bubble-djs").html(val.djs);
				bubble.find("div.mainpage-parties-bubble-djs-container").css("display", "block");
			} else {
				bubble.find("div.mainpage-parties-bubble-djs-container").css("display", "none");
			}
			if (typeof val.styl !== 'undefined') {
				bubble.find("p.mainpage-parties-party-bubble-styly").html(val.styl);
				bubble.find("div.mainpage-parties-bubble-styly-container").css("display", "block");
			} else {
				bubble.find("div.mainpage-parties-bubble-styly-container").css("display", "none");
			}
			if (typeof val.vstupne !== 'undefined') {
				bubble.find("p.mainpage-parties-party-bubble-vstup").html(val.vstupne);
				bubble.find("div.mainpage-parties-bubble-vstup-container").css("display", "block");
			} else {
				bubble.find("div.mainpage-parties-bubble-vstup-container").css("display", "none");
			}

			container.append(party);

			poradi++;
		});
		
		container.css("left", "700px");
		container.removeClass("blocked");

		$(".mainpage-parties-party").unbind('hover');
		$(".mainpage-parties-party").hover (showBubble, hideBubble);

		handleArrows();

	});

}

function handleArrows() {

	var shownItem = $("div.mainpage-parties-list div.shown-item");

	if (shownItem.prev(":not(.blocked)").length > 0) {
		if (!$("#page-left-on").is(":visible")) {
			$("#page-left-on").fadeIn("slow");
		}
	} else {
		if ($("#page-left-on").is(":visible")) {
			$("#page-left-on").fadeOut("slow");
		}
	}

	if (shownItem.next(":not(.blocked)").length > 0) {
		if (!$("#page-right-on").is(":visible")) {
			$("#page-right-on").fadeIn("slow");
		}
	} else {
		if ($("#page-right-on").is(":visible")) {
			$("#page-right-on").fadeOut("slow");
		}
	}

}

function slideParties(direction) {
	
	var shownItem = $("div.mainpage-parties-list div.shown-item");
	if (shownItem.length == 0) {
		return;
	}

	shownItem.removeClass("shown-item");

	var nextItem;
	if (direction == "right") {
		nextItem = shownItem.next(":not(.blocked)");
	} else {
		nextItem = shownItem.prev(":not(.blocked)");
	}

	if (nextItem.length == 1) {
		$("div.mainpage-parties-list").css("overflow", "hidden");
		nextItem.css("display", "block");
		if (direction == "right") {
			shownItem.animate({left: -700}, "slow");
			nextItem.animate({left: 0}, "slow", function(){
				shownItem.css("display", "none");
				$("div.mainpage-parties-list").css("overflow", "visible");
				nextItem.addClass("shown-item");
				handleArrows();
				if (nextItem.nextAll().length < 2) {
					loadNextParties(nextItem.prevAll().length + 3);
				}
			});
		} else {
			shownItem.animate({left: 700}, "slow");
			nextItem.animate({left: 0}, "slow", function(){
				shownItem.css("display", "none");
				$("div.mainpage-parties-list").css("overflow", "visible");
				nextItem.addClass("shown-item");
				handleArrows();
			});
		}
	} else {
		shownItem.addClass("shown-item");
	}

}
