var colourChangeRate = 40;
var numSteps = 15;

function colourShift(item, styleElt, ovrCol, finCol)
{
  if (item.fade == "false")
  {
    item.fade = "true";

    eval("item.style." + styleElt + " = \"" + ovrCol + "\"");
    
    rVal = hexToDec(ovrCol.substr(1,2));
    gVal = hexToDec(ovrCol.substr(3,2));
    bVal = hexToDec(ovrCol.substr(5,2));
    
    rInitVal = hexToDec(finCol.substr(1,2));
    gInitVal = hexToDec(finCol.substr(3,2));
    bInitVal = hexToDec(finCol.substr(5,2));
    
    rUnit = calcUnit(rVal, rInitVal, numSteps);
    gUnit = calcUnit(gVal, gInitVal, numSteps);
    bUnit = calcUnit(bVal, bInitVal, numSteps);

    for (var i=1 ; i<=numSteps ; i++)
    {
      rColVal = parseInt(rVal + (rUnit * i));
      gColVal = parseInt(gVal + (gUnit * i));
      bColVal = parseInt(bVal + (bUnit * i));
  
   
      timeOutFunction = "changeColour(\"" + item.id + "\",\"" + styleElt + "\",\"" + rColVal + "\",\"" + gColVal + "\",\"" + bColVal + "\")";
      setTimeout('eval(' + timeOutFunction+ ')', colourChangeRate * i);
    }
    setFadeFalseFunction = "setFadeFalse(\"" + item.id + "\")";
    setTimeout('eval(' + setFadeFalseFunction + ')', ((colourChangeRate * numSteps) + 1))
  }
}
    
function changeColour(item, ccStyleElt, rr, gg, bb)
{
  htmlObject = document.getElementById(item);
  if (htmlObject.mouseon == "false")
  {
    newColour = "#" + decToHex(rr) + decToHex(gg) + decToHex(bb);
  
    eval("htmlObject.style." + ccStyleElt + " = \"" + newColour + "\"");
  }
}

function setFadeFalse(sffItem)
{
  sffObject = document.getElementById(sffItem);

  eval("sffObject.fade = \"false\"");
}

var hexbase="0123456789ABCDEF";

function decToHex(number)
{
  return hexbase.charAt((number>> 4)& 0xf)+ hexbase.charAt(number& 0xf);
}

function hexToDec(number)
{
  return parseInt(number.toUpperCase(), 16);
}

function calcUnit(numA, numB, numIncrements)
{
  colourSpan = numB - numA
  
  return (colourSpan/numIncrements);
}

