
/**************************************************************

	Script		: overlay
	Version		: 1.2
	Authors		: Samuel birch
	Desc		: Covers the window with a semi-transparent layer.
	Licence		: Open Source MIT Licence

**************************************************************/
var overlay = new Class({

	getOptions: function(){
		return {
			colour: '#000',
			opacity: 0.7,
			zIndex: 3,
			container: document.body,
			onClick: $empty
		};
	},

	initialize: function(options){
		this.setOptions(this.getOptions(), options);
		
		this.options.container = $(this.options.container);
		
		this.container = new Element('div').setProperty('id', 'OverlayContainer').setStyles({
			position: 'absolute',
			left: '0px',
			top: '0px',
			width: '100%',			
			zIndex: this.options.zIndex
		}).injectInside(this.options.container);
		
		this.iframe = new Element('iframe').setProperties({
			'id': 'OverlayIframe',
			'name': 'OverlayIframe',
			'src': 'javascript:void(0);',
			'frameborder': 0,
			'scrolling': 'no'
		}).setStyles({
			'position': 'absolute',
			'top': 0,
			'left': 0,
			'width': '100%',
			'height': '100%',
			'filter': 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)',
			'opacity': 0,
			'zIndex': 1
		}).injectInside(this.container);
		
		this.overlay = new Element('div').setProperty('id', 'Overlay').setStyles({
			position: 'absolute',
			left: '0px',
			top: '0px',
			width: '100%',
			height: '100%',
			zIndex: 2,
			backgroundColor: this.options.colour
		}).injectInside(this.container);
		
		if(this.options._onClick){
			this.container.addEvent('click', function(){
				this.options._onClick.call(this)
			}.bind(this));
		}
		
		//this.fade = new Fx.Tween(this.container).set('opacity', 0);
		this.container.fade('hide');
		this.position();
		
		window.addEvent('resize', this.position.bind(this));
	},
	
	setOnClick: function(func){
		this.container.addEvent('click', func);
	},
	
	position: function(){ 
		if(this.options.container == document.body)
		{		
			var h = window.getScrollHeight() + 'px';
			this.container.setStyles({top: '0px', height: h});
			
		}else{ 
			var myCoords = this.options.container.getCoordinates(); 
			this.container.setStyles({
				top: myCoords.top+'px', 
				height: myCoords.height+'px', 
				left: myCoords.left+'px', 
				width: myCoords.width+'px'
			}); 
		} 
	},
	
	show: function(){
		hideSB();
		hideFL();
		//this.fade.start(0,this.options.opacity);
		this.container.fade(this.options.opacity);
	},
	
	hide: function(){
		//this.fade.start(this.options.opacity,0);
		this.container.fade('out');
		showSB();
		showFL();
	}
	
});
overlay.implement(new Options);

function showSB()
{
	var s = document.getElementsByTagName("select");
	for (i = 0; i != s.length; i++) {s[i].style.visibility = "visible";}
}

function hideSB()
{
	var s = document.getElementsByTagName("select");
	for (i = 0; i != s.length; i++) {s[i].style.visibility = "hidden";}
}

function showFL()
{
	var fO = document.getElementsByTagName("object");
	for (i = 0; i < fO.length; i++) {fO[i].style.visibility = "visible";}
	var fE = document.getElementsByTagName("embed");
	for (i = 0; i < fE.length; i++) {fE[i].style.visibility = "visible";}
}

function hideFL()
{
	var fO = document.getElementsByTagName("object");
	for (i = 0; i < fO.length; i++) {fO[i].style.visibility = "hidden";}
	var fE = document.getElementsByTagName("embed");
	for (i = 0; i < fE.length; i++) {fE[i].style.visibility = "hidden";}
}

/*************************************************************/

