// Pavan Malji - 20-Mar-2009

var SUBNAVIGATION_XML = "/NUCLEUS/nucleus/XBackup/xml/subnavigation.xml";

var FOLDERTYPES = new Array("TOPIC", "JSPTOPIC", "ASPTOPIC", "PHPTOPIC");

var WEBSITE_ROOT_OID = "1";
var MAX_SUBNAV_LEVEL = 1;

var OBJECT = "object";
var NULL = "null";
var EMPTY = "";

var OID = "oid";
var TYPE = "type";
var TITLE = "title";
var SUBTITLE = "subtitle";
var URL = "url";
var IS_SUBNAV_ROOT = "nuc_subnavigation_root";
var HIDDEN = "nuc_hide_node";
var ORDER = "nuc_subnavigation_order";

var xmlDOM = null;

function getNode(oid) {
    var objectArray = xmlDOM.getElementsByTagName(OBJECT);

    for (var i = 0; i < objectArray.length; i++) {
        var currentOID = getNodeChildValue(objectArray[i], OID);

        if (currentOID == oid) {
            return objectArray[i];
        }
    }
    return null;
}

function getNodeChildValue(currentObject, node) {
    try {
        return currentObject.getElementsByTagName(node)[0].childNodes[0].nodeValue;
    }
    catch (e) { }

    return NULL;
}

function getNodeAttributeValue(currentObject, attr) {
    try {
        return (currentObject.getAttributeNode(attr)).nodeValue;
    }
    catch (e) { }

    return NULL;
}

function isFolder(type) {
    for (var i = 0; i < FOLDERTYPES.length; i++) {
        if (type == FOLDERTYPES[i])
            return true;
    }

    return false;
}

function getNavigationRootObject(currentObject) {
    while (getNodeChildValue(currentObject, OID) != WEBSITE_ROOT_OID) {
        if (getNodeChildValue(currentObject, IS_SUBNAV_ROOT) == "true")
            break;
        currentObject = currentObject.parentNode;
    }

    
    
    return currentObject;
}

function isHidden(currentObject) {
    if (getNodeChildValue(currentObject, HIDDEN) == "true")
        return true;
    else
        return false;
}

function getSubnavigationTree(currentObject, currentLevel, activeNodeOID) {
    try {
        var subNav = EMPTY;
        var subtitle = EMPTY;
        var title = EMPTY;
        var url = EMPTY;
        var oid = EMPTY;
        var type = EMPTY;

        currentLevel++;
        
        var containedObjects = currentObject.getElementsByTagName(OBJECT);

        for (var i = 0; i < containedObjects.length; i++) {
            subtitle = getNodeChildValue(containedObjects[i], SUBTITLE);
            title = getNodeChildValue(containedObjects[i], TITLE);
            url = getNodeChildValue(containedObjects[i], URL);
            oid = getNodeChildValue(containedObjects[i], OID);
            type = getNodeChildValue(containedObjects[i], TYPE);

            if (subtitle == NULL)
                subtitle = title;

            if (!isHidden(containedObjects[i])) {
                if (oid == activeNodeOID) {
                    subNav = subNav + "<li class=\"active\">" + subtitle;
                }
                else {
                    subNav = subNav + "<li><a href=\"" + url + "\">" + subtitle + "</a>";
                }
            }

            if (isFolder(type) && currentLevel < MAX_SUBNAV_LEVEL ) {
                subNav = subNav + "<ul>" + getSubnavigationTree(containedObjects[i], currentLevel + 1, activeNodeOID) + "</ul>";
            }

            subNav = subNav + "</li>";
        }

        return subNav;
    }
    catch (e)
    { }
}

function createLoginSubnavigation() {
    document.getElementById("leftcolumn").innerHTML =   document.getElementById("leftcolumn").innerHTML +
                                                        "<div class=\"box\">" +
									                    "<div class=\"title\">NUCLEUS</div>" +
									                    "<div class=\"content\">" +
									                    "<ul>" +
									                    "<li>" +
									                    "<a href=\"/NUCLEUS/nucleus/Content/index.html\">NUCLEUS Home</a>" +
									                    "</li>" +
									                    "</ul>" +
									                    "</div>" +
									                    "</div>"
}

function createSubnavigation(oid) {
    try {
        xmlDOM = getXMLFileAsXMLDOM(SUBNAVIGATION_XML);
        var currentObject = null;
        var navigationRootObject = null;

        currentObject = getNode(oid);

        if (currentObject == null) {
            createLoginSubnavigation();
            return;
        }
        
        navigationRootObject = getNavigationRootObject(currentObject);

        var subnavigation = EMPTY;

        subnavigation = "<div class=\"box\">" +
                        "<div class=\"title\">" +
                        getNodeChildValue(navigationRootObject, TITLE) +
                        "</div>" +
                        "<div class=\"content\">" +
                        "<ul>" +
                        getSubnavigationTree(navigationRootObject, 0, oid) + 
                        "</ul>" + 
                        "</div>" +
                        "</div>";

        document.getElementById("leftcolumn").innerHTML = document.getElementById("leftcolumn").innerHTML + subnavigation;
    }
    catch (e) {
        alert("Subnavigation generation error.");
    }
}