//Author: Louis B

var Dialog=new Class({
	Implements:[Options],
	options:{
		title:'Dialog',
		titleBar_class:'titleBar',
		resizer_class:'resizer',
		content_class:'content',
		dialog_class:'dialog',
		close_class:'close',
		closable:true,
		content:'<img src="js/dialog/spinner.gif" style="position:absolute;top: 40%;left: 45%" />',
		width:300,
		height:300,
		limits:{x:[300,750],y:[250,750]},
		droppable:false,
		closefunc:null
	},
	initialize:function(options){
		this.setOptions(options);
		this.dialog=new Element('div',{
			'class':this.options.dialog_class,
			styles:{
				width:this.options.width,
				height:this.options.height,
				'margin-top':this.options.my,
				'margin-left':this.options.mx
			}
		}).inject($(document.body));
		this.titlebar=new Element('div',{
			'class':this.options.titleBar_class
		}).inject(this.dialog);
		this.title=new Element('font',{
			html:this.options.title
		}).inject(this.titlebar);
		this.closeButton=new Element('b',{
			'class':this.options.close_class,
			html:'X',
			events:{'click': this.close.bind(this)}
		});
		if(this.options.closable){this.closeButton.inject(this.titlebar)};
		this.content=new Element('div',{
			'class':this.options.content_class,
			html:this.options.content
		}).inject(this.dialog);
		this.resizer=new Element('div',{
			'class':this.options.resizer_class
		}).inject(this.dialog);
		// Dialog behavior
		this.dialog.makeResizable({
			handle:this.resizer,
			limit:this.options.limits
		});
		this.dialog.makeDraggable({handle:this.titlebar});
		this.loadin(this.options.url, this.options.title);
	},
	loadin:function(lurl,ltitle){
		new Request.HTML({
			onSuccess:(function(){
			if(lnc){
			$each(this.content.getElements('p'),function(el){google.language.translate(el.get('html'),'en',lnc,function(r){el.set('html',r.translation);});});
			$each(this.content.getElements('ol'),function(el){google.language.translate(el.get('html'),'en',lnc,function(r){el.set('html',r.translation);});});
			$each(this.content.getElements('ul'),function(el){google.language.translate(el.get('html'),'en',lnc,function(r){if(el.get('id')!='videoLinks'&&el.get('id')!='galleryLinks')el.set('html',r.translation);});});
			$each(this.content.getElements('h2'),function(el){google.language.translate(el.get('html'),'en',lnc,function(r){el.set('html',r.translation);});});
			$each(this.content.getElements('h5'),function(el){google.language.translate(el.get('html'),'en',lnc,function(r){el.set('html',r.translation);});});
			$each(this.content.getElements('a'),function(el){google.language.translate(el.get('html'),'en',lnc,function(r){if(el.get('id')!='player')el.set('html',r.translation);});});
			$each($$('dt'),function(el){google.language.translate(el.get('html'),'en',lnc,function(r){el.set('html',r.translation);});});
			$each($$('font').filter('#t'),function(el){google.language.translate(el.get('html'),'en',lnc,function(r){el.set('html',r.translation);});});
			}}).bind(this),
			update:this.content,
			url:lurl,
			useSpinner: true
		}).send();
		this.title.set('text', ltitle);
	},
	setSize:function(x,y){this.dialog.setStyles({width:x,height:y});},
	close:function(){
		if(this.options.closefunc!=null)this.options.closefunc();
		this.closeButton.removeEvents();
		$(document.body).removeEvent('mousedown',this.focusEvent);
		this.dialog.get('tween',{property:'opacity',onComplete:function(el){el.destroy();}}).start(0);
	}
});
