// 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.
// Ver1.02 corresponds to MTSubCategories tag.
// Ver1.03 2005.09.10 fix bug for Mozilla.
// Ver1.04 2005.10.26 fix bug for empty data.
// Ver1.04en 2005.11.21
// Ver1.05en 2006.01.26 corresponds to Serene Bach and sb.
// Ver1.06en 2006.07.16 fix JavaScript error.

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

    if(!nodes[0]){
        return;
    }

    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++) {

        if(nodes[i].nodeName == 'UL' || nodes[i].nodeName == 'ul'){
            var ulNodes = nodes[i].childNodes;

            deleteTextNode(ulNodes);

            if((ulNodes.length - 1) >= 0){
                if(ulNodes[ulNodes.length - 1].innerHTML){
                    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(){
    if(document.getElementById('categories') == null) {
        return;
    }
    nodes = document.getElementById('categories').childNodes;
    deleteTextNode(nodes);
    setClass(nodes);
}

function generateTreeForTreeStructure(name){
    if(document.getElementById(name) == null) {
        return;
    }
    nodes = document.getElementById(name).childNodes;
    deleteTextNode(nodes);
    setClass(nodes);
}

function generateNormalTree(name) {
    if(document.getElementById(name) == null) {
        return;
    }
    nodes = document.getElementById(name).childNodes;

    deleteTextNode(nodes);

    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');
        }
        list = nodes[i].getElementsByTagName('li');

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

