var getId = function(id) {
    if (typeof id == "string") {
        id = document.getElementById(id);
    }
    return id;
};

var getElements = function(classname, tagname, root) {
    if (!root) {
        root = document;
    } else if (typeof root == "string") {
        root = getId(root);
    }
    if (!tagname) {
        tagname = "*";
    }
    var all = root.getElementsByTagName(tagname);
    if (!classname) {
        return all;
    }
    var elements = [];
    for (var i = 0; i < all.length; i += 1) {
        var element = all[i];
        if (isMember(element, classname)) {
            elements.push(element);
        }
    }
    return elements;
    function isMember(element, classname) {
        var classes = element.className;
        if(!classes) {
            return false;
        }
        if (classes == classname) {
            return true;
        }
        var whitespace = /\s+/;
        if (!whitespace.test(classes)) {
            var c = classes.split(whitespace);
            for (var i = 0; i < c.length; i += 1) {
                if (c[i] == classname) {
                    return true;
                }
            }
        }
        return false;
    }
};

