function delement(callbacks)
{
	// 
	//this.elements  = elements;
	this.callbacks = callbacks;
	//
	this.elementsDraggable = new Object;
	this.elementsResizable = new Object;
	//
	//this.setElements();
}
delement.prototype = {
	addHandleResizable: function (el) {
		$(el).insertAdjacentHTML("AfterBegin",'<div id="' + el + '_footer" style="cursor: se-resize; width: 20px; height:20px; position: absolute; bottom: 0; right: 0; background: transparent url(images/icons.gif) repeat scroll -800px 0pt"></div>');
		return el + '_footer';
	},
	destroyElementDraggable: function (el) {
		this.elementsDraggable[el].destroy();
		delete this.elementsDraggable[el];
		$(el).style.cursor = "auto";
	},
	destroyElementResizable: function (el) {
		this.elementsResizable[el].destroy();
		delete this.elementsResizable[el];
		$(el + "_footer").outerHTML = "";
	},
	setElement: function (el) {
		// set draggable
		if (typeof(this.elementsDraggable[el]) != "undefined") {
			this.destroyElementDraggable(el);
		}
		else {
			this.setElementDraggable(el);
		}
		// set resizable
		if (typeof(this.elementsResizable[el]) != "undefined") {
			this.destroyElementResizable(el);
		}
		else {
			this.setElementResizable(el);;
		}
	},
	setElementDraggable: function (el) {			
		$(el).style.cursor = "move";
		if (this.callbacks && this.callbacks.drag) {
			this.elementsDraggable[el] = new Draggable(el, {onEnd: this.callbacks.drag});
		} 
		else {
			this.elementsDraggable[el] = new Draggable(el);
		}
	},
	setElementResizable: function (el) {			
		var handleName = this.addHandleResizable(el);
		if (this.callbacks && this.callbacks.resize) {
			this.elementsResizable[el] = new Resizable(el, {onEnd: this.callbacks.resize, handle: handleName});
		} 
		else {
			this.elementsResizable[el] = new Resizable(el, {handle: handleName});
		}
	},
	setElements: function () {
		var len = this.elements.length;
		for (var i=0;i<len;i++) {
			if ($(this.elements[i])) {
				this.setElement(this.elements[i]);
			}
		}
	}
}
