/* Ver 1.0.110519 mod sfb2 */

;(function($) {

	$.fn.mediaslider = function(mid) {

		var srcElement = this;
		var container = $(srcElement).find(".collection1");
		var width = 0;
		var elements = {};
		var isVideo = VideoJS.browserSupportsVideo();

		// Calculate scroll width and scroll positions

		$(container).find(".item1").each(function() {

			var index;

			if ($(this).find(".image1 img").attr("src")) {

				$(this).find(".image1").css("display", "block");
				$(this).find(".video1").remove();

			} else {

				$(this).find(".image1").remove();
				$(this).find(".video1").css("display", "block");

			}

			if (index = $(this).attr("id"))
				elements[index] = {
					scrollTo: width - ($(container).width() / 2 - $(this).width() / 2),
					caption: $(this).find(".link1 A").html(),
					href: $(this).find(".link1 A").attr("href")
				};

			width += $(this).width();

		});

		// Init holder width

		$(container).find(".holder1").css("width", width);

		var scrollWidth = $(container).width();
		var scrollInit = elements["media" + mid] ? elements["media" + mid].scrollTo : ($(container).attr("scrollWidth") - $(container).width()) / 2;
		var scrollStap = Math.round($(container).attr("scrollWidth") / ($(container).find(".item1").length - 2));
		var timerScroll;
		var activeItem;
		var lastItem;

		// Init stamp links

		var d = $(srcElement).find(".stamps1").width() / ($(container).find(".item1").length - 3);
		var pos = 0;

		for (index in elements) {

			var stamplink = $("<a></a>").attr("href", elements[index].href).attr("rel", elements[index].scrollTo).html(elements[index].caption != "" ? elements[index].caption : "&bull;");

			stamplink.click(function() {

				$(srcElement).find(".slider1").slider("value", $(this).attr("rel"));

				loadContentPage($(this).attr("href"));

				return false;

			});

			$(srcElement).find(".stamps1").append(stamplink);

			stamplink.css("left", Math.round(pos - stamplink.width() / 2));

			pos += d;

		}

		$(container).find(".item1").click(function() {

			$(srcElement).find(".slider1").slider("value", elements[this.id].scrollTo);

			loadContentPage(elements[this.id].href);

		});

		// Init video players

		var initVideoPlayer = function(element) {

			$(element).addClass("video-js").VideoJS({
				preload: false
			});

			if ($(element).get(0))
				if ($(element).get(0).player)
		                        $(element).get(0).player.addVideoListener("ended", function() { this.play(); });

		}

		$(container).find("video").each(function() {

			initVideoPlayer(this);

		});

		// Scroll event

		$(container).scroll(function(e) {

			clearTimeout(timerScroll);

			$(this).find(".item1").each(function() {

				var p = $(this).position();
				var centerPos = p.left + $(this).width() / 2;
				var centerDelta = Math.abs(scrollWidth / 2 - centerPos);
				var deltaLim = scrollWidth / 2;
				var opacity;
				var opacityLim = 0.5;
				var srcthis = this;

				if (centerDelta < deltaLim) {

					opacity = 1 - centerDelta / deltaLim > opacityLim ? 1 - centerDelta / deltaLim : opacityLim;

					if (opacity > 0.9)
						opacity = 1;

				} else
					opacity = opacityLim;

				if (isVideo)
					$(this).css("opacity", opacity);

				var video = $(this).find("video").get(0);
				var elementid = $(this).attr("id");

				if (opacity > opacityLim) { // Position on element

					timerScroll = setTimeout(function() {

						if (video)
							video.player.play();

						loadContentPage(elements[elementid].href);

						$(container).find("*[id=" + lastItem + "]").each(function() {

							initVideoPlayer($(this).html($(this).html()).find("video"));

						});

						activeItem = $(srcthis).attr("id");

					}, 500);

				} else
					if ($(this).attr("id") == activeItem) {

						if (video)
							video.player.pause();

						lastItem = activeItem;
						activeItem = null;

					}

			});

		});

		// Init slider

		$(srcElement).find(".slider1").slider({
			animate: true,
			min: 0,
			max: $(container).attr("scrollWidth") - $(container).width(),
			change: function(e, ui) {

				$(container).animate({scrollLeft: ui.value}, 1000);

			},
			slide: function(e, ui) {

				if (Math.abs($(container).attr("scrollLeft") - ui.value) > 200)
					return;

				$(container).stop(true, true);
				$(container).attr({scrollLeft: ui.value});

			},
			stop: function(e, ui) {

				for (index in elements) {

					if (Math.abs(elements[index].scrollTo - ui.value) < scrollStap / 2) {

						setTimeout(function() {

							$(container).stop(true, true);
							$(srcElement).find(".slider1").slider("value", elements[index].scrollTo);

						}, 0);

						return false;

					}

				}

			},
			value: scrollInit
		});

		// Init scroll position

		$(container).attr({scrollLeft: scrollInit}).trigger("scroll");

		// Show mediaslider element

		$(srcElement).css("visibility", "visible").animate({opacity: 1}, 1000);

		// Page loader

		var lastLink = window.location.href;

		function loadContentPage(href) {

			href = $("<a></a>").attr("href", href).get(0).href;

			if (href != lastLink) {

				loadPage(href);
				lastLink = href;

			}

		}

	}

})(jQuery);

