CMS.Window = CMS.Widget.extend({
	caption: "",
	resize: true,
	shade: true,
	width: 300,
	height: 500,

	_bar: null,
	_title: null,
	_close: null,
	_body: null,
	_resize: null,
	
	_shade: null,
		
	construct: function( caption, resize, shade ) {
		arguments.callee.$.call(this);
		
		this.caption = caption;
		if (resize != undefined) {this.resize = resize;}
		if (shade != undefined) {this.shade = shade;}
		
		this._bar = document.createElement("div");
		this._title = document.createElement("div");
		this._close = document.createElement("div");
		this._body = document.createElement("div");
		if (this.resize) {this._resize = document.createElement("div");}
		
		this.get().appendChild(this._bar);
		this.get().appendChild(this._body);
		if (this.resize) {this.get().appendChild(this._resize);}
		
		this._bar.appendChild(this._title);
		this._bar.appendChild(this._close);
		
		this._title.appendChild(document.createTextNode(this.caption));
		
		
		addClass(this.get(), 'CMS_Explorer');
		addClass(this._title, 'Title');
		addClass(this._body, 'Body');
		addClass(this._resize, 'Resize');
		
		this.enableDrag();
		if (this.resize) {this.enableResize();}
	},
	
	show: function() {
		this.get().style.width = this.width + "px";
		this.get().style.height = this.height + "px";
		if (this.shade) {(this._shade = new CMS.Shade()).show();}
		document.body.appendChild(this.get());		
	},
	
	hide: function() {
		document.body.removeChild(this.get());
		
		if (this._shade) {this._shade.hide();}
	},
	
	addElement: function(ele) {
		this._body.appendChild(ele);
	},
	
	enableDrag: function() {
		var _this = this;
		
		xEnableDrag(this._title,
			function(ele, mouseX, mouseY) {},
			function(ele, mouseDX, mouseDY) {
				xLeft(_this.get(), xLeft(_this.get()) + mouseDX );
				xTop(_this.get(), xTop(_this.get()) + mouseDY );
			},
			function(ele, mouseX, mouseY) {});
	},
	
	enableResize: function() {
		var _this = this;
		
		xEnableDrag(this._resize,
			function(ele, mouseX, mouseY) {},
			function(ele, mouseDX, mouseDY) {
				xWidth(_this.get(), xWidth(_this.get()) + mouseDX );
				xHeight(_this.get(), xHeight(_this.get()) + mouseDY );
			},
			function(ele, mouseX, mouseY) {});
	}
});
