
var mWindow = new Class({
	options: {
		width : 200,
//		height : 200,
		top : 0,
		left : 0,
		form: true,
		formId: 'wnd_from',
		formAction: '',
		formMethod: 'post',
		actionValue: '',
		submitCaption : 'Да',
		cancelCaption : 'Отмена',
		//cancelButton : false,
		//okHandle : null,
		//cancelHandle : null,
		title : '',
		content : '',
		id : ''
	},
	
	handle : null,
	
	overlay : null,
	
	drag : null,
	
	dragParams : {},

	initialize: function(options){
		this.setOptions(options);
	},
	
	_create : function(id){
		var target = $(id);
		if (!target)
			return;

		// основной блок окна
		this.handle = new Element('div', {
			'class':'mwWindow',
			'id' : this.options.id,
			'styles' : {
				'width':this.options.width+'px',
				'left':this.options.left,
				'top':this.options.top + target.getScroll().y
			}
		});
		
//		this.handle.addEvent('mousedown', this.up.bind(this));
		// формируем внешиний вид окна
		var border1 = new Element('div', {'class':'mwBorder1'});
		var border2 = new Element('div', {'class':'mwBorder2'});
		var border3 = new Element('div', {'class':'mwBorder3'});
		var border4 = new Element('div', {'class':'mwBorder4'});
		var border5 = new Element('div', {'class':'mwBorder5'});
		var border6 = new Element('div', {'class':'mwBorder6'});
		var border7 = new Element('div', {'class':'mwBorder7'});
		var border8 = new Element('div', {'class':'mwBorder8'});

		head = new Element('div', {'class':'mwHead'});
		var close = new Element('div', {'class':'mwClose'});
		close.addEvent('click', this.close.bind(this));
		var title = new Element('div', {'class':'mwTitle'});
		title.set('html',this.options.title);
		head.adopt([close, title]);
		
		var content = new Element('div', {'class':'mwContent'});

		if (this.options.form)
		{
			var form = new Element('form', {'id':this.options.formId, 'action':this.options.formAction, 'method':this.options.formMethod, 'enctype':'multipart/form-data'});
			form.injectInside(content);
			form.set('html',this.options.content);
			
			var btnContainer = new Element('div', {'class':'wmBtnContainer'}); 
			var action = new Element('input', {'type':'hidden', 'name':'action', 'value':this.options.actionValue});
			var submitBtn = new Element('input', {'type':'submit', 'class':'wmButton', 'value':this.options.submitCaption});
			var cancelBtn = new Element('input', {'type':'button', 'class':'wmButton', 'value':this.options.cancelCaption});
			cancelBtn.addEvent('click', this.close.bind(this));
			
			btnContainer.adopt([action, submitBtn, cancelBtn]);
			btnContainer.injectInside(form);
		}
		else
		{
			content.set('html',this.options.content);
			var btnContainer = new Element('div', {'class':'wmBtnContainer'}); 
			var submitBtn = new Element('input', {'type':'button', 'class':'wmButton', 'value':this.options.submitCaption});
			submitBtn.addEvent('click', this.close.bind(this));
			submitBtn.injectInside(btnContainer);
			btnContainer.injectInside(content);
		}
		
		border5.injectInside(this.handle);
		border6.injectInside(border5);
		border1.injectInside(border6);
		border1.adopt([head]);		
		border4.injectInside(this.handle);
		border2.injectInside(border4);
		content.injectInside(border2); 
		border8.injectInside(this.handle);
		border7.injectInside(border8);
		border3.injectInside(border7);
		
			
		this.overlay = new Element('div', {'class':'mwWindowOverlay'});
		this.overlay.injectInside(target);
				
		this.handle.injectInside(target);
		
		this.drag = new Drag.Move(this.handle, {
		    snap: 0,
		    handle: head,
			container: target,
		    onSnap: function(el){
		        el.addClass('wmOnDragging');
		    },
		    onComplete: function(el){
		        el.removeClass('wmOnDragging');
		    }
		});
	},
	
	_destroy : function(){
		if ($type(this.handle) == 'element'){
			this.handle.destroy();
			this.overlay.destroy();
		}
		this.handle = null;
		this.overlay = null;
	},
	
	open : function(elem){
		if (!this.handle)
			this._create(elem);
	},
	
	close : function(){
		this._destroy();
	},

	Implements : [Options, Events]
});
