/** * https://github.com/jwestbrook/Prototype.Growler */ Growler=Class.create({initialize:function(b){this.noticeOptions={header:null,speedin:0.3,speedout:0.5,outDirection:{y:-20},life:5,sticky:!1,className:""};this.growlerOptions={location:"tr",width:"250px"};this.IE=Prototype.Browser.IE?parseFloat(navigator.appVersion.split("MSIE ")[1])||0:0;var a=Object.clone(this.growlerOptions);b=b||{};Object.extend(a,b);this.growler=new Element("div",{"class":"Growler",id:"Growler"});this.growler.setStyle({position:6==this.IE?"absolute":"fixed",padding:"10px",width:a.width, "z-index":"50000"});if(6==this.IE)switch(parseInt(this.growler.style.width),parseInt(this.growler.style.padding),parseInt(this.growler.style.height),parseInt(this.growler.style.padding),a.location){case "br":this.growler.style.setExpression("left","( 0 - Growler.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px'"); this.growler.style.setExpression("top","( 0 - Growler.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px'");break;case "tl":this.growler.style.setExpression("left","( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px'");this.growler.style.setExpression("top", "( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px'");break;case "bl":this.growler.style.setExpression("left","( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px'");this.growler.style.setExpression("top","( 0 - Growler.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px'"); break;default:this.growler.setStyle({right:"auto",bottom:"auto"}),this.growler.style.setExpression("left","( 0 - Growler.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px'"),this.growler.style.setExpression("top","( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px'")}else switch(a.location){case "br":this.growler.setStyle({bottom:0, right:0});break;case "tl":this.growler.setStyle({top:0,left:0});break;case "bl":this.growler.setStyle({top:0,right:0});break;case "tc":this.growler.setStyle({top:0,left:"25%",width:"50%"});break;case "bc":this.growler.setStyle({bottom:0,left:"25%",width:"50%"});break;default:this.growler.setStyle({top:0,right:0})}this.growler.wrap(document.body)},removeNotice:function(b,a){var c=Object.clone(this.noticeOptions);a=a||{};Object.extend(c,a);new Effect.Parallel([new Effect.Move(b,Object.extend({sync:!0, mode:"relative"},c.outDirection)),new Effect.Opacity(b,{sync:!0,to:0})],{duration:c.speedout,afterFinish:function(){try{var a=b.down("div.notice-exit");void 0!=a&&a.stopObserving("click",this.removeNotice);c.created&&Object.isFunction(c.created)&&b.stopObserving("notice:created",c.created);c.destroyed&&Object.isFunction(c.destroyed)&&(b.fire("notice:destroyed"),b.stopObserving("notice:destroyed",c.destroyed))}catch(e){}try{b.remove()}catch(f){}}})},createNotice:function(b,a){var c=Object.clone(this.noticeOptions); a=a||{};Object.extend(c,a);var d=(new Element("div",{"class":"Growler-notice "+c.className})).setStyle({display:"block",opacity:0});c.created&&Object.isFunction(c.created)&&d.observe("notice:created",c.created);c.destroyed&&Object.isFunction(c.destroyed)&&d.observe("notice:destroyed",c.destroyed);if(c.sticky){var e=(new Element("div",{"class":"Growler-notice-exit"})).update("×");e.observe("click",function(){this.removeNotice(d,c)}.bind(this));d.insert(e)}d.insert((new Element("div",{"class":"Growler-notice-head"})).update(c.header)); d.insert((new Element("div",{"class":"Growler-notice-body"})).update(b));this.growler.insert(d);new Effect.Opacity(d,{to:0.85,duration:c.speedin});c.sticky||this.removeNotice.delay(c.life,d,c);d.fire("notice:created");return d},specialNotice:function(b,a,c,d,e){var f=Object.clone(this.noticeOptions);a=a||{};Object.extend(f,a);f.header=f.header||c;b=this.createNotice(b,f);b.setStyle({backgroundColor:d,color:e});return b},growl:function(b,a){return this.createNotice(b,a)},warn:function(b,a){return this.specialNotice(b, a,"Warning!","#F6BD6F","#000")},error:function(b,a){return this.specialNotice(b,a,"Critical!","#F66F82","#000")},info:function(b,a){return this.specialNotice(b,a,"Information!","#BBF66F","#000")},ungrowl:function(b,a){this.removeNotice(b,a)}});