var kbOptions = {
		delay: 3000, //slideshow delay in miliseconds
		preview: "none", //thumbnails preview position (none,top,bottom)
		textAlign: "center"
};

var kbLang = {
		slideshow_start: "Spustit prezentaci",
		slideshow_stop: "Ukončit prezentaci",
		close: "Zavřít",
		next: "Další",
		prev: "Předchozí"
};

var kazaBox = function (options) {
	var thisInstance = this;
	this.items = new Array();
	this.options = options;
	if (!this.options) this.options = {};
	this.active = 0;
	this.playing = false;
	this.timer = null;
	this.previewElement = null;
	this.slideshowinterval = (this.options["delay"]) ? this.options["delay"] : 3000;
	this.previewposition = (this.options["preview"]) ? this.options["preview"] : "bottom";
	
	$("body").append("<div id=\"kazaOverlayCanvas\"></div>");
	this.ovrCanvas = $("#kazaOverlayCanvas");
	this.ovrCanvas.css("display","none").css("bottom","0").css("height","auto").css("left","0").css("top","0").css("margin","0").css("position","fixed").css("width","100%").css("z-index","9000")
		.css("background-color",(options["overlayColor"]) ? options["overlayColor"] :"#000000");
	$("body").append("<div id=\"kazaOverlayContent\"></div>");
	this.ovrContent = $("#kazaOverlayContent");
	var height_window = $(window).height();
	this.ovrContent.css("line-height",height_window + "px").css("position","fixed").css("display","none").css("bottom","0").css("height","auto").css("left","0").css("top","0").css("margin","0").css("width","100%").css("z-index","9800")
						.css("text-align",(options["textAlign"]) ? options["textAlign"] : "center");
			
	this.addPreview = function () {
		$(this.layer).append("<div id=\"kazaBoxPreview\"><div id=\"kazaBoxPreviewNavPrev\"></div><div id=\"kazaBoxPreviewContent\"></div><div id=\"kazaBoxPreviewNavNext\"></div></div>");
		this.preview = $("#kazaBoxPreview");
		$("#kazaBoxPreviewNavPrev",this.preview).click(function () {
			$("#kazaBoxPreviewContent", thisInstance.preview).scrollLeft();
			return false;
		});
		$("#kazaBoxPreviewNavNext",this.preview).click(function () {
			$("#kazaBoxPreviewContent",thisInstance.preview).scrollRight();
			return false;
		});
	};

	$(this.ovrContent).append("<div id=\"kazaBoxLayer\"></div>");
	this.layer = $("#kazaBoxLayer").css("position","relative").css("width","auto").css("display","inline-block").css("line-height","100%").css("vertical-align",(options["verticalAlign"]) ? options["verticalAlign"] : "middle");
	
	if (this.previewposition == "top") {
		this.addPreview();
	};
	
	$(this.layer).append("<div id=\"kazaBoxImageContainer\"></div>");
	this.imageContainer = $("#kazaBoxImageContainer");
	
	$(this.imageContainer).append("<div id=\"kazaBoxNavig\"><a id=\"kazaBoxNavigPlayPause\" class=\"kaza-box-paused\" title=\"" + kbLang["slideshow_start"] + "\"></a> <a id=\"kazaBoxNavigPrev\"></a> <a id=\"kazaBoxNavigNext\"></a> <a id=\"kazaBoxNavigClose\" title=\"" + kbLang["close"] + "\"></a></div>");
	this.navigpanel = $("#kazaBoxNavig");
	this.playpause = $("#kazaBoxNavigPlayPause");	
	
	$(this.imageContainer).append("<div id=\"kazaBoxImage\"><img/><a id=\"kazaBoxFastPrev\" title=\"" + kbLang["prev"] + "\"></a><a id=\"kazaBoxFastNext\"  title=\"" + kbLang["next"] + "\"></a></div>");
	this.image = $("#kazaBoxImage img").css("line-height","0px");
	
	$(this.imageContainer).append("<div id=\"kazaBoxImageTitle\"></div>");
	this.imageTitle = $("#kazaBoxImageTitle");
	
	if (this.previewposition == "bottom") {
		this.addPreview();
	};
	
	$(this.layer).disableTextSelect();
	
	this.showItem = function (item) {
		this.active = item;
		$(this.image).attr("src", $(this.items[item]).attr("href"));
		$(this.imageTitle).html($(this.items[item]).attr("title"));
		
		if (this.previewposition!='none') {
			$(this.previewElement).removeClass("kazaBoxPrevItemSelected");
			this.previewElement = $("a[kbid=" + item + "]",this.preview);
			$(this.previewElement).addClass("kazaBoxPrevItemSelected");
		}
	};
	
	this.next = function () {
		this.active++;
		if (this.active > this.items.length-1) this.active = 0;
		this.showItem(this.active);
	};
	
	this.prev = function () {
		this.active--;
		if (this.active < 0) this.active = this.items.length-1;
		this.showItem(this.active);
	};
	
	this.show = function (caller) {
		this.items = {};
		var tmp_items = new Array();
		var previewposition = this.previewposition;
		if (this.previewposition!='none') {
			var previewcontainer = $("#kazaBoxPreviewContent",this.preview);
			previewcontainer.empty();
		}
				
		/* init items from html thumbnail links */
		$("a[rel='" + $(caller).attr("rel") + "']").each (function (i) {
			$(this).attr("kbid",i);
			tmp_items[i] = this;
			if (previewposition != "none") {
				var previtem = $("<a class=\"kazaBoxPreviewItem\"></a>").attr("kbid",i);
				previtem.html($(this).html());
				$(previtem).click (function() {
					thisInstance.showItem($(this).attr("kbid"));
					return false;
				});
				$(previewcontainer).append(previtem);
			}
		});
		this.items = tmp_items;

		// some cool stuff here :-]
		this.ovrCanvas.animate({opacity:0},-1, function () { $(this).css("display","block").animate({opacity:(options["opacity"]) ? options["opacity"] : 0.8}); });
		this.ovrContent.animate({opacity:0},-1, function () { $(this).css("display","block").animate({opacity:1}); });
		$(this.imageContainer).fadeIn();

		this.showItem($(caller).attr("kbid"));
	};
	
	this.play = function () {
		$(this.playpause).attr("class","kaza-box-playing");
		this.playing = true;
		$(this.playpause).attr("title",kbLang["slideshow_stop"]);
	};
	
	this.stop = function () {
		this.timer = null;
		this.playing = false;
		$(this.playpause).attr("class","kaza-box-paused");
		$(this.playpause).attr("title",kbLang["slideshow_start"]);
	};
	
	this.hide = function () {
		this.stop();
		this.ovrCanvas.animate({opacity:0}, function () { $(this).css("display","none"); });
		this.ovrContent.animate({opacity:0}, function () { $(this).css("display","none"); });
	};
	
	/* method assignments */
	this.ovrContent.click( function () {
		thisInstance.hide();
	});

};

function kazaBoxSlideshowPlay () {
	if (kb.playing) {
		kb.next();
		kb.timer=setTimeout("kazaBoxSlideshowPlay();",kb.slideshowinterval);
	}
}

$(function () {

	kb = new kazaBox(kbOptions);
	
	$("a[rel^='kazaBox']").each (function (i) { 
		$(this).click(function () {
			kb.show(this);
			return false;
		});
	});
	
	

	$("#kazaBoxNavigNext, #kazaBoxFastNext").click( function () {
		kb.next();
		return false;
	});
	
	$("#kazaBoxNavigPrev, #kazaBoxFastPrev").click( function () {
		kb.prev();
		return false;
	});
	
	$("#kazaBoxNavigClose").click( function () {
		kb.hide();
		return false;
	});
	
	$("#kazaBoxNavigPlayPause").toggle( function () {
		kb.play();
		kb.timer=setTimeout("kazaBoxSlideshowPlay();",Math.round(kb.slideshowinterval/2));
		return false;
	}, function () {
		kb.stop();
	});
	
});

