// Test which DOM2 Interfaces are implemented
var implements = new Object();

// DOM 2 Core
implements["DOMImplementation"] = (this.DOMImplementation != undefined)
implements["DocumentFragment"] = (this.DocumentFragment != undefined)
implements["Document"] = (this.Document != undefined);
implements["Node"]     = (this.Node != undefined);
implements["NodeList"]     = (this.NodeList != undefined);
implements["NamedNodeMap"]     = (this.NamedNodeMap != undefined);
implements["CharacterData"]  = (this.CharacterData != undefined);
implements["Attr"]  = (this.Attr != undefined);
implements["Element"]  = (this.Element != undefined);
implements["Text"]  = (this.Text != undefined);
implements["Comment"]  = (this.Comment != undefined);
implements["CDATASection"]  = (this.CDATASection != undefined);
implements["DocumentType"]  = (this.DocumentType != undefined);
implements["Notation"]  = (this.Notation != undefined);
implements["Entity"]  = (this.Entity != undefined);
implements["EntityReference"]  = (this.EntityReference != undefined);
implements["ProcessingInstruction"]  = (this.ProcessingInstruction != undefined);

// DOM 2 Views
implements["AbstractView"]  = (this.AbstractView != undefined);
implements["DocumentView"]  = (this.DocumentView != undefined);

// DOM 2 Events
implements["EventTarget"]  = (this.EventTarget != undefined);
implements["EventListener"]  = (this.EventListener != undefined);
implements["Event"]  = (this.Event != undefined);
implements["DocumentEvent"]  = (this.DocumentEvent != undefined);
implements["UIEvent"]  = (this.UIEvent != undefined);
implements["MouseEvent"]  = (this.MouseEvent != undefined);
implements["MutationEvent"]  = (this.MutationEvent != undefined);

// DOM 2 Style Sheets
implements["StyleSheet"]  = (this.StyleSheet != undefined);
implements["StyleSheetList"]  = (this.StyleSheetList != undefined);
implements["MediaList"]  = (this.MediaList != undefined);
implements["LinkStyle"]  = (this.LinkStyle != undefined);
implements["DocumentStyle"]  = (this.DocumentStyle != undefined);

// DOM 2 CSS
implements["CSSStyleSheet"]  = (this.CSSStyleSheet != undefined);
implements["CSSRuleList"]  = (this.CSSRuleList != undefined);
implements["CSSRule"]  = (this.CSSRule != undefined);
implements["CSSStyleRule"]  = (this.CSSStyleRule != undefined);
implements["CSSMediaRule"]  = (this.CSSMediaRule != undefined);
implements["CSSFontFaceRule"]  = (this.CSSFontFaceRule != undefined);
implements["CSSPageRule"]  = (this.CSSPageRule != undefined);
implements["CSSImportRule"]  = (this.CSSImportRule != undefined);
implements["CSSCharsetRule"]  = (this.CSSCharsetRule != undefined);
implements["CSSUnknownRule"]  = (this.CSSUnknownRule != undefined);
implements["CSSStyleDeclaration"]  = (this.CSSStyleDeclaration != undefined);
implements["CSSStyleDeclaration"]  = (this.CSSStyleDeclaration != undefined);
implements["CSSValue"]  = (this.CSSValue != undefined);
implements["CSSPrimitiveValue"]  = (this.CSSPrimitiveValue != undefined);
implements["CSSValueList"]  = (this.CSSValueList != undefined);
implements["RGBColor"]  = (this.RGBColor != undefined);
implements["Rect"]  = (this.Rect != undefined);
implements["Counter"]  = (this.Counter != undefined);
implements["ViewCSS"]  = (this.ViewCSS != undefined);
implements["DocumentCSS"]  = (this.DocumentCSS != undefined);
implements["DOMImplementationCSS"]  = (this.DOMImplementationCSS != undefined);
implements["ElementCSSInlineStyle"]  = (this.ElementCSSInlineStyle != undefined);
implements["CSS2Properties"]  = (this.CSS2Properties != undefined);

// DOM 2 Traversal
implements["NodeIterator"]  = (this.NodeIterator != undefined);
implements["NodeFilter"]  = (this.NodeFilter != undefined);
implements["TreeWalker"]  = (this.TreeWalker != undefined);
implements["DocumentTraversal"]  = (this.DocumentTraversal != undefined);

// DOM 2 Range
implements["Range"]  = (this.Range != undefined);
implements["DocumentRange"]  = (this.DocumentRange != undefined);

// Web Apps 1
implements["GetElementsByClassName"] = (this.GetElementsByClassName != undefined);

