docs: function(node) {
          var atomAttrib = {};
          var value = null;
          var nodes = null;
          var attval = null;
          var atomns = this.namespaces.atom;
          
          // atomAuthor*
          this.parsePersonConstructs(node, "author", atomAttrib);
          
          // atomCategory*
          nodes = this.getElementsByTagNameNS(node, atomns, "category");
          if (nodes.length > 0) {
              atomAttrib.categories = [];
          }
          for (var i=0, ii=nodes.length; i<ii; i++) {
              value = {};
              value.term = nodes[i].getAttribute("term");
              attval = nodes[i].getAttribute("scheme");
              if (attval) { value.scheme = attval; }
              attval = nodes[i].getAttribute("label");
              if (attval) { value.label = attval; }
              atomAttrib.categories.push(value);
          }
          
          // atomContent?
          nodes = this.getElementsByTagNameNS(node, atomns, "content");
          if (nodes.length > 0) {
              value = {};
              attval = nodes[0].getAttribute("type");
              if (attval) {
                  value.type = attval;
              }
              attval = nodes[0].getAttribute("src");
              if (attval) {
                  value.src = attval;
              } else {
                  if (value.type == "text" || 
                      value.type == "html" || 
                      value.type == null ) {
                      value.value = this.getFirstChildValue(
                                          node,
                                          atomns,
                                          "content",
                                          null
                                          );
                  } else if (value.type == "xhtml" ||
                             value.type.match(/(\+|\/)xml$/)) {
                      value.value = this.getChildEl(nodes[0]);
                  } else { // MUST be base64 encoded
                      value.value = this.getFirstChildValue(
                                          node,
                                          atomns,
                                          "content",
                                          null
                                          );
                  }
                  atomAttrib.content = value;
              }
          }
          
          // atomContributor*
          this.parsePersonConstructs(node, "contributor", atomAttrib);
          
          // atomId
          atomAttrib.id = this.getFirstChildValue(node, atomns, "id", null);
          
          // atomLink*
          nodes = this.getElementsByTagNameNS(node, atomns, "link");
          if (nodes.length > 0) {
              atomAttrib.links = new Array(nodes.length);
          }
          var oAtts = ["rel", "type", "hreflang", "title", "length"];
          for (var i=0, ii=nodes.length; i<ii; i++) {
              value = {};
              value.href = nodes[i].getAttribute("href");
              for (var j=0, jj=oAtts.length; j<jj; j++) {
                  attval = nodes[i].getAttribute(oAtts[j]);
                  if (attval) {
                      value[oAtts[j]] = attval;
                  }
              }
              atomAttrib.links[i] = value;
          }
          
          // atomPublished?
          value = this.getFirstChildValue(node, atomns, "published", null);
          if (value) {
              atomAttrib.published = value;
          }
          
          // atomRights?
          value = this.getFirstChildValue(node, atomns, "rights", null);
          if (value) {
              atomAttrib.rights = value;
          }
          
          // atomSource? -- not implemented
          
          // atomSummary?
          value = this.getFirstChildValue(node, atomns, "summary", null);
          if (value) {
              atomAttrib.summary = value;
          }
          
          // atomTitle
          atomAttrib.title = this.getFirstChildValue(
                                  node, atomns, "title", null
                                  );
          
          // atomUpdated
          atomAttrib.updated = this.getFirstChildValue(
                                  node, atomns, "updated", null
                                  );
          
          var featureAttrib = {
              title: atomAttrib.title,
              description: atomAttrib.summary,
              atom: atomAttrib
          };
          var geometry = this.parseLocations(node)[0];
          var feature = new OpenLayers.Feature.Vector(geometry, featureAttrib);
          feature.fid = atomAttrib.id;
          return feature;
      }