function FXObject(initObjRef, initObjFX, initOpacity, initStep, initDelay){
	var _this=this;
	this.objRef=initObjRef;
	this.objFX=initObjFX;
	this.opacity=initOpacity;
	this.opacityStep=initStep;
	this.delay=initDelay;
	this.isFadeIn=true;
	this.isFadeOut=true;
  this.isFadeInOut=false;
	this.flagIn=false;
	this.flagOut=false;
	if (this.objRef.addEventListener){
		this.objRef.addEventListener('mouseover', function(){_this.flagIn=true; _this.flagOut=false; _this.FadeIn();}, false);
		this.objRef.addEventListener('mouseout', function(){_this.flagIn=false; _this.flagOut=true; _this.FadeOut();}, false);
    this.objRef.addEventListener('click', function(){_this.opacity=0.0; _this.flagIn=false; _this.SetOpacity();}, false);
	} else if (this.objRef.attachEvent){
		this.objRef.attachEvent('onmouseover', function(){_this.flagIn=true; _this.flagOut=false; _this.FadeIn();});
		this.objRef.attachEvent('onmouseout', function(){_this.flagIn=false; _this.flagOut=true; _this.FadeOut();});
    this.objRef.attachEvent('onclick', function(){_this.opacity=0.0; _this.flagIn=false; _this.SetOpacity();});
	}
}

FXObject.prototype = {
	objRef: null,
	objFX: null,
	opacity: 0.0,
	opacityStep: 0.1,
	delay: 100,
	SetOpacity: function(){
		this.objFX.style.opacity=this.opacity;
		this.objFX.style.filter='progid:DXImageTransform.Microsoft.Alpha(opacity='+this.opacity*100+')';
	},
	FadeIn: function(){
		var _this=this;
		if(!this.isFadeIn || !this.flagIn) return;
		this.opacity+=this.opacityStep;
		if(this.opacity < (1.0 + this.opacityStep)){
			this.SetOpacity();
			setTimeout(function(){_this.FadeIn();}, this.delay);
		}
	},
	FadeOut: function(){
		var _this=this;
		if(!this.isFadeOut || !this.flagOut) return;
		this.opacity-=this.opacityStep;
		if(this.opacity > (0.0 - this.opacityStep)){
			this.SetOpacity();
			setTimeout(function(){_this.FadeOut();}, this.delay);
		}
	},
  FadeInOut: function(){
		var _this=this;
		if(this.flagIn && this.isFadeInOut){
      if(this.opacity >= (1.0 + this.opacityStep)){
        this.flagIn=false;
        this.flagOut=true;
        setTimeout(function(){_this.FadeInOut();}, this.delay);
      }else{
        this.opacity+=this.opacityStep;
        this.SetOpacity();
        setTimeout(function(){_this.FadeInOut();}, this.delay);
      }
		}else if(this.flagOut && this.isFadeInOut){
      if(this.opacity <= (0.0 - this.opacityStep)){
        this.flagIn=true;
        this.flagOut=false;
        setTimeout(function(){_this.FadeInOut();}, this.delay);
      }else{
        this.opacity-=this.opacityStep;
        this.SetOpacity();
        setTimeout(function(){_this.FadeInOut();}, this.delay);
      }
    }
  }
}
