/*global jQuery */

/**
 * Depends on jQuery
 * 
 * @param node
 * @return
 */
function UtMessager(params) {
    if (!params.node) {
        throw new Error("Parameter required: node");
    }
    
    this.node = jQuery(params.node);
}


UtMessager.prototype.node           = null;
UtMessager.prototype.class_idle     = 'idle';
UtMessager.prototype.class_debug    = 'debug';
UtMessager.prototype.class_active   = 'active';
UtMessager.prototype.class_error    = 'error';

UtMessager.prototype.current_class  = null;


UtMessager.prototype.clear = function() {
    this.clearClass();
    this.setMessage("");
};


UtMessager.prototype.setDefault = function(msg) {
    this.clearClass();
    this.setMessage(msg);
};


UtMessager.prototype.setDebug = function(msg) {
    this.setClass(this.class_debug);
    this.setMessage(msg);
};


UtMessager.prototype.setIdle = function(msg) {
    this.setClass(this.class_idle);
    this.setMessage(msg);
};


UtMessager.prototype.setActive = function(msg) {
    this.setClass(this.class_active);
    this.setMessage(msg);
};


UtMessager.prototype.setError = function(msg) {
    this.setClass(this.class_error);
    this.setMessage(msg);
};


UtMessager.prototype.setMessage = function(msg) {
    this.node.text(msg);
};


UtMessager.prototype.clearClass = function() {
    if (this.current_class) {
        this.node.removeClass(this.current_class);
    }

    this.current_class = null;
};


UtMessager.prototype.setClass = function(value) {
    this.clearClass();
    this.node.addClass(value);
    this.current_class = value;
};

