
var messageStack=stdClass.extend({constructor:function(el,settings){this.base();Object.extend(this.s,{timer:null,waitTime:10000,effectTime:5000,closeSelector:".close"});Object.extend(this.n,{el:el,childEl:[],tempContainer:document.createElement('div')});Object.extend(this.c,{messageFunctions:{success:this.successMessage.bind(this),error:this.errorMessage.bind(this)}});var eles=this.n.el.getElementsBySelector('ul');for(var x=0;x<eles.length;x++){var childEl={el:eles[x],timer:null}
this.startTimer(childEl);this._attachEvents(childEl);}},closeClicked:function(childEl){this.removeMessage(childEl);},addMessage:function(message,type){if(!this.n.el){return;}
if(typeof(this.c.messageFunctions[type])=="function"){var html=this.c.messageFunctions[type](message);}else{return;}
this.n.tempContainer.innerHTML=html;var childEl={el:this.n.tempContainer.firstChild,timer:null}
this.n.el.appendChild(childEl.el);this._attachEvents(childEl);Element.show(this.n.el);if(window.Effect){Effect.BlindDown(childEl.el,{duration:(this.s.effectTime/1000),afterFinishInternal:function(effect){effect.element.undoClipping();effect.element.style.height='';}});}else{Element.show(childEl.el);}
this.startTimer(childEl);},removeMessage:function(childEl){this.endTimer(childEl);if(window.Effect){Effect.Fade(childEl.el,{duration:(this.s.effectTime/1000)});}else{Element.hide(this.n.el);}},startTimer:function(childEl){this.endTimer(childEl);this.s.timer=setTimeout(this.removeMessage.bind(this,childEl),this.s.waitTime);},endTimer:function(childEl){if(childEl.timer!=null){clearTimeout(childEl.timer);childEl.timer=null;}},successMessage:function(message){var html='<ul class="success">';html+='<li class="title">Success</li>';html+='<li>'+message+'</li>';html+='</ul>';return html;},errorMessage:function(message){var html='<ul class="error">';html+='<li class="title">Error</li>';html+='<li>'+message+'</li>';html+='<li class="close">Close me</li>';html+='</ul>';return html;},_attachEvents:function(childEl){var eles=document.getElementsBySelector(this.s.closeSelector,(childEl.el||this.n.el));for(var x=0;x<eles.length;x++){this.eObserve(eles[x],'click',this.closeClicked.bind(this,childEl));}}});Behaviour.register({'#messagestack':function(el){new messageStack(el);}});