dojo.provide("epages.widget.Elementlistitem");
dojo.require("epages.widget");
dojo.require("dijit._Container");

dojo.declare("epages.widget.Elementlistitem", [epages.widget.LocalizedWidget, dijit._Contained],  {
		/**
		 * public properties
		 */
		templateString:     '<div class="${itemClassName}">${title}</div>',
		itemClassName:      'ElementListItem',
		hoverClassName:     'Hover',
		selectClassName:    'Selected',
		isSelected:         false,
		objectId:           '',
		title:              'item',
		parent:             undefined,
		translationName:    dojo.moduleUrl('epages','translation'),
		selectOn:           'onclick',
		disabled:           false,
		/**
		 * public methods
		 */
		postCreate: function() {
			epages.widget.Elementlistitem.superclass.postCreate.apply(this, arguments);

			// connect events
			this.connect(this.domNode, "onmouseover", '_onMouseOver');
			this.connect(this.domNode, "onmouseout",  '_onMouseOut');
			this.connect(this.domNode, this.selectOn, '_onClick');
			this.parent = this.getParent();
		},

		select: function () {
			this.isSelected = true;
			dojo.addClass(this.domNode, this.selectClassName);
		},

		deselect: function () {
			this.isSelected = false;
			dojo.removeClass(this.domNode, this.selectClassName);
		},

		/**
		 * private methods
		 */
		_onMouseOver: function() {
			dojo.addClass(this.domNode, this.hoverClassName);
		},

		_onMouseOut: function() {
			dojo.removeClass(this.domNode, this.hoverClassName);
		},

		_onClick: function(evt) {
			if (this.getParent()) {
				this.getParent().doSelectItem(this, this.isSelected, evt);
			} else {
				this.isSelected ? this.deselect() : this.select();
				dojo.publish(this.id+'/onClick', [{ widget: this, node: this.domNode, objectId: this.objectId }]);
			}
		}
	}
);