//Auto-generated by kalyptus. DO NOT EDIT.
namespace DOM {
	using Kimono;
	using System;
	using Qyoto;
	/// <remarks>
	///  Introduced in DOM Level 2
	///  The MutationEvent interface provides specific contextual information
	///  associated with Mutation events.
	///  </remarks>		<short>    Introduced in DOM Level 2 </short>
	[SmokeClass("DOM::MutationEvent")]
	public class MutationEvent : DOM.Event, IDisposable {
 		protected MutationEvent(Type dummy) : base((Type) null) {}
		protected new void CreateProxy() {
			interceptor = new SmokeInvocation(typeof(MutationEvent), this);
		}
		/// <remarks>
		///  An integer indicating in which way the Attr was changed.
		///  ADDITION: The Attr was just added.
		///  MODIFICATION: The Attr was modified in place.
		///  REMOVAL: The Attr was just removed.
		///      </remarks>		<short>    An integer indicating in which way the Attr was changed.</short>
		public enum attrChangeType {
			MODIFICATION = 1,
			ADDITION = 2,
			REMOVAL = 3,
		}
		// DOM::MutationEvent* MutationEvent(DOM::MutationEventImpl* arg1); >>>> NOT CONVERTED
		public MutationEvent() : this((Type) null) {
			CreateProxy();
			interceptor.Invoke("MutationEvent", "MutationEvent()", typeof(void));
		}
		public MutationEvent(DOM.MutationEvent other) : this((Type) null) {
			CreateProxy();
			interceptor.Invoke("MutationEvent#", "MutationEvent(const DOM::MutationEvent&)", typeof(void), typeof(DOM.MutationEvent), other);
		}
		public MutationEvent(DOM.Event other) : this((Type) null) {
			CreateProxy();
			interceptor.Invoke("MutationEvent#", "MutationEvent(const DOM::Event&)", typeof(void), typeof(DOM.Event), other);
		}
		/// <remarks>
		///  relatedNode is used to identify a secondary node related to a mutation
		///  event. For example, if a mutation event is dispatched to a node
		///  indicating that its parent has changed, the relatedNode is the changed
		///  parent. If an event is instead dispatched to a subtree indicating a node
		///  was changed within it, the relatedNode is the changed node. In the case
		///  of the DOMAttrModified event it indicates the Attr node which was
		///  modified, added, or removed.
		///      </remarks>		<short>    relatedNode is used to identify a secondary node related to a mutation  event.</short>
		public DOM.Node RelatedNode() {
			return (DOM.Node) interceptor.Invoke("relatedNode", "relatedNode() const", typeof(DOM.Node));
		}
		/// <remarks>
		///  prevValue indicates the previous value of the Attr node in
		///  DOMAttrModified events, and of the CharacterData node in
		///  DOMCharDataModified events.
		///      </remarks>		<short>    prevValue indicates the previous value of the Attr node in  DOMAttrModified events, and of the CharacterData node in  DOMCharDataModified events.</short>
		public DOM.DOMString PrevValue() {
			return (DOM.DOMString) interceptor.Invoke("prevValue", "prevValue() const", typeof(DOM.DOMString));
		}
		/// <remarks>
		///  newValue indicates the new value of the Attr node in DOMAttrModified
		///  events, and of the CharacterData node in DOMCharDataModified events.
		///      </remarks>		<short>    newValue indicates the new value of the Attr node in DOMAttrModified  events, and of the CharacterData node in DOMCharDataModified events.</short>
		public DOM.DOMString NewValue() {
			return (DOM.DOMString) interceptor.Invoke("newValue", "newValue() const", typeof(DOM.DOMString));
		}
		/// <remarks>
		///  attrName indicates the name of the changed Attr node in a
		///  DOMAttrModified event.
		///      </remarks>		<short>    attrName indicates the name of the changed Attr node in a  DOMAttrModified event.</short>
		public DOM.DOMString AttrName() {
			return (DOM.DOMString) interceptor.Invoke("attrName", "attrName() const", typeof(DOM.DOMString));
		}
		/// <remarks>
		///  attrChange indicates the type of change which triggered the
		///  DOMAttrModified event. The values can be MODIFICATION, ADDITION, or
		///  REMOVAL.
		///      </remarks>		<short>    attrChange indicates the type of change which triggered the  DOMAttrModified event.</short>
		public ushort AttrChange() {
			return (ushort) interceptor.Invoke("attrChange", "attrChange() const", typeof(ushort));
		}
		/// <remarks>
		///  The initMutationEvent method is used to initialize the value of a
		///  MutationEvent created through the DocumentEvent interface. This method
		///  may only be called before the MutationEvent has been dispatched via the
		///  dispatchEvent method, though it may be called multiple times during that
		///  phase if necessary. If called multiple times, the final invocation takes
		///  precedence.
		/// <param> name="typeArg" Specifies the event type.
		/// </param><param> name="canBubbleArg" Specifies whether or not the event can bubble.
		/// </param><param> name="cancelableArg" Specifies whether or not the event's default action can be prevented.
		/// </param><param> name="relatedNodeArg" Specifies the Event's related Node.
		/// </param><param> name="prevValueArg" Specifies the Event's prevValue attribute. This value may be null.
		/// </param><param> name="newValueArg" Specifies the Event's newValue attribute. This value may be null.
		/// </param><param> name="attrNameArg" Specifies the Event's attrName attribute. This value may be null.
		/// </param><param> name="attrChangeArg" Specifies the Event's attrChange attribute
		/// </param>     </remarks>		<short>    The initMutationEvent method is used to initialize the value of a  MutationEvent created through the DocumentEvent interface.</short>
		public void InitMutationEvent(DOM.DOMString typeArg, bool canBubbleArg, bool cancelableArg, DOM.Node relatedNodeArg, DOM.DOMString prevValueArg, DOM.DOMString newValueArg, DOM.DOMString attrNameArg, ushort attrChangeArg) {
			interceptor.Invoke("initMutationEvent#$$####$", "initMutationEvent(const DOM::DOMString&, bool, bool, const DOM::Node&, const DOM::DOMString&, const DOM::DOMString&, const DOM::DOMString&, unsigned short)", typeof(void), typeof(DOM.DOMString), typeArg, typeof(bool), canBubbleArg, typeof(bool), cancelableArg, typeof(DOM.Node), relatedNodeArg, typeof(DOM.DOMString), prevValueArg, typeof(DOM.DOMString), newValueArg, typeof(DOM.DOMString), attrNameArg, typeof(ushort), attrChangeArg);
		}
		~MutationEvent() {
			interceptor.Invoke("~MutationEvent", "~MutationEvent()", typeof(void));
		}
		public new void Dispose() {
			interceptor.Invoke("~MutationEvent", "~MutationEvent()", typeof(void));
		}
	}
}
