var playModal = {
	
	IDs: {
		defaults: {
			viewer: 'modal-viewer'
		},
		actual: {
			viewer: 'modal-viewer'
		}
	},
	
	modalOptions: null,
	
	elementID: null,
	modalTitle: null,
	modalContent: null,
	modalFlash: null,
	modalEmbed: null,
	
	modalContentWidth: 0,
	modalContentHeight: 0,
	modalContentTop: 0,
	modalContentLeft: 0,
	
	openModal: function(e, elementID, modalTitle, options) {
		e.preventDefault();
		
		modalOptions = options;
		
		this.elementID = elementID;
		this.IDs.actual.viewer = this.IDs.defaults.viewer + '-' + elementID;
		this.modalTitle = modalTitle;
		this.modalContent = playModal.wrapModalContent($('#' + elementID));
		
		$('#' + playModal.IDs.actual.viewer).modal(jQuery.extend({
			close: false,
			closeClass: 'modalClose',
			overlayId: 'modal-overlay',
			containerId: 'modal-container',
			onOpen: playModal.open,
			onClose: playModal.close,
			onShow: playModal.onshow
		}, options));
	},
	
	messages: {
		loading: 'טוען...',
		close: 'סגור',
		maximize: 'הגדל חלון',
		minimize: 'שחזר חלון',
		closing: 'סוגר...',
		error: null,
		success: null
	},
	
	open: function (dialog) {
		dialog.overlay.show();
		dialog.container.show();
		dialog.data.show();
		$('#' + playModal.IDs.actual.viewer + ' .modal-title').html(playModal.modalTitle);
		/*
		 * The code below was deprecated to get actual element width on onshow() function
		 * 
		$('#' + playModal.IDs.actual.viewer + ' .modal-title').html(playModal.messages.loading);
		dialog.overlay.fadeIn(200, function () {
			dialog.container.fadeIn(200, function () {
				dialog.data.fadeIn(200, function () {
					$('#' + playModal.IDs.actual.viewer + ' .modal-title').html(playModal.modalTitle);
				});
			});
		});
		*/
	},
	
	close: function (dialog) {
		$('#modal-container .modal-title').html(playModal.messages.closing);
		dialog.data.fadeOut(200, function () {
			dialog.container.fadeOut(200, function () {
				dialog.overlay.fadeOut(200, function () {
					$.modal.close();
				});
			});
		});
	},
	
	onshow: function (dialog) {
		playModal.modalFlash = dialog.container.find('#flashgame');
		playModal.modalEmbed = playModal.modalFlash.find(':first').get(0);
		
		dialog.container.css('top', 100);
		// Fix Modal width for IE6
		if ($.browser.msie && parseInt($.browser.version) == 6) {
			var width = dialog.container.find(':first').find('.modal-content').find('h1').next().get(0).offsetWidth;
			dialog.container.css('width', width);
		}
		
		dialog.container.find('.modalMaximize').bind('click', function(){playModal.maximize(this, dialog); return false;});
		dialog.container.find('.modalMinimize').bind('click', function(){playModal.minimize(this, dialog); return false;});
	},
	
	wrapModalContent: function(jQueryElem) {
		if (jQueryElem.parents('#' + playModal.IDs.actual.viewer).length > 0)
			return jQueryElem;
		
		newHTML = playModal.wrapPrefix() + jQueryElem.htmlIncludeSelf() + playModal.wrapSuffix();
		$(jQueryElem).before(newHTML).remove();
		wrappedModalContent = $('#' + playModal.IDs.actual.viewer).hide().find('#' + playModal.elementID).show();
		return newHTML;
	},
	
	wrapPrefix: function() {
		closeText = playModal.messages.close;
		maximizeText = playModal.messages.maximize;
		minimizeText = playModal.messages.minimize;
		
		var returnarr = [
			'<div id="' + playModal.IDs.actual.viewer + '" style="display:none;">',
				'<a href="#" title="' + closeText + '" class="modalClose modalCloseX"></a>'
		];
		if (modalOptions.maximize) {
			returnarr.push(
				'<a href="#" title="' + maximizeText + '" class="modalMaximize"></a>',
				'<a href="#" title="' + minimizeText + '" class="modalMinimize"></a>'
			);
		}
		returnarr.push(
				'<div class="modal-content">',
						'<h1 class="modal-title"></h1>'
		);
		
		return returnarr.join("\n");
		/*return [
			'<div id="' + playModal.IDs.actual.viewer + '" style="display:none;">',
				'<a href="#" title="' + closeText + '" class="modalClose modalCloseX"></a>',
				'<a href="#" title="' + maximizeText + '" class="modalMaximize"></a>',
				'<a href="#" title="' + minimizeText + '" class="modalMinimize"></a>',
				'<div class="modal-content">',
					'<h1 class="modal-title"></h1>'
		].join("\n");*/
	},
	
	wrapSuffix: function() {
	return [
				'</div>',
			'</div>'
		].join("\n");
	},
	
	maximize: function(elem, dialog) {
		var _t = $(elem);
		var _flashgame = playModal.modalFlash;
		var _embed = playModal.modalEmbed;
		
		_t.hide().next().show();
		
		playModal.modalContentWidth = parseInt(_flashgame.css('width'));
		playModal.modalContentHeight = parseInt(_flashgame.css('height'));
		playModal.modalContentTop = parseInt(dialog.container.css('top'));
		playModal.modalContentLeft = parseInt(dialog.container.css('left'));
		
		var windowSize = window.windowSize();
		
		_flashgame.css('height', windowSize.height - 24);	//24: size of the title bar
		_embed.setAttribute('height', windowSize.height - 24);
		_flashgame.css('width', windowSize.width - 12);	//12: padding of title bar
		_embed.setAttribute('width', windowSize.width - 17);
		dialog.container.css('top', 0);
		dialog.container.css('left', 0);
	},
	
	minimize: function(elem, dialog) {
		var _t = $(elem);
		var _flashgame = playModal.modalFlash;
		var _embed = playModal.modalEmbed;
		
		_t.hide().prev().show();
		
		_flashgame.css('height', playModal.modalContentHeight);
		_embed.setAttribute('height', playModal.modalContentHeight);
		_flashgame.css('width', playModal.modalContentWidth);
		_embed.setAttribute('width', playModal.modalContentWidth);
		dialog.container.css('top', playModal.modalContentTop);
		dialog.container.css('left', playModal.modalContentLeft);
	}
	
}
