function fadeObject(id, c1, c2, s1, s2) {
  var self = this;
  this.id      = id;
  this.elem    = false;
  this.colour  = {
    stt: [parseInt(c1.substr(0, 2), 16), parseInt(c1.substr(2, 2), 16), parseInt(c1.substr(4, 2), 16)],
    end: [parseInt(c2.substr(0, 2), 16), parseInt(c2.substr(2, 2), 16), parseInt(c2.substr(4, 2), 16)],
    now: [parseInt(c1.substr(0, 2), 16), parseInt(c1.substr(2, 2), 16), parseInt(c1.substr(4, 2), 16)]
  };
  this.steps   = [s1, s2];
  this.dir     = false;
  this.active  = false;
  this.queue   = [];
  this.msg     = [];
  this.message = 0;
  function d2h(num) {
    num = Math.round(num);
    return ((num < 16) ? "0" : "") + num.toString(16);
  }
  this.fade = function(message, direction) {
    this.elem = this.elem || document.getElementById(this.id);
    this.queue.push([message, direction]);
    for (var x = 0; x < this.queue.length; x++) {
      for (var y = x + 1; y < this.queue.length; y++) {
        if (this.queue[x][0] == this.queue[y][0] && this.queue[x][1] != this.queue[y][1]) {
          this.queue.splice(x, 1);
          this.queue.splice(y - 1, 1);
        }
      }
    }
    if (!this.active) setTimeout(function() { self.fadeLoop(); }, 10);
  };
  this.fadeLoop = function() {
    if (!this.active && this.queue.length) {
      if (this.dir && this.message != this.queue[0][0]) this.queue.unshift([this.message, false]);
      var msg = this.queue.shift();
      if (this.msg[msg[0]]) {
        this.active = true;
        this.elem.innerHTML = this.msg[this.message = msg[0]];
        this.dir = msg[1];
      }
    }
    if (this.dir) {
      var c1 = this.colour.stt, c2 = this.colour.end, s = this.steps[0];
    } else var c1 = this.colour.end, c2 = this.colour.stt, s = this.steps[1];
    for (var x = 0, cnow = "", inc = 0; x < 3; x++) {
      this.colour.now[x] += inc = (c2[x] - c1[x]) / s;
      cnow += this.colour.now[x] = (inc < 0) ? Math.max(this.colour.now[x], c2[x]) : Math.min(this.colour.now[x], c2[x]);
    } this.elem.style.color = "#" + d2h(this.colour.now[0]) + d2h(this.colour.now[1]) + d2h(this.colour.now[2]);
    if (cnow == c2.join("")) {
      this.active = false;
      if (!this.queue.length) {
        if (!this.dir) {
          if (this.msg[0]) {
            this.queue.push([0, true]);
            setTimeout(function() { self.fadeLoop(); }, 10);
          } else this.elem.innerHTML = "&nbsp;";
        }
      } else setTimeout(function() { self.fadeLoop(); }, 10);
    } else setTimeout(function() { self.fadeLoop(); }, 10);
  };
  if (window.addEventListener) {
    window.addEventListener('load', function() { self.fade(0, true); }, false); 
  } else if (window.attachEvent)
    window.attachEvent('onload', function() { self.fade(0, true); });
}
/* ***** End ********************************/




var fader = new fadeObject('rotateMsgBox', 'ffffff', '000000', 100, 100);
fader.msg[0] = ""; // LEAVE THIS BLANK!
fader.msg[1] = "<div><p><em>&quot;Yuba Highlands would like to thank Squaretree for expertly designing an amazing site for our potential development. The site became a bigger piece of our marketing campaign than we had anticipated due to its extreme effectiveness. Every concern and question we had along the way was addressed immediately by the professional and courteous staff at Squaretree.&quot;</em></p></div><br/><div style='color: #4E8D32;'><p>Amber Hustead, <br />GRE Management Services, Inc.</p></div>";
fader.msg[2] = "<div><p><em>&quot;CAC was in desperate need of a new website and IT support and Squaretree came to the rescue! They listened to our needs and produced a website that exceeded our expectations. Each time we needed to change or add something, Squaretree and their team of professionals were able to deliver results quickly and efficiently. Squaretree IT Projects has superior customer service and a level of professionalism where the customer's needs are their number one priority.&quot;</em></p></div><br/><div style='color: #4E8D32;'><p>Deedra Withers, <br />CAC's Editor &amp; Communications Specialist</p></div>";
fader.msg[3] = "<div><p><em>&quot;I just wanted to send a note to express my appreciation of the job you did revamping our website. It was an excellent job and your staff was very responsive and easy to work with. I look forward to working on additional projects with you and your team.&quot;</em></p></div><br/><div style='color: #4E8D32;'><p>Doug Hawkins, <br />Plastic Package</p></div>";
fader.msg[4] = "<div><p><em>&quot;After a few months as a new client of yours, I am pleased to say that I am confident we chose the right company for a long term working relationship. From our account representative, to our website designer, to our IT troubleshooter, to the person who answered your phones yesterday, we have been treated with nothing less than superior customer service! Your friendly, timely and very knowledgeable staff has been a pleasure to work with through some difficult transitions with our VPN, website changes and our server. We appreciate working with such a professional and first rate outfit. Thank you for making our lives easier and our association more productive!&quot; </em></p></div><br/><div style='color: #4E8D32;'><p>Kim Parker, CEA</p></div>";
fader.msg[5] = "<div><p><em>&quot;Squaretree has excellent professionals who performed quality work in developing our firm's web presence. As an unexpected bonus, we obtained new business from our site.&quot;</em></p></div><br/><div style='color: #4E8D32;'><p>Frank Radoslovich, <br />Radoslovich Law Corporation</p></div>";

var fadePosition = Math.floor(Math.random() * fader.msg.length)+1;
var fadeTimeinSeconds = 10;
var firstFade = true;

function nextFade()
{
	if (firstFade)
	{
		firstFade = false;
		fader.fade(0, false);
	}
	if (fadePosition >= fader.msg.length)
		fadePosition = 1;
	fader.fade(fadePosition, true);
	fadePosition++;
	setTimeout("nextFade();", fadeTimeinSeconds * 1000);
}

