/*
 ref:		Df.Modal
 type:		Static Class
*/
Df.Modal = {
	
	_pars: {
		className: 'modal',
		iframe: true,
		animate: false,
		clickClose: true
	},
	
	_element: false,
	_on: false,
	_animate: false,
	
	setPars: function(pars) {
		Object.extend(Df.Modal._pars, pars)
		return Df.Modal
	},
	
	getUiInstance: function() {
		if(!Df.Modal._element){
			Df.Modal._create()	
		}
		return Df.Modal._element
	},
	
	getElement: function() {
		if(!Df.Modal._element){
			Df.Modal._create()	
		}
		return Df.Modal._element.getElement()
	},
	
	show: function(){
		if(!Df.Modal._element){
			Df.Modal._create()	
		}
		
		Df.Modal._element.show()
		
		return Df.Modal
	},
	
	hide: function(){
		Df.Modal._element.hide()
		return Df.Modal
	},
	
	remove_click_close: function() {
		Df.Modal._element.getElement().stopObserving('click', Df.Modal.hide);
		Df.Modal._pars.clickClose = false
	},

	add_click_close: function() {
		Df.Modal._element.getElement().observe('click', Df.Modal.hide);
		Df.Modal._pars.clickClose = true
	},
	
	_create: function() {
		
		var pars = {}
		if(Df.Modal._pars.animate){
			pars.animate = Df.Modal._pars.animate
		}
		if(Df.Modal._pars.iframe){
			pars.iframe = true
		}
		
		Df.Modal._element = new Df.Ui(Df.e('div', document.body, {className: Df.Modal._pars.className})).set(pars);
		
		if(Df.Modal._pars.clickClose){
			Df.Modal._element.getElement().observe('click', Df.Modal.hide);
		}
		
		if((Df.browser()).ie6 && Df.Modal._pars.iframe){
			Event.observe(window, 'resize', Df.Modal._sizeIframe);
		}
		
		return Df.Modal
	},
	
	_sizeIframe: function() {
		Df.Modal._element.iframe.height =document.viewport.getHeight()
		Df.Modal._element.iframe.width = document.viewport.getWidth()
	}
}

/*
 ref:		Df.Dialog
 extends:	Df.Ui
 returns:	Df.Dialog
 type:		Class
*/
Df.Dialog = Class.create(Df.Ui, {
	
	initialize: function($super, hash){
		$super(hash.element)
		
		this.setPars({
			center: true,
			drag: true
		});
		
		this.content = $(hash.content)
	},
	
	set: function($super, pars){
		$super(pars)
		
		if(this.pars.center) {
			Event.observe(window,'resize', function(e){
				this.getElement().center()
			}.bind(this));
		}
		return this;
	},
	
	getContent: function(){
		return this.content
	},
	
	setContent: function(content){
		return this.getContent().update(content)
	}
});

/*
 ref:		Df.Lightbox
 type:		Static Class
*/
Df.Lightbox = {
	
	_dialog: null,
	
	createDialog: function(dialog){
		Df.Lightbox._dialog = dialog
		Df.Modal.getUiInstance().element.observe(':hide',function(e){
			this.hide()
		}.bind(Df.Lightbox._dialog));
		
		return Df.Lightbox	
	},
	
	getDialog: function(){
		return Df.Lightbox._dialog	
	},
	
	getContent: function(){
		return Df.Lightbox._dialog.getContent()	
	},
	
	setContent: function(content){
		Df.Lightbox.getContent().update(content)
		return Df.Lightbox	
	},
	
	show: function(){
		Df.Modal.show()
		Df.Lightbox._dialog.show()
		if(Df.Lightbox._dialog.pars.center) {
			Df.Lightbox._dialog.getElement().center()
		}
		return Df.Lightbox
	},
	
	hide: function(){
		Df.Modal.hide()
		Df.Lightbox._dialog.hide()
		return Df.Lightbox
	}
}