/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "domstubs.idl"

interface nsIContent;

/**
 * The nsIDOMHTMLCollection interface is an interface to a collection
 * of [X]HTML elements.
 *
 * This interface is trying to follow the DOM Level 2 HTML specification:
 * http://www.w3.org/TR/DOM-Level-2-HTML/
 *
 * with changes from the work-in-progress WHATWG HTML specification:
 * http://www.whatwg.org/specs/web-apps/current-work/
 */

[scriptable, uuid(b7ccd7b3-86aa-4322-a50c-b972643bb662)]
interface nsIDOMHTMLCollection : nsISupports
{
  readonly attribute unsigned long    length;

  [getter,forward(getNodeAt)] nsIDOMNode    item(in unsigned long index);
  [getter,forward(getNamedItem)] nsIDOMNode namedItem(in DOMString name);

  /**
   * Get the node at the index.  Returns null if the index is out of bounds.
   */
  [noscript,notxpcom,nostdcall] nsIContent  getNodeAt(in unsigned long index);

  /**
   * Get the node for the name.  Returns null if no node exists for the name.
   */
  [noscript,notxpcom,nostdcall] nsISupports getNamedItem(in DOMString name,
                                                         out nsWrapperCachePtr cache);
};
