var tgts = new Array(new Array(0, 129, 198), new Array(0, 151, 144), new Array(227, 0, 97), new Array(251, 186, 0));
var pausetime = 2000;
var timeout = 100;
var frac = 16;

var tia = 0;
var tib = 1;
var pausea = 0;
var pauseb = 10;

function revolveElem(elem) {
  var pause;
  var ti;
  if(elem == 'logoDiv') {
    pause = pausea;
    ti = tia;
  } else {
    pause = pauseb;
    ti = tib;
  }
  var colour = document.getElementById(elem).style.backgroundColor;
  if(colour == '') {
    colour = 'rgb(' + tgts[ti][0] + ', ' + tgts[ti][1] + ', ' + tgts[ti][2] + ')';
  }
  var cr = parseInt(colour.substring(colour.indexOf('(') + 1, colour.indexOf(',') ));
  var cg = parseInt(colour.substring(colour.indexOf(',') + 1, colour.lastIndexOf(',') ));
  var cb = parseInt(colour.substring(colour.lastIndexOf(',') + 1, colour.lastIndexOf(')')));
  // If we've hit the target move on to the next target and recurse
  if((cr == tgts[ti][0])&&(cg == tgts[ti][1])&&(cb == tgts[ti][2])) {
    if(pause >= (pausetime / timeout)) {
      pause = 0;
      //ti = (ti + 1) % tgts.length;
      ti = Math.floor(Math.random() * tgts.length);
      //alert(elem + ' - ' + cr + ", " + cg + ", " + cb + ' - ' + tgts[ti][0] + ', ' + tgts[ti][1] + ', ' + tgts[ti][2]);
    } else {
      pause++;
    }
  } else {
    // Progress towards the targets
    if(cr != tgts[ti][0]) {
      var step = Math.ceil(Math.abs(cr - tgts[ti][0]) / frac);
      if(step == 0) {
	step = 1;
      }
      if(cr < tgts[ti][0]) {
	cr += step;
      } else {
	cr -= step;
      }
    }
    if(cg != tgts[ti][1]) {
      var step = Math.ceil(Math.abs(cg - tgts[ti][1]) / frac);
      if(step == 0) {
	step = 1;
      }
      if(cg < tgts[ti][1]) {
	cg += step;
      } else {
	cg -= step;
      }
    }
    if(cb != tgts[ti][2]) {
      var step = Math.ceil(Math.abs(cb - tgts[ti][2]) / frac);
      if(step == 0) {
	step = 1;
      }
      if(cb < tgts[ti][2]) {
	cb += step;
      } else {
	cb -= step;
      }
    }
  }
  // Pushback the colours
  document.getElementById(elem).style.backgroundColor = 'rgb(' + cr + ',' + cg + ',' + cb + ')';
  if(elem == 'logoDiv') {
    pausea = pause;
    tia = ti;
  } else {
    pauseb = pause;
    tib = ti;
  }

}

function revolveLogoDiv() {
  revolveElem('logoDiv');
  wait(timeout);
}

function revolvePortLogoHolder() {
  revolveElem('portLogoHolder');
  wait(timeout);
}

function colourRevolve() {
  if(document.getElementById('logoDiv')) {
    createThread(revolveLogoDiv, RUN);
  }
  if(document.getElementById('portLogoHolder')) {
    createThread(revolvePortLogoHolder, RUN);
  }
}

window.onload = colourRevolve;

