function doFade(obj, startColor, endColor, numSteps, interval)
{
  if (obj.fadeFlag) window.clearInterval(obj.fadeFlag);
	var count = 0;
	obj.fadeFlag = window.setInterval(
		function() {
			obj.curColor = [
				fader(startColor[0],endColor[0],numSteps,count),
				fader(startColor[1],endColor[1],numSteps,count),
				fader(startColor[2],endColor[2],numSteps,count)
				];
			obj.style.backgroundColor = "rgb("+
				obj.curColor[0]+","+
				obj.curColor[1]+","+
				obj.curColor[2]+")";
			count++;
			if (count > numSteps) window.clearInterval(obj.fadeFlag);
		}
		,interval)
}

function doDualFade(obj, startColor, endColor, startColor2, endColor2, numSteps, interval)
{
  if (obj.fadeFlag) window.clearInterval(obj.fadeFlag);
	var count = 0;
	obj.fadeFlag = window.setInterval(
		function() {
			obj.curColor = [
				fader(startColor[0],endColor[0],numSteps,count),
				fader(startColor[1],endColor[1],numSteps,count),
				fader(startColor[2],endColor[2],numSteps,count)
				];
		    obj.curColor2 = [
		        fader(startColor2[0],endColor2[0],numSteps,count),
		        fader(startColor2[1],endColor2[1],numSteps,count),
		        fader(startColor2[2],endColor2[2],numSteps,count)
		        ];
			obj.style.backgroundColor = "rgb("+
				obj.curColor[0]+","+
				obj.curColor[1]+","+
				obj.curColor[2]+")";
		    obj.getElementsByTagName('a')[0].style.color = "rgb(" +
		        obj.curColor2[0]+","+
		        obj.curColor2[1]+","+
		        obj.curColor2[2]+")";
			count++;
			if (count > numSteps) window.clearInterval(obj.fadeFlag);
		}
		,interval)
}

function doDualFade2(obj, startColor, endColor, startColor2, endColor2, startColor3, endColor3, numSteps, interval)
{
  if (obj.fadeFlag) window.clearInterval(obj.fadeFlag);
	var count = 0;
	obj.fadeFlag = window.setInterval(
		function() {
			obj.curColor = [
				fader(startColor[0],endColor[0],numSteps,count),
				fader(startColor[1],endColor[1],numSteps,count),
				fader(startColor[2],endColor[2],numSteps,count)
				];
		    obj.curColor2 = [
		        fader(startColor2[0],endColor2[0],numSteps,count),
		        fader(startColor2[1],endColor2[1],numSteps,count),
		        fader(startColor2[2],endColor2[2],numSteps,count)
		        ];
		    obj.curColor3 = [
		        fader(startColor3[0],endColor3[0],numSteps,count),
		        fader(startColor3[1],endColor3[1],numSteps,count),
		        fader(startColor3[2],endColor3[2],numSteps,count)
		        ];
			obj.style.backgroundColor = "rgb("+
				obj.curColor[0]+","+
				obj.curColor[1]+","+
				obj.curColor[2]+")";
		    obj.style.color = "rgb(" +
		        obj.curColor2[0]+","+
		        obj.curColor2[1]+","+
		        obj.curColor2[2]+")";
		    obj.style.borderColor = "rgb("+
		        obj.curColor3[0]+","+
		        obj.curColor3[1]+","+
		        obj.curColor3[2]+")";
		    count++;
			if (count > numSteps) window.clearInterval(obj.fadeFlag);
		}
		,interval)
}

function doHeightFade(obj, startHeight, endHeight, numSteps, interval)
{
  if (obj.fadeFlag) window.clearInterval(obj.fadeFlag);
	var count = 0;
	obj.fadeFlag = window.setInterval(
		function() {
			obj.curHeight = fader(startHeight,endHeight,numSteps,count);
			obj.style.height = obj.curHeight + 'px';
		    count++;
			if (count > numSteps)
			{ 
			  window.clearInterval(obj.fadeFlag);
			  switchText();
			}
		}
		,interval)
}

function doHeightFade2(obj, startHeight, endHeight, numSteps, interval)
{
  if (obj.fadeFlag) window.clearInterval(obj.fadeFlag);
	var count = 0;
	obj.fadeFlag = window.setInterval(
		function() {
			obj.curHeight = fader(startHeight,endHeight,numSteps,count);
			obj.style.height = obj.curHeight + 'px';
			obj.style.minHeight = obj.curHeight + 'px';
		    count++;
			if (count > numSteps)
			{
			  window.clearInterval(obj.fadeFlag);
			  switchText();
			}
		}
		,interval)
}

function doDualHeightFade(obj, obj2, startHeight, endHeight, startHeight2, endHeight2, numSteps, interval)
{
  if (obj.fadeFlag) window.clearInterval(obj.fadeFlag);
	var count = 0;
	obj.fadeFlag = window.setInterval(
		function() {
			obj.curHeight = fader(startHeight,endHeight,numSteps,count);
			obj.style.height = obj.curHeight + 'px';
		    count++;
			if (count > numSteps) window.clearInterval(obj.fadeFlag);
		}
		,interval)
}

function doOpaqueFade(obj, startOpacity, startFilter, endOpacity, endFilter, numSteps, interval)
{
  if (obj.fadeFlag) window.clearInterval(obj.fadeFlag);
	var count = 0;
	if(endOpacity == 1.0)
	{
	  obj.style.display = 'block';
	}
	obj.fadeFlag = window.setInterval(
		function() {
			obj.curOpacity = fader(startOpacity, endOpacity, numSteps, count);
			obj.curFilter = fader(startFilter, endFilter, numSteps, count);
			obj.style.opacity = obj.curOpacity;
			obj.style.filter = 'alpha(opacity=' + obj.curFilter + ')';
			count++;
			if (count > numSteps)
			{
			  window.clearInterval(obj.fadeFlag);
			  if(endOpacity == 0)
			    obj.style.display = 'none';
			}
		}
		,interval)
}


function fader(min, max, numSteps, curSteps)
{
    return Math.ceil((min + (curSteps/numSteps)*(max-min)));
}