// Copyright (c) 2005 koikikukan All Rights Reserved.
// http://yujiro.dyndns.com/blog/koikikukan/
// License is granted if and only if this entire
// copyright notice is included. By Yujiro ARAKI.

// Ver1.00 initial version.
// Ver1.01 corresponds to tree structure.

// 不要テキストノード削除(Mozilla対応)
function deleteTextNode(nodes) {
    for (var k = 0; k < nodes.length; k++) {
        if(nodes[k].nodeName == '#text') {
            nodes[k].parentNode.removeChild(nodes[k]);
        }
    }
}

// サブカテゴリー用（再帰呼び出し）
function setClass(nodes){

    // 最初の要素がULの場合, class属性(tree)を設定
    if(nodes[0].nodeName == 'UL'|| nodes[0].nodeName == 'ul'){
        nodes[0].setAttribute('class', 'tree');
        nodes[0].setAttribute('className', 'tree');
    }

    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);

            ulNodes[ulNodes.length - 1].setAttribute('class', 'end');
            ulNodes[ulNodes.length - 1].setAttribute('className', 'end');
        }

        // 再帰処理
        var childNodes = nodes[i].childNodes;
        if(childNodes.length > 0){
            setClass(childNodes);
        }
    }
}

// サブカテゴリーリスト用ツリー化
function generateSubcategoryTree(){
    nodes = document.getElementById('categories').childNodes;
    deleteTextNode(nodes);    // 不要テキストノード削除(Mozilla対応)
    setClass(nodes);
}

// ツリー構造リスト用ツリー化
function generateTreeForTreeStructure(name){
    nodes = document.getElementById(name).childNodes;
    deleteTextNode(nodes);    // 不要テキストノード削除(Mozilla対応)
    setClass(nodes);
}

// 一般リスト用ツリー化
function generateNormalTree(name) {
    nodes = document.getElementById(name).childNodes;
    // 不要テキストノード削除(Mozilla対応)
    deleteTextNode(nodes);

    for (var i = 0; i < nodes.length; i++) {

        // ul要素へのクラス属性追加
        if(nodes[i].nodeName == 'UL'|| nodes[i].nodeName == 'ul'){
            nodes[i].setAttribute('class', 'tree');
            nodes[i].setAttribute('className', 'tree');
        }
        list = nodes[i].getElementsByTagName('li');

        // li要素にclass属性(tree)を設定
        for (var j = 0; j < list.length; j++) {
            list[j].setAttribute('className', 'tree');
            list[j].setAttribute('class', 'tree');
            list[list.length - 1].setAttribute('className', 'end');
            list[list.length - 1].setAttribute('class', 'end');
        }

        // マーク付与
//        nodes[0].innerHTML = '○' + nodes[0].innerHTML;
    }
}
