
function FadeInNextMember(fadeSteps, fadeInterval) {
    //FADE OUT LAST MEMBER
    colorFade('memberlink','color','0000FF','FFFFFF',fadeSteps,fadeInterval);
    //SET TIMEOUT TO WAIT UNTIL FADE-OUT COMPLETES
    window.setTimeout(function () { GetMemberInfo(); }, fadeSteps * fadeInterval );
}

function fadePause() {
    if (memberTimer) { clearInterval(memberTimer); delete memberTimer; }
    colorFade('memberlink','color','FFFFFF','0000FF',5,5);
    //SHOW USER THE NEXT/PREVIOUS LINKS
    colorFade('prev_company','color','FFFFFF','009933',20,20);
    colorFade('next_company','color','FFFFFF','009933',20,20);
}

function fadeResume() {
    if (memberTimer) { clearInterval(memberTimer); delete memberTimer; }
    memberTimer = window.setTimeout( function () { FadeInNextMember(30,30);}, mDelay * 1000 );
    //HIDE THE NEXT/PREVIOUS LINKS
    colorFade('prev_company','color','009933','FFFFFF',30,30);
    colorFade('next_company','color','009933','FFFFFF',30,30);
    //alert('resume');
}


function GetMemberInfo() {
    new Ajax.Updater({ success: 'memberinfo', failure: 'memberinfo' }
        , baseURL + '/GetMemberInfo'
        , {method:'post'
        , evalScripts: true
        , parameters: {  MemberStep: mStep  } });    
}

var mDelay = 3;
window.setTimeout( function () {FadeInNextMember(30,30);}, 10 );


// main function to process the fade request //
var fadeTimer = [];
var memberTimer;
function colorFade(id,element,start,end,steps,speed) {
  var startrgb,endrgb,er,eg,eb,step,rint,gint,bint,step;
  var target = document.getElementById(id);
  if (target) {
      steps = steps || 20;
      speed = speed || 20;
      if (fadeTimer[id]) { clearInterval(fadeTimer[id]); delete fadeTimer[id]; }
      endrgb = colorConv(end);
      er = endrgb[0];
      eg = endrgb[1];
      eb = endrgb[2];
      if(!target.r) {
        startrgb = colorConv(start);
        r = startrgb[0];
        g = startrgb[1];
        b = startrgb[2];
        target.r = r;
        target.g = g;
        target.b = b;
      }
      rint = Math.round(Math.abs(target.r-er)/steps);
      gint = Math.round(Math.abs(target.g-eg)/steps);
      bint = Math.round(Math.abs(target.b-eb)/steps);
      if(rint == 0) { rint = 1 }
      if(gint == 0) { gint = 1 }
      if(bint == 0) { bint = 1 }
      target.step = 1;
      fadeTimer[id] = setInterval( function() { animateColor(id,element,steps,er,eg,eb,rint,gint,bint) }, speed);
  }
}

// incrementally close the gap between the two colors //
function animateColor(id,element,steps,er,eg,eb,rint,gint,bint) {
  var target = document.getElementById(id);
  var color;
  if(target.step <= steps) {
    var r = target.r;
    var g = target.g;
    var b = target.b;
    if(r >= er) {
      r = r - rint;
    } else {
      r = parseInt(r) + parseInt(rint);
    }
    if(g >= eg) {
      g = g - gint;
    } else {
      g = parseInt(g) + parseInt(gint);
    }
    if(b >= eb) {
      b = b - bint;
    } else {
      b = parseInt(b) + parseInt(bint);
    }
    color = 'rgb(' + r + ',' + g + ',' + b + ')';
    if(element == 'background') {
      target.style.backgroundColor = color;
    } else if(element == 'border') {
      target.style.borderColor = color;
    } else {
      target.style.color = color;
    }
    target.r = r;
    target.g = g;
    target.b = b;
    target.step = target.step + 1;
  } else {
    clearInterval(fadeTimer[id]);
    delete fadeTimer[id];
    color = 'rgb(' + er + ',' + eg + ',' + eb + ')';
    if(element == 'background') {
      target.style.backgroundColor = color;
    } else if(element == 'border') {
      target.style.borderColor = color;
    } else {
      target.style.color = color;
    }
  }
}

// convert the color to rgb from hex //
function colorConv(color) {
  var rgb = [parseInt(color.substring(0,2),16), 
    parseInt(color.substring(2,4),16), 
    parseInt(color.substring(4,6),16)];
  return rgb;
}