rem: return node.getAttribute(s); 
add: try { return node.getAttribute(s); } catch(err) {    var value = node.attributes[s]; if(value != null) { return value.nodeValue; } } 
context: Nevow.Athena.getAttribute = function(node, namespaceURI, namespaceIdentifier, localName) {    if (node.hasAttributeNS) {        if (node.hasAttributeNS(namespaceURI, localName)) {            return node.getAttributeNS(namespaceURI, localName);        } else if (node.hasAttributeNS(namespaceIdentifier, localName)) {            return node.getAttributeNS(namespaceIdentifier, localName);        }    }    if (node.hasAttribute) {        var r = namespaceURI + ':' + localName;        if (node.hasAttribute(r)) {            return node.getAttribute(r);        }    }    if (node.getAttribute) {        var s = namespaceIdentifier + ':' + localName;        return node.getAttribute(s);    }    return null;};
meta: 1565	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/1565/eb70b28d29636c0bfbffaa064a4bf7d3fba93fb8/athena.js/buggy/nevow/athena.js