var elementFader = function(el){
	var el=el;
	var opacityvalue;
	var ie = (document.all) ? 1 : 0;
	var onReady=new PHR.util.CustomEvent('onReady');
	var FadeTo=48
	function op(v){
		v = (ie) ? v : v/100;
		p=(ie) ? "filter" : "MozOpacity";
		if(ie) {			
			el.style.filter = 'alpha(opacity=' + v + ');'
		}
		else {
			el.style[p] = v;
		}
	};
	setFadeTo = function(fadeTo){
		FadeTo = fadeTo;
	};
	function doFadeIn(){
		opacityvalue+=8;
		op(opacityvalue)
		if(opacityvalue<FadeTo){
			setTimeout(function(){doFadeIn();},10);
		}
		else {
			onReady.fire();
		}
	};
	this.FadeIn = function() {
		opacityvalue=0;
		op(opacityvalue)
		el.style.visibility='visible';
		doFadeIn();
	};
	function doFadeOut(){
		opacityvalue-=8;
		op(opacityvalue)
		if(opacityvalue>0){
			setTimeout(function(){doFadeOut();},5);
		}
		else {
			el.style.visibility='hidden';
			onReady.fire();
		}
	};
	this.FadeOut = function() {
		opacityvalue=FadeTo;
		doFadeOut();
	};
	this.OnReady = function(fn){
		onReady.subscribe(fn);
	};	
}
