dojo.provide("epages.widget.InfoText");
dojo.require("epages.widget");
dojo.require('epages.format');

dojo.declare("epages.widget.InfoText",
	[dijit._Widget],
	{
		/**
		 * public properties
		 */
		readMoreText  : "",							// read more link text
		length        : "",							// number of chars to be displayed as widget param

		/**
		 * nodes
		 */
		 readMoreNode : undefined,

		/**
		 * private properties
		 */
		_textContent   : undefined,			// original text content
		_htmlContent   : undefined,			// original html Content
		_DEFAULT_LENGTH: 130,						// max number of chars to be displayed

		/**
		 * widget life cycle
		 */
		postCreate: function() {
			var length = parseInt(this.length) || this._DEFAULT_LENGTH;

			// save original text content
			this._htmlContent = this.domNode.innerHTML;
			this._textContent = (this.domNode.textContent) ? this.domNode.textContent : this.domNode.innerText;
			this.domNode.className = "InfoText";
			if(this._textContent.length - Math.round(length / 4) < length) {
				// we don't need the "read more" link if there are only some chars about to be sliced
				this.expand();
			}else {
				this.domNode.innerHTML = epages.format.slice(this._textContent, length, false)+"<br />";
				this.readMoreNode = document.createElement("A");
				this.readMoreNode.innerHTML = this.readMoreText;
				this.readMoreNode.className="NormalFontWeight";
				this.domNode.appendChild(this.readMoreNode);

				this.connect(this.readMoreNode, "click" , "expand");
			}
		},

		expand: function() {
		//summary: show the complete text
			this.domNode.innerHTML = this._htmlContent;
		}
});