﻿(function (b) {
	var a = {
		width: 1000,
		height: 600,
		overlayOpacity: 0.85,
		id: "modal",
		src: function (c) {
			return jQuery(c).attr("href")
		},
		fadeInSpeed: 'slow',
		fadeOutSpeed: 'slow'
	};
	
	b.modal = function (c) {
		return _modal(this, c)
	};
	
	b.modal.open = function () {
		_modal.open()
	};
	
	b.modal.close = function () {
		_modal.close()
	};
	
	b.fn.modal = function (c) {
		return _modal(this, c)
	};
	
	_modal = function (c, d) {
		this.options = {
			parent: null,
			overlayOpacity: null,
			id: null,
			content: null,
			width: null,
			height: null,
			modalClassName: null,
			imageClassName: null,
			closeClassName: null,
			overlayClassName: null,
			src: null
		};
		this.options = b.extend({}, options, _defaults);
		this.options = b.extend({}, options, a);
		this.options = b.extend({}, options, d);
		
		this.close = function () {
			/*jQuery("." + options.modalClassName + ", ." + options.overlayClassName).fadeOut(a.fadeOutSpeed, function () {
				jQuery(this).unbind().remove()
			})*/
			jQuery("." + options.modalClassName).hide();
			jQuery("." + options.overlayClassName).fadeOut(a.fadeOutSpeed, function () {
				jQuery(this).unbind().remove()
			})
		};
		
		this.open = function () {
			if (typeof options.src == "function") {
				options.src = options.src(c)
			} else {
				options.src = options.src || _defaults.src(c)
			}
			var e = /^.+\.((jpg)|(gif)|(jpeg)|(png)|(jpg))$/i;
			var f = "";
			if (e.test(options.src)) {
				f = '<div class="' + options.imageClassName + '"><img src="' + options.src + '"/></div>'
			} else {
				f = '<iframe width="' + options.width + '" height="' + options.height + '" frameborder="0" scrolling="no" allowtransparency="true" src="' + options.src + '">&lt/iframe>'
			}
			
			options.content = options.content || f;
			
			if (jQuery("." + options.modalClassName).length && jQuery("." + options.overlayClassName).length) {
				jQuery("." + options.modalClassName).html(options.content)
			} else {
				$overlay = jQuery((_isIE6()) ? '<iframe src="BLOCKED SCRIPT\'&lt;html&gt;&lt;/html&gt;\';" scrolling="no" frameborder="0" class="' + options.overlayClassName + '"></iframe><div class="' + options.overlayClassName + '"></div>' : '<div class="' + options.overlayClassName + '"></div>');
				$overlay.hide().appendTo(options.parent);
				$modal = jQuery('<div id="' + options.id + '" class="' + options.modalClassName + '" style="width:' + options.width + "px; height:" + options.height + "px; margin-top:-" + (options.height / 2) + "px; margin-left:-" + (options.width / 2) + 'px;">' + options.content + "</div>");
				$modal.hide().appendTo(options.parent);
				$close = jQuery('<a class="' + options.closeClassName + '"></a>');
				$close.appendTo($modal);
				var g = _getOpacity($overlay.not("iframe")) || options.overlayOpacity;
				
				//$overlay.fadeTo(0, 0).show().not("iframe").fadeTo(a.fadeInSpeed, g);
				$overlay.fadeTo(0, 0).show().not("iframe").fadeTo(0, g);
				$modal.fadeIn(a.fadeInSpeed);
				
				$close.click(function () {
					jQuery.modal().close()
				});
				
				$overlay.click(function () {
					jQuery.modal().close()
				})
			}
		};
		return this
	};
		
	_isIE6 = function () {
		if (document.all && document.getElementById) {
			if (document.compatMode && !window.XMLHttpRequest) {
				return true
			}
		}
		return false
	};
		
	_getOpacity = function (c) {
		$sender = jQuery(c);
		opacity = $sender.css("opacity");	
		filter = $sender.css("filter");
		if (filter.indexOf("opacity=") >= 0) {
			return parseFloat(filter.match(/opacity=([^)]*)/)[1]) / 100
		} else {
			if (opacity != "") {
				return opacity
			}
		}
		return ""
	};
		
	_defaults = {
		parent: "body",
		overlayOpacity: 40,
		id: "modal",
		content: null,
		width: 800,
		height: 600,
		modalClassName: "modal-window",
		imageClassName: "modal-image",
		closeClassName: "close-window",
		overlayClassName: "modal-overlay",
		src: function (c) {
			return jQuery(c).attr("href")
		}
	}
	
})(jQuery);

