function WidgetManager()
{
	this.widgets = new Array();
	this.widgetsHash = {};
	this.nWidgets = 0;

	this.findWidget = function(widgetObject)
	{
		for (var i=0; i<this.widgets.length; i++){
			if (widgetObject.type == this.widgets[i].type){
				return this.widgets[i];
			}
		}
		return false;
	}

	this.findWidgetByType = function(type)
	{
		return this.widgetsHash[type];
	}

	this.registerWidget = function(widget)
	{
		this.widgetsHash[widget.type] = widget
		this.widgets.push(widget)
	}

	this.onMouseClickDouble = function(widgetObject)
	{
		var widget;
		if (widget = this.findWidget(widgetObject)){
			return widget.onMouseClickDouble(widgetObject);
		}
		return 0;
	}

	this.onChangeProperties = function(widgetObject)
	{
		var widget;
		if (widget = this.findWidget(widgetObject)){
			return widget.refresh();
		}
		return 0;
	}

	this.onCreateWidget = function(widgetType)
	{
		var widget;
		if (widget = this.findWidgetByType(widgetType))
		{
			var div = document.createElement("DIV")
	    div.setAttribute('id', 'widgetjs'+this.nWidgets)
	    div.setAttribute('outPlaceDelete', 1)
			div.setAttribute("GUID", 0);
	    div.type = widget.type
	    div.className = 'item'

			for (var key in widget.defaults){
		    div.setAttribute(key, widget.defaults[key])
			}

			if (widget.defaults['class']){
				div.className = widget.defaults['class'];
			}

			if (widget.defaults['width']){
				div.style.width = widget.defaults['width'];
			}

			if (widget.defaults['height']){
				div.style.height = widget.defaults['height'];
			}

			this.nWidgets++;
			return widget.onCreate(div);
		}
		return false;
	}

	this.setDefaults = function(widgetType, defArray)
	{
		var widget;
		if (widget = this.findWidgetByType(widgetType)){
			widget.defaults = defArray
			return true;
		}
		return false;
	}

	this.saveCode = function(widgetDiv)
	{
		var widgetModule;
		if (widgetModule = this.findWidgetByType(widgetDiv.type)){			
			return widgetModule.saveCode(widgetDiv);
		}
		return null;
	}

	this.event = function(widgetType, ev)
	{	
		var widgetModule;
		if (widgetModule = this.findWidgetByType(widgetType)){
			return widgetModule.event(ev);
		}
		return false;
	}

	return this;
}

var WidgetManager = new WidgetManager();
var widgets = WidgetManager
