(function ($) {

	var isIE = (navigator.appVersion.split("MSIE").length != -1);
	var isBadIE = isIE && parseFloat(navigator.appVersion.split("MSIE")[1]) < 8 || false;
	var defaults = {
		"attr" : "lightbox",
		"container" : "lightbox"
	};

	var prettify = function ($this) {
		if ($this.css("behavior") == "auto") {
			$this.css({"behavior" : "url(/themes/front/js/PIE.htc)"});
			$(".newsletter .input").css({"behavior" : "url(/themes/front/js/PIE.htc)"});
		}
		$this.css({visibility: "visible"});
	};
	
	var processContent = function ($this, options) {
		var target = $($this.attr(options.attr));
		var container = $('<div class="' + options.container + '"><div class="container"></div></div>');
		
		target.css("visibility", "hidden").addClass("content");
		container.children().append(target.remove());
		
		$this.click(function (event) {
			container.css("visibility", "visible");
			event.preventDefault();
		});
		if (isIE) {
			$this.click(function (event) {
				prettify(target);
			});
		}
		else {
			$this.click(function (event) {
				target.css("visibility", "visible");
			});
		}

		return {container: container, target: target}
	};

	var processLink = function ($this, options) {
		var container = $('<div class="' + options.container + '"><div class="container"><div class="content"></div></div></div>');
		var target = container.children().children();

		$this.click(function (event) {
			container.css("visibility", "visible");
			target.html('<div class="loader"></div>');
			prettify(target);
			target.load(
				$this.attr("href") + " " + $this.attr(options.attr),
				function () {
					var content = target.children();
					var className = content.attr("class");
					if (className) {
						target.addClass(className);
						content.attr("class", "");
					}
					prettify(target);
				}
			);
			event.preventDefault();
		});

		return {container: container, target: target}
	};

	$.fn.lightbox = function (options) {
		var options = $.extend(true, defaults, options);

		this.each(function () {
			var $this = $(this);

			if ($this.attr("href")) {
				var result = processLink($this, options);
			}
			else {
				var result = processContent($this, options);
			}

			var closeLink = $('<a class="close" href="#">close x</a>'); // TODO: add options control
			result.target.append(closeLink);

			$("body").append(result.container);
	
			var close = function () {
				result.target.css("visibility", "hidden");
				result.container.css("visibility", "hidden");
			}

			result.container.click(close);
			closeLink.click(close);
			
			result.target.click(function (event) {
				event.stopPropagation();
			});
		});
	}
})(jQuery);

