/***********************************************

* Fader © idim technologies (www.idim.com)

* This notice must stay intact for use

***********************************************/



/***********************************************

* Usage:

* var ie4=document.all&&!document.getElementById;

* var DOM2=document.getElementById;

* var fadeInstance;

* var fadeInstance2;

*

* function init(){

*		fadeInstance = new NXNFade("div2fade");

*		fadeInstance.addItem("<b>Hello</b> <a href='#'>Click Here></a>");

*		fadeInstance.addItem("<b>Goodbye</b> <a href='#'>Click Here></a>");

* 	fadeInstance.setStartColor(new Array(255,255,255));

* 	fadeInstance.setEndColor(new Array(0,0,0));

* 	fadeInstance.setDelay(3000);

* 	fadeInstance.setMaxStep(30);

* 	fadeInstance.setStepDelay(30);

* 	fadeInstance.setBeginTag("<div style='font: 14px; padding: 10px;'>");

*		fadeInstance.contentChange();

*	

*		fadeInstance = new NXNFade("div2fade2");

*		fadeInstance.addItem("<b>Hola</b> <a href='#'>Click Here></a>");

*		fadeInstance.addItem("<b>Ciao</b> <a href='#'>Click Here></a>");

*		fadeInstance.contentChange();

*	}

* 

* ...

* <div id="div2fade" style="background: #FFFFE0;border:none;width:550px;height:100px"></div>

* some more content

* <div id="div2fade2" style="background: #FFFFE0;border:none;width:550px;height:100px"></div>

* ...

* 

***********************************************/





function NXNFade(objName){

	var startColor= new Array(255,255,255);		// start color (red, green, blue)

	var endColor=new Array(0,0,0);						// end color (red, green, blue)

	var delay = 2000;		// delay in miliseconds between message change

	var maxStep=40;		// number of steps to take from start color to endColor

	var stepDelay=40;		// time in miliseconds of a single step

											// maxStep*stepDelay will be total time in miliseconds of fading effect

	//set opening tag, such as font declarations

	var beginTag="<div style='font: normal 12px Verdana; padding: 5px;'>";

	var closeTag="</div>";

	var fadeLinks=1;  //  0 for no, 1 for yes.

	

	///No need to edit below this line////////////////

	var fContent=new Array();

	var ie4=document.all&&!document.getElementById;

	var DOM2=document.getElementById;

	var index=0;

	var faderObj;

	var fCounter;

	this.contentChange = _nextContent;

	this.addItem = _addItem;



	if (DOM2){

		faderObj = document.getElementById(objName)

	} else if (ie4) {

		faderObj = document.all.objName

	}



	this.setDelay = function (/*Int*/nvalue) {	delay = nvalue; }

	this.setMaxStep = function (/*Int*/nvalue) {	maxStep = nvalue; }

	this.setStepDelay = function (/*Int*/nvalue) {	stepDelay = nvalue; }

	this.setStartColor = function (/* Array(255,255,255) */ nvalue) {	startColor = nvalue; }

	this.setEndColor = function (/* Array(255,255,255) */ nvalue) {	endColor = nvalue; }

	this.setFadeLinks = function (/*Int*/ nvalue) {	fadeLinks = nvalue; }

	this.setBeginTag = function (/*Int*/ nvalue) {	beginTag = nvalue; }

	this.setCloseTag = function (/*Int*/ nvalue) {	closeTag = nvalue; }





	function _addItem(str) {	

	  fContent[fContent.length] = str;

	}



	 var linkcolorchange = function(step){

		var obj=faderObj.getElementsByTagName("A");

		if (obj.length>0){

			for (i=0;i<obj.length;i++) {

				obj[i].style.color=_getStepColor(step);

			}

		}

	}

		

	function _getStepColor(step) {

	  var diff

	  var newcolor=new Array(3);

	  for(var i=0;i<3;i++) {

	    diff = (startColor[i]-endColor[i]);

	    if(diff > 0) {

	      newcolor[i] = startColor[i]-(Math.round((diff/maxStep))*step);

	    } else {

	      newcolor[i] = startColor[i]+(Math.round((Math.abs(diff)/maxStep))*step);

	    }

	  }

	  return ("rgb(" + newcolor[0] + ", " + newcolor[1] + ", " + newcolor[2] + ")");

	}



	function _nextContent(){

		if (index>=fContent.length)

		index=0

		if (DOM2){

			faderObj.style.display="none";

			faderObj.style.color="rgb("+startColor[0]+", "+startColor[1]+", "+startColor[2]+")"

			faderObj.innerHTML=beginTag+fContent[index]+closeTag

			if (fadeLinks) {

				linkcolorchange(1);

			}

			_colorFade(1);

		}	else if (ie4) {

			faderObj.innerHTML=beginTag+fContent[index]+closeTag;

		}

		index++

	}



	function _colorFade(step) {

		if(step<=maxStep) {	

			faderObj.style.color=_getStepColor(step);

			if (fadeLinks) {

				linkcolorchange(step);

			}

			step++;

			faderObj.style.display="";

			fCounter=setTimeout(function (){_colorFade(step)},stepDelay);

		} else {

			clearTimeout(fCounter);

			faderObj.style.color="rgb("+endColor[0]+", "+endColor[1]+", "+endColor[2]+")";

			faderObj.style.display="";

			setTimeout(function (){_nextContent()}, delay);

		}   

	}

}

