dojo.provide("epages.widget.Message");
dojo.require("epages.widget");
dojo.require("epages.html");
dojo.require('epages.loaderani');

dojo.declare("epages.widget.Message",
	[dijit._Widget,dijit._Templated],
	{
		/**
		 * public properties
		 */
		headline: "",
		message: "",
		sizeClass: "Small",
		typeClass: "Info",
		borderClass: "",
		loderAniNode : undefined,

		/**
		 * dojo widget properties
		 */
		templatePath    : dojo.moduleUrl('epages.widget', "templates/Message.html"),

		show: function() {
			this.domNode.style.display="block";
		},

		hide: function() {
			this.domNode.style.display="none";
		},

		postCreate: function() {
			this.inherited("postCreate", arguments);
			this.setupContent({
				headline: this.headline,
				message: this.message,
				sizeClass: this.sizeClass,
				typeClass: this.typeClass,
				borderClass: this.borderClass
			});
		},

		setupContent: function(/*Object*/opt) {
		// summary: set up new content / change content
		// opt: {
		//        headline - sting
		//        message - string
		//        sizeClass - string: Small, Medium, Large
		//        typeClass - string: Error, Warning, Notification, Question, Tip, Confirmation
		//        borderClass - string -> your css class
		//      }

			if(opt.headline !== undefined && opt.headline!="") {
				this.headline=opt.headline;
				this.headlineNode.innerHTML=opt.headline;
				this.headlineNode.style.display="";
			} else
				this.headlineNode.style.display="none";

			if(opt.message !== undefined && opt.message!="") {
				this.message=opt.message;
				this.messageNode.innerHTML=opt.message;
				this.messageNode.style.display="";
				dojo.parser.parse(this.messageNode);
			} else
				this.messageNode.style.display="none";

			if(opt.sizeClass !== undefined) {
				epages.html.replaceClass(this.domNode, opt.sizeClass, this.sizeClass);
				this.sizeClass = opt.sizeClass;
			}
			if(opt.typeClass !== undefined) {
				epages.html.replaceClass(this.domNode, opt.typeClass, this.typeClass);
				this.typeClass = opt.typeClass;

				if(this.loderAniNode !== undefined && opt.typeClass != "Loader") {
					epages.loaderani.destroy(this.loderAniNode);
				}
				if(opt.typeClass == "Loader") {
					var lani_options = {
						top: 14,
						left: 14,
						width: 24,
						height: 24
					}
					this.domNode.style.position="relative";
					this.loderAniNode = epages.loaderani.create(lani_options, this.domNode);
				}
			}

			if(opt.borderClass !== undefined) {
				epages.html.replaceClass(this.domNode, opt.borderClass, this.borderClass);
				this.borderClass = opt.borderClass;
			}
		}
	}
);