/* 配列の先頭要素しかいらない */
function arrayZero(arr)
{
  return arr[0] || null;
}

// 表示方法を選んだときに自動的にジャンプする
function item2FormElementClick(evt)
{
  var e, form, elements, flag, values, url;
  if ((evt || (evt = window.event)))
  {
    for (e = evt.target || evt.srcElement; e; e = e.parentNode)
    {
      if (e.type == "radio")
      {
        form = e.form;
        flag = e.checked && e.checked != e.defaultChecked;
        break;
      }
      else if (e.type == "select-one")
      {
        form = e.form;
        flag = e.selectedIndex >= 0 && e.selectedIndex != e["m_default"];
        break;
      }
    }

    if (flag)
    {
      values = [];
      elements = snapElementsByClassName(form.elements);
      for (i = 0; i < elements.length; ++i)
        if (elements[i].name)
        {
          if (elements[i].type == "select-one")
          {
            arrayPush(values, encodeURIComponent(elements[i].name) + "=" +
                encodeURIComponent(elements[i].options[elements[i].selectedIndex].value));
          }
          else if (elements[i].type == "radio" && elements[i].checked ||
                   elements[i].type == "hidden" || elements[i].type == "submit")
          {
            if (elements[i].type == "hidden" && elements[i].name == "_charset_")
              arrayPush(values, "_charset_=UTF-8");
            else
            {
              arrayPush(values, encodeURIComponent(elements[i].name) + "=" +
                  encodeURIComponent(elements[i].value));
            }
          }
        }
      url = form.action + "?" + values.join("&");
      if (window.open && window.open(url, form.target || "_self"))
        return;
      if ((doc = form.document || form.ownerDocument) && doc.location)
      {
        doc.location.assign(url);
        return;
      }
      form.submit();
    }
  }
  return;
}

function item2Load(evt)
{
  var forms, form, elements, m, i, j, a, a2, p1, p2, text, tr;
  var prefix = ["ITEM-IMAGE-", "ITEM-NAME-"];

  if ((doc = document))
  {
    if ((form = arrayZero(snapElementsByTagName(doc, "FORM", "item2-form"))))
    {
      elements = snapElementsByClassName(form.elements);
      for (i = 0; i < elements.length; ++i)
        if ((elements[i]))
        {
          if (elements[i].type == "select-one")
          {
            elements[i]["m_default"] = elements[i].selectedIndex;
            pushEventListener(elements[i], "change", item2FormElementClick, false);
          }
          else if (elements[i].type == "radio")
          {
            pushEventListener(elements[i], "click", item2FormElementClick, false);
          }
          else if (elements[i].type == "submit")
          {
            elements[i].style.display = "none";
          }
        }
    }
    if ((forms = snapElementsByTagName(doc, "FORM", "form-add-cart")))
    {
      for (i = 0; i < forms.length; ++i)
      {
        if ((form = forms[i]) && forms[i].id &&
            (m = String(forms[i].id).match(/^ADD-CART-(\d+)$/)))
        {
          for (j = 0; j < prefix.length; ++j)
          {
            if ((a = doc.getElementById(prefix[j] + m[1])))
            {
              a["m_form"] = form;
              pushEventListener(a, "mouseover", item2AnchorMouseOver, false);
              if (j == 0)
              {
                a2 = a;
                if ((p1 = arrayZero(snapElementsByTagName(a, "IMG"))))
                  p1.title = "";
              }
              else if (j == 1)
              {
              /*  if ((p1 = arrayZero(snapElementsByTagName(form, "P"))) &&
                    (p2 = doc.createElement("P")))
                {
                  if (form.insertBefore(p2, p1))
                  {
                    text = doc.createTextNode(getContentText(a));
                    p2.appendChild(text);
                  }
                  // 価格を探す
                  if ((p2 = doc.getElementById("ITEM-PRICE-" + m[1])))
                  {
                    text = p2.cloneNode(true);
                    text.removeAttribute("ID");
                    form.insertBefore(text, p1);
                  }
                }*/
                form.style.position = "absolute";
                form.style.visibility = "hidden";
                a["m_a2"] = a2;
              }
            }
          }
        }
      }
      pushEventListener(doc.body, "mousedown", item2BodyMouseDown, false);
    }
  }
  return;
}

function item2BodyMouseDown(evt)
{
  var e, old_form;
  if (evt || (evt = window.event))
  {
    old_form = item2AnchorMouseOver["m_form"];
    if (old_form)
    {
      for (e = evt.target || evt.srcElement; e; e = e.parentNode)
      {
        if (e == old_form)
          return;
      }
      delete item2AnchorMouseOver["m_form"];
      old_form.style.visibility = "hidden";
    }
  }
  return;
}

function item2AnchorMouseOver(evt)
{
  var a, old_form, form, point;
  if ((evt || (evt = window.event)) &&
      (a = getAncestorElement(evt.target || evt.srcElement, "A")) &&
      (form = a["m_form"]))
  {
    old_form = item2AnchorMouseOver["m_form"];

    if (!old_form || old_form != form)
    {
      delete item2AnchorMouseOver["m_form"];

      a["m_a2"] && (a = a["m_a2"]);
      point = {left: 0, top: 0};
      getAbsoluteOrigin(a, point);

      form.style.left = (point.left + 2) + "px";
      form.style.top = (point.top + a.offsetHeight - 28) + "px";
      form.style.visibility = "visible";
      item2AnchorMouseOver["m_form"] = form;

      if (old_form)
        old_form.style.visibility = "hidden";
    }
  }
  return;
}

pushEventListener(this, "load", item2Load, false);
