 lang_zavrit_okno = 'Zavřít okno';
 lang_max_min_okno = 'Maximalizovat / Minimalizovat okno';
 lang_confirm_close = 'Opravdu chcete zavřít okno? Změny nebudou uloženy!';
 
 Domwin = new Class({
	Implements: [Options, Events],
	flagPath: '/css/icons/lang/',
	start_z_index: 1110,
	default_options:{
		defined_lang: Array('cz'),
		width		: '70px',
		height		: '60px',
		scrollbars	: true,
		modal		: true,
		id			: 'domwin',
		title		: 'Title okna',
		languages	: true,
		type		: 'AJAX',
		url			: '',
		closeConfirm: true,
		max_minBtn	: true
	},
	options:{
	},
	
	setSpecOptions: function(id){
		var temp_option = $merge.run([this.default_options].extend(arguments));
		this.options[temp_option.id] = temp_option;
		if (!this.addEvent) return this;
		for (var option in this.options[temp_option.id]){
			if ($type(this.options[temp_option.id][option]) != 'function' || !(/^on[A-Z]/).test(option)) continue;
			this.addEvent(option, this.options[temp_option.id][option]);
			delete this.options[temp_option.id][option];
		}
		return this;
	},
	
	newWindow: function(options){
		var id = options.id;
		
		this.setSpecOptions(options);
		this.options[id].width = this.options[id].sizes[0];
		this.options[id].height = this.options[id].sizes[1];
		
		this.start_z_index += 2;
	
		var div = new Element('div',{'class':'CB_Window','id':this.options[id].id})
			.inject($('addon'))
			.setStyles({'opacity':0,"height": "92px", "width":"120px","z-index":this.start_z_index})
			.setHTML('<table style="width:100%; height:100%" height="100%" cellpadding="0" cellspacing="0" ><tbody><tr class="CB_Header" style="height: 26px;"><td class="CB_Top"/><div class="CB_title">Nahrávám...</div></tr><tr class="CB_Body"><td class="CB_Content" valign="top" align="left" style="height:100%"><div class="CB_ImgContainer" style="height:100%"><div class="CB_Preloader"></div></div></td></tr><tr class="CB_Footer" style="height: 26px;"><td class="CB_Btm"/></tr></tbody></table>');	
		
		
		new Element('div',{'class':'CB_CloseWindow',title:lang_zavrit_okno})
			.inject(div)
			.addEvent('click',(function(e){
				var target = new Event(e).target, win;
				win = target.getParent('div');
				
				if (this.options[id].closeConfirm == true){
					if (confirm(lang_confirm_close)){
						if (this.options[id].modal){
							win.getPrevious().dispose();
						}
						win.dispose();
					}
				} else {
					if (this.options[id].modal){
						win.getPrevious().dispose();
					}
					win.dispose();
				}
			}).bind(this));
			
		if (this.options[id].max_minBtn == true)
			new Element('div',{'class':'CB_MaxWindow',title:lang_max_min_okno}).inject(div).addEvent('click',this.maxWindow.bind(this,id));
		
		if (this.options[id].languages){
			var lang_div = new Element('div')
				.inject(div)
				.setStyles({
					position:'absolute',
					top:'30px',
					right:'-20px'
				});
			this.options[id].defined_lang.each(function(item){
				new Element('img',{src:this.flagPath+item+'.gif',style:'margin:3px; display:block'})
					.inject(lang_div)
					//.setHTML(item)
					.addEvent('click',(function(){
						this.div.getElement('.CB_ImgContainer').getElements('.languages').setStyle('display','none');
						this.div.getElement('.CB_ImgContainer').getElements('.languages.lang_' + item).setStyle('display','block');
					}).bind(this));
			},this);
		}
		
		new Drag(div,{handle:div.getElement('.CB_title')}); 

		if (this.options[id].scrollbars)
			div.getElement('.CB_ImgContainer').setStyle('overflow','auto');
		else
			div.getElement('.CB_ImgContainer').setStyle('overflow','hidden');
		this.goCenter(id);
		
		if (this.options[id].modal){
			var v = window.getScrollSize();
			new Element('div')
				.inject(div,'before')
				.setStyles({
					position:'absolute',
					top:'0px',
					left:'0px',
					width:v.x,
					height:v.y,
					background:'#000',
					opacity:0.3,
					"z-index":this.start_z_index -1
				});
		}
		
		div.fade(1);
		
		if (this.options[id].type == 'AJAX' && this.options[id].href != ''){
			this.loadAjax(id);
		}
	},
	loadAjax: function(id){
		var parent_object = $(this.options[id].id);
		var div = parent_object.getElement('.CB_ImgContainer');
			div.setStyle('display','none')
		new Request.HTML({
			url: this.options[id].url,
			update: div,
			onComplete: (function(){
				parent_object.getElement('.CB_title').setHTML(this.options[id].title);
				this.setSize(id);
				if (this.options[id].languages){
					parent_object.getElement('.CB_ImgContainer').getElements('.languages').setStyle('display','none');
					parent_object.getElement('.CB_ImgContainer').getElements('.languages.lang_cz').setStyle('display','block');
				}
			}).bind(this)
		}).post();
	},
	restoreWindow:function(id){
		var el = $(id);
		el.getElement('.CB_MaxWindow')
			.removeEvents('click')
			.addEvent('click',this.maxWindow.bind(this,id));
		el.getElement('.CB_ImgContainer').setStyle('display','none');
		var v = window.getSize(id);
		var myEffect = new Fx.Morph(el, {
			duration: 'long', 
			transition: Fx.Transitions.Sine.easeOut,
			onComplete:(function(){
				el.getElement('table').setStyles({
					'height': el.getStyle('height').toInt()
				})
				el.getElement('.CB_ImgContainer').setStyles({
					'height': this.options[id].height - 34,
					'display':'block'
				});
			}).bind(this)
		});
		left_s = el.getStyle('left')
		top_s = el.getStyle('top')
		myEffect.start({
		    'height': [el.getStyle('height'), this.options[id].height], 
		    'width': [el.getStyle('width'), this.options[id].width], 
			'left':[left_s,v.x/2 - this.options[id].width/2],
			'top':[top_s,v.y/2 - this.options[id].height/2]
		});
	},
	
	maxWindow:function(id){
		el = $(id);
		el.getElement('.CB_MaxWindow')
			.removeEvents('click')
			.addEvent('click',this.restoreWindow.bind(this,id));
	
		el.getElement('table').setStyle('height','100%');
		var v = window.getScrollSize();
		left_s = el.getStyle('left');
		top_s = el.getStyle('top');
		el.getElement('.CB_ImgContainer').setStyle('display','none');
		var myEffect = new Fx.Morph(el, {
			duration: 'long', 
			transition: Fx.Transitions.Sine.easeOut,
			onComplete: (function(){
				el.getElement('.CB_ImgContainer').setStyles({
					'height': el.height - 34,
					'display':'block'
				});
			}).bind(this)
		});
		myEffect.start({
		    'height': [this.options[id].height,v.y], //Morphs the 'height' style from 10px to 100px.
		    'width': [this.options[id].width,v.x-20],  //Morphs the 'width' style from 900px to 300px.
			'left':[left_s,0],
			'top':[top_s,0]
		});
	},
	
	goCenter:function(id){
		var div = $(id);
		var v = window.getSize(),x,y;
		x = (v.x/2 - 40);
		y = (v.y/2 - 30) + window.getScroll().y;
		div.setStyles({
			left: (x>10)?x:10,
			top	: (y>10)?y:10
		});
	},
	
	setSize:function(id){
		var el = $(this.options[id].id),x,y;
		var v = window.getSize();
		var myEffect = new Fx.Morph(el, {
			duration: 'long', 
			transition: Fx.Transitions.Sine.easeOut,
			onComplete:(function(){
				el.getElement('table').setStyles({
					'height': el.getStyle('height').toInt()
				})
				el.getElement('.CB_ImgContainer').setStyles({
					'height': this.options[id].height - 34,
					'display':'block'
				});
			}).bind(this)
		});
		left_s = el.getStyle('left');
		top_s = el.getStyle('top').toInt();
		x = v.x/2 - this.options[id].width/2;
		y = (v.y/2 - this.options[id].height/2) + window.getScroll().y.toInt();
		myEffect.start({
		    'height': [60, this.options[id].height], 
		    'width': [70, this.options[id].width], 
			'left':[left_s,(x>10)?x:10],
			'top':[top_s,(y>10)?y:10]
		});
	},
	
	closeWindow:function(id){
		var win = $(id);
		if (win){
			if (this.options[id].modal)
				win.getPrevious().dispose();
			win.dispose();
		} else
			alert('ID: "'+id+'" neexistuje');
	},
	
	loadHTML:function(id,div_id){
		var window = $(id);
		if (window) {
			window.getElement('.CB_ImgContainer').setHTML($(div_id).getHTML()).setStyle('display','none');
			window.getElement('.CB_title').setHTML(this.options[id].title);
			this.setSize();
		} else
			alert('ID:'+id+' neexistuje');
	}
	
 });
 domwin = new Domwin;
