if (Object.isUndefined(s3core))throw 's3core.lightscreen is part of the s3core libraray. s3core.js must be loaded first.';
s3core.lightscreen=Class.create
(
	{
		screen:			false,
		config:
		{
			id:			false,
			opacity:	0.8,
			duration:	0.5,
			color:		'#000',
			zindex:		20000
		},
		item:
		{
			id:			false,
			zindex:		20000
		},
		zlevel:	0,
		initialize: function(config)
		{
			this.config=Object.extend(this.config,config);
			if (!this.config.id)this.config.id=s3core.random();
			if (Prototype.Browser.IE)
			{
				var viewport=document.viewport.getDimensions();
				$(document.body).insert
				(
					[
						'<div id="'+this.config.id+'" ',
						'style="display:none;background-color:'+this.config.color+';position:absolute;top:0px;left:0px;z-index:'+this.config.zindex+';width:'+viewport.width+'px;height:'+viewport.height+'px;"',
						'onclick="void(0);">',
							'<iframe id="'+this.config.id+'_iframe" style="display:block:z-index:-1;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;left:0px;top:0px;width:100%;height:100%;position:absolute;" ',
							'tabindex="0" ',
							'frameborder="0" ',
							'src="javascript:false;"',
							'></iframe>',
						'&nbsp;</div>'
					].join('')
				);
			}
			else
			{
				$(document.body).insert
				(
					[
						'<div id="'+this.config.id+'" ',
						'style="display:none;background-color:'+this.config.color+';position:fixed;top:0px;left:0px;z-index:'+this.config.zindex+';width:100%;height:100%;"',
						'onclick="void(0);">',
							'<iframe id="'+this.config.id+'_iframe" style="display:block:z-index:-1;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;left:0px;top:0px;width:100%;height:100%;position:absolute;" ',
							'tabindex="0" ',
							'frameborder="0" ',
							'src="javascript:false;"',
							'></iframe>',
						'&nbsp;</div>'
					].join('')
				);
			}
			
			this.screen=$(this.config.id);
			if (Prototype.Browser.IE)
			{
				window.onresize=function()
				{
					var viewport=document.viewport.getDimensions();
					this.screen.setStyle('width:'+viewport.width+'px;height:'+viewport.height+'px;');
					return;
				}.bind(this);
				window.onscroll=function()
				{
					var viewport=document.viewport.getDimensions();
					var scroll=document.viewport.getScrollOffsets();
					this.screen.setStyle('width:'+(viewport.width+scroll.left)+'px;height:'+(viewport.height+scroll.top)+'px;top:0px;left:0px;');
					return;
				}.bind(this);
			}
			this.show();
			return;
		},
		show: function()
		{
			Effect.Appear
			(
				this.screen,
				{
					queue:		'front',
					from:		0,
					to:			this.config.opacity,
					duration:	this.config.duration
				}
			);
			return this;
		},
		hide: function()
		{
			Effect.Fade
			(
				this.screen,
				{
					queue:		'end',
					from:		this.config.opacity,
					to:			0,
					duration:	this.config.duration
				}
			);
			return this;
		},
		newItem: function(config)
		{
			var item=new Object();
			Object.extend(item,this.item);
			Object.extend(item,config);
			Object.extend(config,item);
			return item;
		},
		add: function(config)
		{
			var dom=false
			var viewport=document.viewport.getDimensions();
			var scroll=document.viewport.getScrollOffsets();
			if (!Object.isUndefined(config.dom))
			{
				var item=this.newItem(config);
			}
			else
			{
				var item=this.newItem({dom:config});
			}
			if (!item.id)item.id=s3core.random();
			this.zlevel++;
			this.screen.insert({before:'<div id="'+item.id+'" style="position:absolute;z-index:'+(item.zindex+this.zlevel)+';display:none;">'+item.dom+'</div>'});
			(function()
			{
				var left=((document.viewport.getWidth()/2)-$(item.id).getWidth()/2);
				var top=((document.viewport.getHeight()/2)-$(item.id).getHeight()/2);
				$(item.id).setStyle('top:'+top+'px;left:'+left+'px;').show();
			}.bind(this)).delay(0.1);
			return $(config.id);
		}
	}
);