/***
    
ncBPFramework.MockDOM 1.3.1

See <http://ncBPFramework.com/> for documentation, downloads, license, etc.
    
(c) 2005 Bob Ippolito.  All rights Reserved.

***/
if (typeof(ncBPFramework) == "undefined") {
    var ncBPFramework = {};
}

if (typeof(ncBPFramework.MockDOM) == "undefined") {
    ncBPFramework.MockDOM = {};
}

ncBPFramework.MockDOM.NAME = "ncBPFramework.MockDOM";
ncBPFramework.MockDOM.VERSION = "1.3.1";

ncBPFramework.MockDOM.__repr__ = function () {
    return "[" + this.NAME + " " + this.VERSION + "]";
};

ncBPFramework.MockDOM.toString = function () {
    return this.__repr__();
};

ncBPFramework.MockDOM.createDocument = function () {
    var doc = new ncBPFramework.MockDOM.MockElement("DOCUMENT");
    doc.body = doc.createElement("BODY");
    doc.appendChild(doc.body);
    return doc;
};

ncBPFramework.MockDOM.MockElement = function (name, data) {
    this.nodeName = name.toUpperCase();
    if (typeof(data) == "string") {
        this.nodeValue = data;
        this.nodeType = 3;
    } else {
        this.nodeType = 1;
        this.childNodes = [];
    }
    if (name.substring(0, 1) == "<") {
        var nameattr = name.substring(
            name.indexOf('"') + 1, name.lastIndexOf('"'));
        name = name.substring(1, name.indexOf(" "));
        this.nodeName = name.toUpperCase();
        this.setAttribute("name", nameattr);
    }
};

ncBPFramework.MockDOM.MockElement.prototype = {
    createElement: function (nodeName) {
        return new ncBPFramework.MockDOM.MockElement(nodeName);
    },
    createTextNode: function (text) {
        return new ncBPFramework.MockDOM.MockElement("text", text);
    },
    setAttribute: function (name, value) {
        this[name] = value;
    },
    getAttribute: function (name) {
        return this[name];
    },
    appendChild: function (child) {
        this.childNodes.push(child);
    },
    toString: function () {
        return "MockElement(" + this.nodeName + ")";
    }
};
