﻿function IframeLayer() 
{
}

//---------------------------------------------------------------------------
var IframeManager =
//---------------------------------------------------------------------------
{
	layers: new Array(),

	printLast: function()
	{
		if (IframeManager.layers.length == 0)
		{
			window.print();
		}
		else
		{
			var iframeId = 'iframe_' + (parent.IframeManager.layers.length - 1);
			if ($.browser.msie)
			{
				document[iframeId].focus();
				window.print();
			}
			else
			{
				window.frames[iframeId].focus();
				window.frames[iframeId].print();
			}
		}
	},

	/*
		Available options:
			options.width
			options.minWidth
			options.height
			options.position : 'cascade' or 'center'
	 */
	create: function(url, options) 
	{
		if (options == null)
		{
			options = new Object();
		}
		if (options.position != 'cascade' && options.position != 'center')
		{
			options.position = 'center';		
		}

		var layer = new IframeLayer();
		var availWidth = $('html').attr('clientWidth');
		var availHeight = $('html').attr('clientHeight');
				
		if (options.width == null) 
		{
			options.width = availWidth * 0.8;
			if (options.minWidth && typeof(options.width) == 'number' && options.width < options.minWidth)
		{
				options.width = options.minWidth;
			}
		}
		if (options.height == null) 
		{
			options.height = availHeight * 0.8;
			if (options.position == 'cascade')
		{
				options.height -= 40;
			}
		}
				
		// default positioning : center
		var scrollLeft = $('html').attr('scrollLeft');
		var scrollTop = $('html').attr('scrollTop');
		var offsetLeft = scrollLeft + (availWidth - options.width) / 2;
		var offsetTop = scrollTop + (availHeight - options.height) / 2;
		
		if (options.position == 'cascade')
		{
			offsetLeft = scrollLeft + 80 + IframeManager.layers.length * 40;
			offsetTop = scrollTop + 80 + IframeManager.layers.length * 40;
		}

		$('body').append('<div id="iframeOverlay_' + IframeManager.layers.length + '" class="iframeOverlay" style="z-index: ' + (100 + IframeManager.layers.length * 2) + '; left: ' + scrollLeft + 'px; top: ' + scrollTop + 'px;" />');

		var html = '<div id="iframeWindow_' + IframeManager.layers.length + '" class="iframeWindow" style="width: ' + options.width + 'px; height: ' + options.height + 'px; left: ' + offsetLeft + 'px; top: ' + offsetTop + 'px; z-index: ' + (101 + IframeManager.layers.length * 2) + ';">';
		html += '<div class="iframeTitle"><img src="./../../Images/print.gif" onclick="parent.IframeManager.printLast()" /><img src="./../../Images/close.gif" onclick="IframeManager.closeLast();" /></div>';
		html += '<iframe id="iframe_' + IframeManager.layers.length + '" name="iframe_' + IframeManager.layers.length + '" frameborder="0" src="' + url + '" />';
		html += '</div>';
		$('body').append(html);

		$('#iframeWindow_' + IframeManager.layers.length + ' iframe').load(function() { IframeManager.loaded(); });
		IframeManager.layers.push(layer);
		
		$('html').css('overflow-y', 'hidden');
		if (IframeManager.layers.length == 1)
		{	
			//$(document).bind('mousewheel', IframeManager.disableMouseWheel);	
			//$(window).bind('mousewheel', IframeManager.disableMouseWheel);
		}
	},

	closeLast: function() 
	{
		if (IframeManager.layers.length == 0) 
		{
			return;
		}

		var layer = IframeManager.layers.pop();
		$('#iframeWindow_' + IframeManager.layers.length).remove();
		$('#iframeOverlay_' + IframeManager.layers.length).remove();
		
		if (IframeManager.layers.length == 0) 
		{
			$('html').css('overflow-y', 'scroll');
			//$(document).unbind('mousewheel', IframeManager.disableMouseWheel);
			//$(window).unbind('mousewheel', IframeManager.disableMouseWheel);
		}
	},

	loaded: function() 
	{
		var layer = IframeManager.layers[IframeManager.layers.length - 1];

		if (layer) 
		{
			var location = document.getElementById('iframe_' + (IframeManager.layers.length - 1)).contentWindow.document.location.href;
		}
	},
	
	disableMouseWheel : function(event)
	{
		event.preventDefault();
		return false;
	}
}
//---------------------------------------------------------------------------
