var Notifier=new function(){
	this._alert=null;
	return {
		notify:

			function(m,c){
				var w=this.main;
				var d=this.main.document;
				var r=d.documentElement;
				var ww=w.innerWidth?w.innerWidth+w.pageXOffset:r.clientWidth+r.scrollLeft;
				var wh=w.innerHeight?w.innerHeight+w.pageYOffset:r.clientHeight+r.scrollTop;
				var b=d.createElement('div');
				b.id='Message';
				b.className=c||'';
				b.style.cssText='top:-9999px;left:-9999px;position:absolute;white-space:nowrap;';
				if(b.className.length==0){
					b.style.margin='0px 0px';
					b.style.padding='8px 8px';
					b.style.border='1px solid #29B901';
					b.style.backgroundColor='#29B901';
				}
				b=d.body.insertBefore(b,d.body.firstChild);
				b.innerHTML=m;
				var bw=b.offsetWidth;
				var bh=b.offsetHeight;
				b.style.display='none';
				b.style.top=event.clientY + document.body.scrollTop-55;
				b.style.left=event.clientX + document.body.scrollLeft-90;
				b.style.display='block';
				b.style.border='1px solid #29B901';
				b.style.backgroundColor='#29B901';

				setFading(b,100,0,3500,function(){d.body.removeChild(b);});
			},
		init:
			function(w,s){
				this.main=w;
				this.classname=s||'';
				if(this._alert==null){
					this._alert=this.main.alert;
					this.main.alert=function(m){
						Notifier.notify(m,s)
					}
				}
			},
		shut:
			function(){
				if(this._alert!=null){
					this.main.alert=this._alert;
					this._alert=null;
				}
			}
	};
};

function setFading(o,b,e,d,f){
	var t=setInterval(
		function(){
			b=stepFX(b,e,2);
			setOpacity(o,b/100);
			if(b==e){
				if(t){clearInterval(t);t=null;}
				if(typeof f=='function'){f();}
			}
		},d/50
	);
}

function setOpacity(e,o){
	e.style.filter='alpha(opacity='+o*400+')';
	e.style.opacity=o;
}

function stepFX(b,e,s){
	return b>e?b-s>e?b-s:e:b<e?b+s<e?b+s:e:b;
}

var __alert=window.alert;

Notifier.init(window, 'notifier');
