Object.extend(beng, {
	/**
		@class
		@name beng.WidgetDescriptor
		@description
			WidgetDescriptor dient der Beschreibung von Widgets. Die angegebenen
			Werte sind die Defaultwerte. Jede Widgetklasse braucht eine
			WidgetDescriptor-Instanz
	*/
    WidgetDescriptor : Class.create(
        /**
            @lends beng.WidgetDescriptor#
        */
        {
			wcid:			"",
			title:			"",
			description:	"",
			hasConfigDlg:	false,
			hasNotificationDlg: false,
			isSingelton:	false,
			isOnlySiteWide: false,
			isInline:		false,
			isFloatable:	true, // wird nur beachtet, wenn isInline == false
								  // isfloatable == true, d.h. display -> inline und block
								  // isfloatable == false, d.h. display -> nur block bzw. fullWidth
			isResizeable:	false,
			containers: "",	   // allowed container ("" means all)
			scope : "", // "" -> any
			keepAspectRatio:false, // seitenverhältnis beim resize beachten oder nicht
			minSize:		[100, 20], // [width, height]  -1 ist unbeschränkt
			maxSize:		[-1, -1], // [width, height]  -1 ist unbeschränkt


			/**
				@constructs
			*/
			initialize : function(wcid, data) {
				data = (data || {});

				this.wcid = wcid;
				this.title = this.wcid.split(/\./).last();

				$w("title description hasConfigDlg hasInstanceThumbnail hasNotificationDlg isSingelton isResizeable isFloatable keepAspectRatio thumbnail scope containers viewDescriptors").each(
					function(key) { this[key] = (typeof(data[key]) != "undefined" ? data[key] : this[key]); }.bind(this)
				);
			},

			getMaxSize : function(wiid) {
				return {
					'width'  : this.maxSize[0] < 0 ? Number.MAX_VALUE : this.maxSize[0],
					'height' : this.maxSize[1] < 0 ? Number.MAX_VALUE : this.maxSize[1]
				};
			},

			getMinSize : function(wiid) {
				return {
					'width'  : this.minSize[0],
					'height' : this.minSize[1]
				};
			},

			checkContainerContraint : function(container) {
				return this.containers[container];
			},

			TERM_END : null
		}
	)
});

