/**
 * @requires js/libs/jQuery/plugins/jquery.center.js
 * @requires js/libs/k/kernel/base/util.js
 */

if (typeof(m) == "undefined" || !m) {
	var m = {};
}

(function($) {
	m.win = function(popupId) {
		var that = this,
			config = {
				loadingClass : 'loading',
				isModal : false,
				modalId : 'popup-modal'},
			isOpen = false,
			popupEl = null,
			modalEl = null;

		this.show = function()
		{
			if (null === popupEl) {
				__setup();
			}

			if (config.isModal) {
				__setupModalSize();
				modalEl.css('visibility', 'visible');
			}

			__center();
			popupEl.show();
			isOpen = true;
		}

		this.hide = function()
		{
			if (null === popupEl) {
				__setup();
			}

			if (config.isModal) {
				modalEl.css('visibility', 'hidden');
			}

			popupEl.hide();
			isOpen = false;
		}

		this.setHeader = function(header)
		{
			if (null === popupEl) {
				__setup();
			}

			$('div.head h5', popupEl).html(header);
		}

		this.setBody = function(html)
		{
			if (null === popupEl) {
				__setup();
			}

			$('div.body', popupEl).get(0).innerHTML = html;
		}

		this.showLoading = function()
		{
			$('div.body', popupEl).addClass(config.loadingClass);
		}

		this.hideLoading = function()
		{
			$('div.body', popupEl).removeClass(config.loadingClass);
		}

		this.setConfig = function(options)
		{
			config = $.extend(config, options);

			if ($.browser.msie && $.browser.version * 1 == 6) {
				//нехуй этим говном пользоваться
				config.isModal = false;
			}
		}

        function __setupModalSize()
        {
            modalEl.css({
    			width : $(document).width() + 'px',
           		height : $(document).height() + 'px'
        	});
        }

		function __center()
		{
			popupEl.center();
			var left = (1000 - popupEl.width()) / 2;
			popupEl.css('left', left + 'px');
		}

		function __setup()
		{
			popupEl = $('#' + popupId);

			$('div.close a', popupEl).click(function(e) {
				e.preventDefault();
				that.hide();
			});

			$(document).keypress(function(e) {
				if (isOpen) {
					if (e.keyCode == 27) {
						e.preventDefault();
						that.hide();
					}
				}
			});

			if (config.isModal) {
				modalEl = $('#' + config.modalId);
				modalEl.dblclick(function() {
					that.hide();
				});
			}
		}
	}
}) (jQuery);
