﻿// JScript File

function xmlSelectNodes(xmlDoc, xPath)
{
    if(!xmlDoc || !xPath || xPath.length == 0)
        return null;

    if(xPath.charAt(0) == '/')
    {
        if(xPath.length == 1)
            return null;
        xPath = xPath.substring(1, xPath.length);
    }
 
    var index = xPath.indexOf('/');
    var rootName = "";
    
    if(index == -1)
    {
        rootName = xPath;
        xPath = "";
    }
    else if(index == 0)
    {
        return null;
    }
    else
    {
        rootName = xPath.substring(0, index);
        if(index == xPath.length-1)
            xPath = "";
        else
            xPath = xPath.substring(index+1, xPath.length);
    }

    var nodes = xmlDoc.getElementsByTagName(rootName).item(0);
    
    if(!nodes)
        return null;
        
    nodes = nodes.childNodes;
    
    if(!nodes)
        return null;

    while(xPath.length > 0)
    {
        index = xPath.indexOf('/');
        var nextName = "";
        if(index == -1)
        {
            nextName = xPath;
            xPath = "";
        }
        else if(index == 0)
        {
            return null;
        }
        else
        {
            nextName = xPath.substring(0, index);
            if(index == xPath.length-1)
                xPath = "";
            else
                xPath = xPath.substring(index+1, xPath.length);
        }
        
        var found = false;
        
        for(var i = 0; i < nodes.length; i++)
        {
            if(nodes[i].tagName == nextName)
            {
                nodes = nodes[i].childNodes;
                found = true;
                break;
            }
        }
        
        if(found == false)
            return null;
    }
    
    return nodes;
}
