(function ($) {
	"use strict";

	$.fn.jmdLightBox = function (options) {
		var $elms = $(this),
			$lbContainer = $('<div id="JMD_LightBox"><div class="lbContent"></div><div class="lbClose">Close</div></div>'),
			settings = {
				group: false,
				repeat: false,
				lbPrev: '<div class="lbPrev">Previous</div>',
				lbNext: '<div class="lbNext">Next</div>',
				caption: false
			};


		var setNextPrev = function (index) {
			var repeat = settings.repeat,
				prev = index - 1,
				next = index + 1,
				$lbPrev = $(settings.lbPrev).appendTo('#JMD_LightBox .lbContent'),
				$lbNext = $(settings.lbNext).appendTo('#JMD_LightBox .lbContent');

			switch (index) {
				case 0:
					if (repeat) {
						prev = $elms.length - 1;
						$lbPrev.prop('href', $elms[prev].href)
								.click({grpIndex: prev}, lbSet);
					} else {
						$lbPrev.detach();
					}

					$lbNext.prop('href', $elms[next].href)
							.click({grpIndex: next}, lbSet);

					break;

				case $elms.length - 1:
					$lbPrev.prop('href', $elms[prev].href)
							.click({grpIndex: prev}, lbSet);

					if (repeat) {
						next = 0;
						$lbNext.prop('href', $elms[next].href)
								.click({grpIndex: next}, lbSet);
					} else {
						$lbNext.detach();
					}

					break;

				default:
					$lbPrev.prop('href', $elms[prev].href)
							.click({grpIndex: prev}, lbSet);
					$lbNext.prop('href', $elms[next].href)
							.click({grpIndex: next}, lbSet);

					break;
			}
		};

		var lbSet = function (event) {
			var $lb,
				loadCallBack = function () {
					var caption = settings.caption;

					if (caption && ($elms.prop(caption) || $elms.attr(caption))) {
						caption = ($elms.prop(caption) ? $elms.prop(caption) : $elms.attr(caption));
						$.append('<div class="lbCaption">' + caption + '</div>');
					}

					if (settings.group) {
						setNextPrev(event.data.grpIndex);
					}

					$lb.parent()
						.css({height: ($(document).height() + 'px'), padding: '0'})
						.end();
				};

			$.extend(settings, options);

			if ($('body #JMD_LightBox').length === 0) {
				$lbContainer.appendTo('body')
							.children('.lbClose')
							.click(function () {$('#JMD_LightBox').detach(); })
							.end()
			}

			$lb = $('#JMD_LightBox .lbContent').load(this.href, {bcOnly: 'true'}, loadCallBack);

			event.preventDefault();
		};

		return this.each(function (index) {$(this).click({grpIndex: index}, lbSet); });
	};
}(jQuery));

jQuery('.portView.examples a').jmdLightBox({group: true});
