// ===========================================
// Code copyright creativenucleus.com
// Licensed for one site (www.comehome.me.uk).
// Not to be used elsewhere without permission.
// This notice must not be removed
// -------------------------------------------


function getObj(name) {
  if( document.getElementById ) {
  	this.obj = document.getElementById( name );
	this.style = document.getElementById( name ).style;
  } else if( document.all ) {
	this.obj = document.all[ name ];
	this.style = document.all[ name ].style;
  } else if( document.layers ) {
	this.obj = getObjNN4( document,name );
	this.style = this.obj;
  }
}


function getObjNN4( obj, name ) {
	var x = obj.layers;
	var foundLayer;
	for( var i = 0; i < x.length; i++ ) {
		if( x[ i ].id == name ) {
			foundLayer = x[ i ];
		} else if( x[ i ].layers.length ) {
			var tmp = getObjNN4( x[ i ], name );
		}
		
		if( tmp ) {
			foundLayer = tmp;
		}
	}
	return foundLayer;
}





var jsgCnHEX_DIGITS = new Array( '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' );
// only works 0 <= value <= 255
function jsCnDecToHex(dec)
{
	dec = Math.floor( dec );
	part1 = dec % 16;
	part2 = ( dec - part1 ) >> 4;

	return jsgCnHEX_DIGITS[ part2 ] + jsgCnHEX_DIGITS[ part1 ];
}


function jsCCnColourFader( red, green, blue, tickSpeed ) {
	this.m_redBase = red;
	this.m_greenBase = green;
	this.m_blueBase = blue;

	this.m_redFrom = red;
	this.m_greenFrom = green;
	this.m_blueFrom = blue;

	this.m_redNow = red;
	this.m_greenNow = green;
	this.m_blueNow = blue;

	this.m_slide = 0.0;
	this.m_tickSpeed = tickSpeed;
	this.bFrozen = false;
}



jsCCnColourFader.prototype.setRgbFrom = function( red, green, blue ) {
	this.m_redNow = this.m_redFrom = red;
	this.m_greenNow = this.m_greenFrom = green;
	this.m_blueNow = this.m_blueFrom = blue;
	this.m_slide = 1.0;
}



jsCCnColourFader.prototype.flipRgbFade = function() {
	red = this.m_redBase;
	green = this.m_greenBase;
	blue = this.m_blueBase;
	this.m_redBase = this.m_redFrom;
	this.m_greenBase = this.m_greenFrom;
	this.m_blueBase = this.m_blueFrom;
	this.m_redFrom = red;
	this.m_greenFrom = green;
	this.m_blueFrom = blue;
	this.m_slide = 1.0 - this.m_slide;
}


jsCCnColourFader.prototype.getSlider = function() {
	return this.m_slide;
}


jsCCnColourFader.prototype.tick = function() {
	if( this.m_slide <= 0.0 ) {
		return;
	}
	
	if( this.m_tickSpeed <= 0.0 ) {
		return;
	}
	
	if( this.bFrozen ) {
		return;
	}
	
	this.m_slide -= this.m_tickSpeed;
	if( this.m_slide < 0.0 ) {
		this.m_slide = 0.0;
	}

	this.m_redNow = this.m_redBase + (this.m_redFrom - this.m_redBase) * this.m_slide;
	this.m_greenNow = this.m_greenBase + (this.m_greenFrom - this.m_greenBase) * this.m_slide;
	this.m_blueNow = this.m_blueBase + (this.m_blueFrom - this.m_blueBase) * this.m_slide;
}


jsCCnColourFader.prototype.getRgb = function() {
	return jsCnDecToHex( this.m_redNow ) + jsCnDecToHex( this.m_greenNow ) + jsCnDecToHex( this.m_blueNow );
}



jsCCnColourFader.prototype.freeze = function() {
	this.bFrozen = true;
}


jsCCnColourFader.prototype.resume = function() {
	this.bFrozen = false;
}
