/*@charset="Shift_JIS" */

// リンクに含まれるイメージを探す
function findFirstImage(a)
{
  var images, image, i;
  if (a && a.getElementsByTagName &&
      (images = nodeListToArray(a.getElementsByTagName("img"))))
  {
    for (i = 0; i < images.length; ++i)
      if ((image = images[i]))
        return image;
  }
  return null;
}

// イメージの先読み
function cacheImage(owner, src)
{
  var folder, html, image;
  if (owner && owner.createElement)
  {
    if (!(folder = cacheImage.m_folder) &&
        (html = owner.documentElement) && html.appendChild &&
        (folder = owner.createElement("div")))
    {
      folder.className = "image-cache";
      folder.style.display = "none";
      folder.style.position = "absolute";
      folder.style.top = folder.style.left = "0";
      folder.style.visibility = "hidden";
      folder.style.zIndex = "-1";
      cacheImage.m_folder = html.appendChild(folder);
    }
    if (folder && folder.appendChild &&
        (image = owner.createElement("img")))
    {
      image.src = src;
      folder.appendChild(image);
    }
  }
  return;
}

// イメージのキャッシュとイベントハンドラの指定
function rollOverLoad(evt)
{
  var doc, links, link, i, image, match;
  var suffix = "_on";
  if ((doc = document) && doc.getElementsByTagName &&
      (links = nodeListToArray(doc.getElementsByTagName("a"))))
  {
    for (i = 0; i < links.length; ++i)
      if ((link = links[i]) && hasClassName(link, "roll-over") &&
          (image = findFirstImage(link)) && image.src &&
          (match = image.src.match(/^([^#?]*)(\.[^#.\/?]+.*)$/)))
      {
        link.m_img = image;
        link.m_off = image.src;
        link.m_on = match[1] + suffix + match[2];
        cacheImage(doc, link.m_on);
        pushEventListener(link, "mouseover", rollOverMouseOver, false);
        pushEventListener(link, "mouseout", rollOverMouseOver, false);
      }
  }
  return;
}

// イメージを入れ替える
function rollOverMouseOver(evt)
{
  var link, type;
  if (evt && (type = evt.type.toLowerCase()))
    for (link = evt.target || evt.srcElement; link; link = link.parentNode)
      if (link.m_img)
      {
        link.m_img.src = link[type == "mouseover" ? "m_on" : "m_off"];
        break;
      }
  return;
}

if (this.pushEventListener)
  pushEventListener(this, "load", rollOverLoad, false);
