//Reusable functions ----------------------------------------------------------------------------------------------------------------------
function grabFile(file, idToUpdate, transition) {
  var request = getHTTPObject();
  if (request) {
    request.onreadystatechange = function() {
		if (transition == 'fade'){ parseResponse(request, idToUpdate, transition); }
		else { parseResponse(request, idToUpdate); }
	}
    request.open("GET", file, true);
    request.send(null);
    return true;
  } else {
    return false;
  } 
}


function parseResponse(request, idToUpdate, transition) {
  if (request.readyState == 4) {
    if (request.status == 200 || request.status == 304) {
      var details = document.getElementById(idToUpdate);
	  if (transition == 'fade'){
		  fade(idToUpdate, -2);
	  }
      details.innerHTML = request.responseText;
    }
  }
}


 
/* GETHTTP OBJECT  ---------------------------------------------------------------------------------------------------------------------------------------------------------------- */

function getHTTPObject() {
  var xhr = false;
  if (window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    try {
      xhr = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(e) {
        xhr = false;
      }
    }
  }
  return xhr;
}


/* FADE EFFECT ------------------------------------------------------------------------------------------------------------------------------------------------------------------  */

var TimeToFade = 400.0;

function fade(eid, FadeState)
{
  var element = document.getElementById(eid);
  element.style.opacity = 0;
  element.style.filter = 'alpha(opacity = 0)';
  
  if(element == null)
    return;
	
  element.FadeState = FadeState;
  	    
  if (element.FadeState == 1 || element.FadeState == -1)
  {
	element.FadeState = element.FadeState;
  }
  else
  {
    element.FadeState = element.FadeState == -2;
    element.FadeTimeLeft = TimeToFade;
    setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 33);
  }  
}




function animateFade(lastTick, eid)
{  
  var curTick = new Date().getTime();
  var elapsedTicks = curTick - lastTick;
  
  var element = document.getElementById(eid);
 
  if(element.FadeTimeLeft <= elapsedTicks)
  {
	element.style.opacity = 1;
    element.style.filter = 'alpha(opacity = ' 
        + (element.FadeState == 1 ? '100' : '0') + ')';
    element.FadeState = element.FadeState == 1 ? 2 : -2;
    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 + "')", 33);
}