function togglePopBox() {
	popbox = document.getElementById("popBox");
	
	// If it's hidden, show it
	if (popbox.style.visibility == "hidden" || popbox.style.visibility == "") {
		if (navigator.userAgent.indexOf("Firefox") != -1) {
	      setOpacity(99.999, "popBox");
	    } else {
	      setOpacity(100, "popBox");
	    }
	 
	    // Now make the box visible (fade in?)
	    popbox.style.visibility = "visible";
	} else {
    // Otherwise, fade out the box quickly
    popbox = document.getElementById("popBox");
    fadeElementSetup("popBox", 100, 0, 10);
	}
}
var fadeActive = new Array();
var fadeQueue  = new Array();
var fadeTimer  = new Array();

// Setup the fade function
function fadeElementSetup(theID, fdStart, fdEnd, fdSteps) {

  if (fadeActive[theID] == true) {
    // Already animating, queue up this command
    fadeQueue[theID] = new Array(theID, fdStart, fdEnd, fdSteps);
  } else {
    fadeSteps = fdSteps;
    fadeCurrent = 0;
    fadeAmount = (fdStart - fdEnd) / fadeSteps;
    fadeTimer[theID] = setInterval("fadeElement('"+theID+"', '"+fadeCurrent+"', '"+fadeAmount+"', '"+fadeSteps+"')", 40);
    fadeActive[theID] = true;
  }
}

// Do the fade
function fadeElement(theID, fadeCurrent, fadeAmount, fadeSteps) {
  fadeCurrent++;
  // Set the opacity depending on if we're adding or subtracting (pos or neg)
  if (fadeAmount < 0) {
    setOpacity(Math.abs(fadeCurrent * fadeAmount), theID);
  } else {
    setOpacity(100 - (fadeCurrent * fadeAmount), theID);
  }
  if (fadeCurrent == fadeSteps) {

    // We're done, so clear.
    // If we faded out (amount was positive), then hide the layer

    if (fadeAmount > 0) {
      document.getElementById(theID).style.visibility = "hidden";
    }

    // Tear Down

    clearInterval(fadeTimer[theID]);
    fadeActive[theID] = false;
    
    // Hang on.. did a command queue while we were working? If so, make it happen now
    
    if (fadeQueue[theID] && fadeQueue[theID] != false) {
      fadeElementSetup(fadeQueue[theID][0], fadeQueue[theID][1], fadeQueue[theID][2], fadeQueue[theID][3]);
      fadeQueue[theID] = false;
    }
    
  } else {
    // Keep going, and send myself the updated variables
    clearInterval(fadeTimer[theID]);
    fadeTimer[theID] = setInterval("fadeElement('"+theID+"', '"+fadeCurrent+"', '"+fadeAmount+"', '"+fadeSteps+"')", 40);
  }
}

// Set the opacity, compatible with a number of browsers

function setOpacity(opacity, theID) {

  var object = document.getElementById(theID).style;

  // If it's 100, set it to 99 for Firefox.

  if (navigator.userAgent.indexOf("Firefox") != -1) {
    if (opacity == 100) { opacity = 99.999; } // This is majorly retarded
  }

  // Multi-browser opacity setting

  object.filter = "alpha(opacity=" + opacity + ")"; // IE/Win
  object.KhtmlOpacity = (opacity / 100);            // Safari 1.1 or lower, Konqueror
  object.MozOpacity = (opacity / 100);              // Older Mozilla+Firefox
  object.opacity = (opacity / 100);                 // Safari 1.2, Firefox+Mozilla
}