var newquote = '';
var timeToFade = 1000.0;

function fade(eid, done)
{
   var element = document.getElementById(eid);

   if (element.FadeState == null) {
      if (element.style.opacity == null || element.style.opacity == '' || element.style.opacity == '1') {
         element.FadeState = 2;
      } else {
         element.FadeState = -2;
      }
   }

   if (element.FadeState == 1 || element.FadeState == -1) {
      element.FadeState = element.FadeState == 1 ? -1 : 1;
      element.FadeTimeLeft = timeToFade - element.FadeTimeLeft;
   } else {
      element.FadeState = element.FadeState == 2 ? -1 : 1;
      element.FadeTimeLeft = timeToFade;
      setTimeout("animateFade(" + new Date().getTime()  + ",'" + eid + "', '" + done + "')", 33);
   }
}

function animateFade(lastTick, eid, done)
{  
   var curTick = new Date().getTime();
   var elapsedTicks = curTick - lastTick;

   var element = document.getElementById(eid);

   if (element.FadeTimeLeft <= elapsedTicks) {
      element.style.opacity = element.FadeState == 1 ? '1' : '0';
      element.style.filter = 'alpha(opacity = ' + (element.FadeState == 1 ? '100' : '0') + ')';
      element.FadeState = element.FadeState == 1 ? 2 : -2;
      
      eval(done);
      
      return;
   }

   element.FadeTimeLeft -= elapsedTicks;
   var newOpVal = element.FadeTimeLeft / timeToFade;
   if (element.FadeState == 1) {
      newOpVal = 1 - newOpVal;
   }

   element.style.opacity = newOpVal;
   element.style.filter = 'alpha(opacity = ' + (newOpVal * 100) + ')';

   setTimeout("animateFade(" + curTick + ",'" + eid + "', '" + done + "')", 33);
}

function getXmlHttp()
{
   var xmlhttp = false;
   
   try {
      xmlhttp = new XMLHttpRequest();
   } catch (e) {
      try {
         xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
      } catch (e) {
         try {
            xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
         } catch (e) {
            // AJAX not supported.
         }
      }
   }
   
   return xmlhttp;
}

function getNextQuote()
{
   var element = document.getElementById('quote');

   if (element == null) {
      return;
   }

   var xmlhttp = getXmlHttp();

   xmlhttp.onreadystatechange = function()
   {
      if (xmlhttp.readyState == 4) {
         setQuote(xmlhttp.responseText);
      }
   }
   
   xmlhttp.open('GET', 'http://www.nomorevoid.com/include/quotes.php', true);
   xmlhttp.send(null);
}

function setQuote(quote)
{
   var element = document.getElementById('quote');
   
   if (element.innerHTML == '') {
      // Initially make the empty div hidden.
      element.FadeState = -2;
      element.style.opacity = '0';
      element.style.filter = 'alpha(opacity = 0)';
      
      // Set the quote.
      element.innerHTML = quote;
      
      // Fade it in.
      fade('quote', 'scheduleQuote()');
   } else {
      // Fade the existing quote out.
      newquote = quote;
      fade('quote', 'setQuote2()');
   }  
}

function setQuote2()
{
   document.getElementById('quote').innerHTML = newquote;
   fade('quote', 'scheduleQuote()');
}

function scheduleQuote()
{
   setTimeout(getNextQuote, 10000);
}

window.onload = getNextQuote;

