/**/
//falla tu personalmente.

  var BuilderMsg = Class.create({
    initialize: function(params) {
        this.msgToPrint = params.msgToPrint//.msg ? params.msgToPrint.msg : params.msgToPrint;
        this.containerFeedBack = params.containerFeedback;
        this.containerMsg = params.containerMsg;
        this.forWhat = params.forWhat || "flash"
        this.left = params.left
        this.containerMsg.style.width = "auto"
        this.top = params.top
        this.reload = params.reloadAfterClickBtnClose
        this.location = params.location
        this.classBtnClicked = params.classBtnClicked //|| "genericBtn"
    },
    build: function(){
        if(this.forWhat == "fromFlash" || this.forWhat == "notification"){
            this.containerMsg.update(
                this.getHtmlForNotificationFlash()
            )
        }else{
            if( this.containerMsg.childElements().size() > 10 ) //se contiene + di 10 notifiche svuota..
                this.containerMsg.update('')
            this.containerMsg.insert({
                bottom: this.getHtmlForJavascriptNotification()
            })
        }
        this.bind();
    },
    bind: function(){ //SOLO PER CLOSE
        if($$('.'+this.classBtnClicked+'')){
            var i =0;
            while($$('.'+this.classBtnClicked+'')[i]){
                Event.observe($$('.'+this.classBtnClicked+'')[i],'click', this.closeBtnClicked.bindAsEventListener(this));
                i++;
            }
        }
    },
    closeBtnClicked: function(){
        this.containerMsg.style.width = 0
        this.containerMsg.update("");
        if(this.reload)
            if(!this.location)
                window.location.reload()
            else
                window.location = this.location;
    },
    getHtmlForNotificationFlash: function(){
        var html = "";
        var object = null;
        var internalObject = null;
        for(object in this.msgToPrint){
            if(object != "house_room_updated"){
                if(this.msgToPrint[object]){
                    if(typeof  this.msgToPrint[object] == "string" ){
                        if(this.msgToPrint[object] != ""){
                                this.msgToPrint[object] = this.sobstituteString(this.msgToPrint[object],"tagA", "<a ")
                                this.msgToPrint[object] = this.sobstituteString(this.msgToPrint[object],"closeTagA", "</a>")
                                this.msgToPrint[object] = this.sobstituteString(this.msgToPrint[object],"closeTag", ">")
                                this.msgToPrint[object] = this.sobstituteString(this.msgToPrint[object],"tagSpan", "<span ")
                                this.msgToPrint[object] = this.sobstituteString(this.msgToPrint[object],"tagImg", "<img ")
                                this.msgToPrint[object] = this.sobstituteString(this.msgToPrint[object],"lineFeed", "<br> ")
                                this.msgToPrint[object] = this.sobstituteString(this.msgToPrint[object],"closeSpanTag", "</span>")
                                //this.msgToPrint[object] = this.sobstituteString(this.msgToPrint[object],"pt", " punti")
                                this.msgToPrint[object] = this.sobstituteString(this.msgToPrint[object],"/'", "'")
                                html = "<div class=\"feedBackElement\">" + this.msgToPrint[object]+"</div>" + html;
                        }
                    }else{
                        for(internalObject in this.msgToPrint[object]){
                            if(typeof this.msgToPrint[object][internalObject] == "string"){
                                if(this.msgToPrint[object][internalObject] != ""){
                                    this.msgToPrint[object][internalObject] = this.sobstituteString(this.msgToPrint[object][internalObject],"tagA", "<a ")
                                    this.msgToPrint[object][internalObject] = this.sobstituteString(this.msgToPrint[object][internalObject],"closeTagA", "</a>")
                                    this.msgToPrint[object][internalObject] = this.sobstituteString(this.msgToPrint[object][internalObject],"closeTag", ">")
                                    this.msgToPrint[object][internalObject] = this.sobstituteString(this.msgToPrint[object][internalObject],"tagSpan", "<span ")
                                    this.msgToPrint[object][internalObject] = this.sobstituteString(this.msgToPrint[object][internalObject],"tagImg", "<img ")
                                    this.msgToPrint[object][internalObject] = this.sobstituteString(this.msgToPrint[object][internalObject],"closeSpanTag", "</span>")
                                    this.msgToPrint[object][internalObject] = this.sobstituteString(this.msgToPrint[object][internalObject],"lineFeed", "<br>")
                                    html += "<div class=\"feedBackElement\">" + this.msgToPrint[object][internalObject] +"</div>";
                                }
                            }else if(typeof this.msgToPrint[object][internalObject] == "object"){
                                if(this.msgToPrint[object][internalObject]){
                                    if(this.msgToPrint[object][internalObject]){
                                        var size = this.msgToPrint[object][internalObject].size()
                                        for(var i = 0; i < size; i++){
                                            this.msgToPrint[object][internalObject][i] = this.sobstituteString(this.msgToPrint[object][internalObject][i],"tagA", "<a ")
                                            this.msgToPrint[object][internalObject][i] = this.sobstituteString(this.msgToPrint[object][internalObject][i],"closeTagA", "</a>")
                                            this.msgToPrint[object][internalObject][i] = this.sobstituteString(this.msgToPrint[object][internalObject][i],"closeTag", ">")
                                            this.msgToPrint[object][internalObject][i] = this.sobstituteString(this.msgToPrint[object][internalObject][i],"tagSpan", "<span ")
                                            this.msgToPrint[object][internalObject][i] = this.sobstituteString(this.msgToPrint[object][internalObject][i],"closeSpanTag", "</span>")
                                            this.msgToPrint[object][internalObject][i] = this.sobstituteString(this.msgToPrint[object][internalObject][i],"tagImg", "<img ")
                                            this.msgToPrint[object][internalObject][i] = this.sobstituteString(this.msgToPrint[object][internalObject][i],"lineFeed", "<br>")
                                            html += "<div class=\"feedBackElement\">" + this.msgToPrint[object][internalObject][i] +"</div>";
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        //if(this.forWhat == 'notification')
        //if(!$$('.'+this.classBtnClicked)[0])
            html +='<div class=\"'+this.classBtnClicked+'\"></div>';
        return html;
    },
    sobstituteString: function(string, pattern, replacement){
      //String.prototype.replace = function(pattern, replacement) {
          return string.split(pattern).join(replacement);
      //}
    },
    getHtmlForJavascriptNotification: function(){
        var html = "";
        var i = 0;
        var j = 0;
        for(i; i< this.msgToPrint.size();i++){
                for(j; j< this.msgToPrint[i].size();j++){
                    if(this.msgToPrint[i][j] != ""){
                        this.msgToPrint[i][j] = this.sobstituteString(this.msgToPrint[i][j],"lineFeed", "<br>")
                        html += "<div class=\"feedBackElement\">" + this.msgToPrint[i][j]+"</div>";
                    }
                }
        }
        //if(!$$('.'+this.classBtnClicked)[0])
            html +='<div class=\"'+this.classBtnClicked+'\"></div>';

        return html;
    }
})
