
       //////////////////////////////////////////////////////////////////////////
      //
     //             written by Brian Corr: theBranchingWebsite.com   
    //
   //////////////////////////////////////////////////////////////////////////


		//  - note: this version requires a var called: fadeDur to be set in the main page (it's set by PHP reading from XML) -  


	function fadeCtrlClass(scopeIn, durIn){
		
		var thisObj = this;
		this.scope = scopeIn;
		
		this.dur = fadeDur;
		this.adjDur = fadeDur;
		
		if ((durIn != null) && (durIn != undefined)){
			this.dur = durIn;
			this.adjDur = durIn;
			
		}
		
		
		this.alpha = 0;
		
		this.fadeIn = new Object();
		this.fadeOut = new Object();
		
		this.fade_ivl = null;
		
		this.init_dt = new Date();
		
		this.toRepCall = null;
		
		this.run = function(runRepIn){
			clearInterval(thisObj.fade_ivl);
			
			thisObj.toRepCall = thisObj[runRepIn]._do;
			thisObj[runRepIn].pre();
			thisObj.init_dt = new Date();
			thisObj.fade_ivl = setInterval(thisObj.runRep,30);
		}
		
		this.runRep = function(){
			var now_dt = new Date();
			
			var elapse = ((now_dt - thisObj.init_dt)+(thisObj.dur - thisObj.adjDur))/thisObj.dur;
			
			var done = false;
			
			if (elapse >= 1){
				clearInterval(thisObj.fade_ivl);
				elapse = 1;
				done = true;
				
			}
			
			thisObj.toRepCall(elapse, done);
		}
		
		this.stop = function(){
			clearInterval(thisObj.fade_ivl);
			
		}
		
		
		
		this.fadeIn.pre = function(){
			thisObj.adjDur = (1-thisObj.alpha) * thisObj.dur;
		}
		
		this.fadeIn._do = function(elapse, last){
			if ((elapse > 1)||(last == true)) elapse = 1;
			
			thisObj.scope.style.opacity = elapse;
			thisObj.scope.style.filter = 'alpha(opacity=' + elapse*100 + ')';
			thisObj.alpha = elapse;
		}
		
		
		
		this.fadeOut.pre = function(){
			thisObj.adjDur = thisObj.alpha * thisObj.dur;
		}
		
		this.fadeOut._do = function(elapse, last){
			if ((elapse > 1)||(last == true)) elapse = 1;
			
			thisObj.scope.style.opacity = 1 - elapse;
			thisObj.scope.style.filter = 'alpha(opacity=' + (1-elapse)*100 + ')';
			thisObj.alpha = 1 - elapse;
		}
		
		
	}
	
	
