if (typeof(Element) != "undefined") {
    Element.prototype.getDescendantWithClass = function (class_) {
        var result = null;
        var stack = new Array();

        for (var i = 0; i < this.childNodes.length; i++)
            stack.unshift(this.childNodes[i]);

        while (result == null && stack.length > 0) {
            var node = stack.shift();

            if (node instanceof Element) {
                if (nodeHasClass(node, class_))
                    result = node;
                else {
                    for (var i = 0; i < node.childNodes.length; i++)
                        stack.unshift(node.childNodes[i]);
                }
            }
        }

        return result;
    }
}

function DOMQuery(element) {
    this.element = element;

    this.getDescendantWithClass = function (class_) {
        var result = null;
        var stack = new Array();

        for (var i = 0; i < this.element.childNodes.length; i++)
            stack.unshift(this.element.childNodes[i]);

        while (result == null && stack.length > 0) {
            var node = stack.shift();

            if (node.nodeType == "1") {
                if (nodeHasClass(node, class_))
                    result = node;
                else {
                    for (var i = 0; i < node.childNodes.length; i++)
                        stack.unshift(node.childNodes[i]);
                }
            }
        }

        return result;
    }
}

