// Copyright (c) 2007 koikikukan All Rights Reserved.
// http://wwwkoikikukan.com/
// License is granted if and only if this entire
// copyright notice is included. By Yujiro ARAKI.

// Ver1.00 initial version.

var buf = new Array();
var counter;
var depth;
var link = new Array();
var flg;

// 不要テキストノード削除(Mozilla対応)
function deleteTextNode(nodes) {
    for (var k = 0; k < nodes.length; k++) {
        if(nodes[k].nodeName == '#text') {
            nodes[k].parentNode.removeChild(nodes[k]);
        }
    }
}

// サブカテゴリー用（再帰呼び出し）
function addDTree(nodes){

    // サブカテゴリーが存在しない場合の対処
    if(!nodes[0]){
        return;
    }

    // 最初の要素がULの場合, class属性(tree)を設定
    for (var i = 0; i < nodes.length; i++) {
        if(nodes[i].nodeName == 'UL'|| nodes[i].nodeName == 'ul'){
            nodes[i].setAttribute('class', 'tree');
            nodes[i].setAttribute('className', 'tree');
            break;
        }
    }
    for (var i = 0; i < nodes.length; i++) {

        // 現在の要素がULの場合, 最後の子要素(LI)にclass属性(end)を設定
        if(nodes[i].nodeName == 'UL' || nodes[i].nodeName == 'ul'){
            var ulNodes = nodes[i].childNodes;

            // 不要テキストノード削除(Mozilla対応)
            deleteTextNode(ulNodes);

            // JavaScript エラー対処 2006.07.16
            if((ulNodes.length - 1) >= 0){

                // Mozilla 警告対処 2005.09.10
                if(ulNodes[ulNodes.length - 1].innerHTML){
                    ulNodes[ulNodes.length - 1].setAttribute('class', 'end');
                    ulNodes[ulNodes.length - 1].setAttribute('className', 'end');
                }
            }
        }

        if(nodes[i].nodeName == 'LI' || nodes[i].nodeName == 'li') {
            child = nodes[i].childNodes;
            href = child[0].getAttribute('href');
            link[depth] = ++counter;
            if(depth == 1) {
                d.add(counter, 0, child[0].innerHTML, href);
            } else {
                if(!link[depth-2]) {
                    d.add(counter, 1, '111', 'javascript: void(0);');
                } else {
                    d.add(counter, link[depth-2], child[0].innerHTML, href);
                }
            }
        }

        // 再帰処理
        var childNodes = nodes[i].childNodes;
        if(childNodes.length > 0){
            depth++;
            addDTree(childNodes);
            depth--;
        }
    }
}

// サブカテゴリーリストdTree化
function generateDTree(name){
    counter = 0;
    depth = 0;
    if(document.getElementById(name) == null) {
        return;
    }
    nodes = document.getElementById(name).childNodes;
    deleteTextNode(nodes);    // 不要テキストノード削除(Mozilla対応)
    addDTree(nodes);
    document.getElementById('dtree').innerHTML = d;
    if(document.getElementById('sd0')){
        document.getElementById('sd0').style.display = 'none';
    }
    if(document.getElementById('id0')){
        document.getElementById('id0').style.display = 'none';
    }
}

function addTagForTree(searchName, idName) {
  var h2 = document.getElementsByTagName('h2');
  for (i = 0, len = h2.length; i < len; i++) {
    if (h2[i].innerHTML == searchName) {
      var par = h2[i].parentNode;
      par.setAttribute('id', idName);
      var ul = par.getElementsByTagName('ul');
      ul[0].setAttribute('id', 'dtree');
      generateDTree(idName);
      return;
    }
  }
}

function addTagForTree2(searchName, idName) {
  var dt = document.getElementsByTagName('dt');
  var dd = document.getElementsByTagName('dd');
  var isIE = (document.documentElement.getAttribute("style") ==
              document.documentElement.style);
  for (i = 0, len = dt.length; i < len; i++) {
    if(isIE) {
      tmp = dt[i].innerHTML.replace(' ','');
    } else {
      tmp = dt[i].innerHTML;
    }
    if (tmp == searchName) {
      var par = dt[i].parentNode;
      dd[i].setAttribute('id', 'dtree');
      generateDTree('dtree');
      return;
    }
  }
}

function dtreeMaker(searchName, isdl) {
  var idName = searchName.replace(' ','');
  idName = 'dtree_' + idName;
  if (isdl) {
    addTagForTree2(searchName, idName);
  } else {
    addTagForTree(searchName, idName);
  }
}

