var DIALOG = new Class({
	initialize: function() {
		var _self = this;
		this.dialog = null;
		this.dialogID = 'dialog';
		this.dialogFx = null;
		this.dialogFxDuration = 300;
		this.dialogOpacity = 0.9
		
		var body = document.getElementsByTagName('body')[0];
		
		this.dialog = new Element('div', {'id':this.dialogID}).setStyles({
			'background-color':'#000',
			'display':'none',
			'left':0,
			'opacity':0,
			'position':'absolute',
			'top':0,
			'z-index':50
		});
		
		body.appendChild(this.dialog);
		this.resize();
	},
	
	getDimensions: function() {
		var size = new Object();
		size.scrollX = (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft);
		size.scrollY = (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);
		size.innerX = (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);
		size.innerY = (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);
		
		size.absX = size.innerX;
		size.absY = size.innerY;
		if(!Browser.Engine.gecko) this.dialog.setStyles({'height':0, 'width':0});
		size.absY = window.getScrollSize().y;
		if(size.innerY > size.absY) size.absY = size.innerY;
		else {
			if(Browser.Engine.trident5) size.absY += 30;
			else if(Browser.Engine.gecko) {
				size.absX -= 17;
				size.absY += 17;
			}
		}
		return size;
	},
	
	show: function() {
		$$('select').each(function(sel) {sel.setStyles({'opacity':0});});
		this.dialog.setStyle('display', 'block');
		this.dialogFx = new Fx.Morph(this.dialog, {duration:this.dialogFxDuration}).start({
			'opacity':this.dialogOpacity
		});
	},
	
	hide: function() {
		var _self = this;
		this.dialogFx = new Fx.Morph(this.dialog, {duration:this.dialogFxDuration}).start({
			'opacity':0
		}).chain(function() {
			_self.dialog.setStyle('display', 'none');
			$$('select').each(function(sel) {sel.setStyles({'opacity':1});});
		});
	},
	
	resize: function() {
		var size = this.getDimensions();
		this.dialog.setStyles({
			'height':size.absY,
			'width':size.absX
		});
	}
});

window.addEvent('scroll', function() {
	//dialog.resize();
});

window.addEvent('resize', function() {
	dialog.resize();
});