/**
 * Function to preload the images used for rollover events
 */
function preloadImages() {
  if (document.images) {
    if (!document.loadedImages) document.loadedImages = new Array();
    var j = document.loadedImages.length;
    var args = preloadImages.arguments;
    for (var i = 0; i < args.length; i++) {
      if (args[i].indexOf("#") != 0) {
        document.loadedImages[j] = new Image;
        document.loadedImages[j++].src = args[i];
      }
    }
  }
}

/**
 * Function to find a object (needle) in a window (haystack)
 */
function findObject(needle, stack) {
  var p;
  var x;

  if (!stack) {
    stack = document;
  }

  if ((p = needle.indexOf("?")) > 0 && parent.frames.length) {
    stack = parent.frames[needle.substring(p+1)].document;
    needle = needle.substring(0,p);
  }

  if (!(x = stack[needle]) && stack.all) {
    x = stack.all[needle];
  }

  for (var i = 0; !x && stack.layers && i < stack.layers.length; i++) {
    x = findObject(needle, stack.layers[i].document)
  }
  return x;
}

/**
 * Function to change an image on a rollover event
 */
function swapImage() {
  var j = 0;
  var x;
  var args = swapImage.arguments;

  document.swapImages = new Array;	
  for (var i = 0; i < (args.length-2); i+=3)
  if ((x = findObject(args[i])) != null) {
    document.swapImages[j++] = x; 
    if (!x.oSrc) {
      x.oSrc=x.src;
    }
    x.src = args[i+2];
  }
}

/**
 * Function to restore the images after a rollover event
 */
function swapImageRestore() {
  var x;
  var a = document.swapImages;

  for (var i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++) {
    x.src=x.oSrc;
  }
}
