String type = mutEvent.getType();
if (type.equals("DOMNodeInserted"))
{
Element parent = (Element)mutEvent.getRelatedNode();
W3CMutationEventImpl w3cMutEvent = (W3CMutationEventImpl)mutEvent;
Node refNode = w3cMutEvent.getRefChild();
/* El target deber�a ser el nuevo nodo pero en este caso el nodo se obtiene a partir del node path
obtenido en el cliente a partir del nuevo nodo, si se us� un insertBefore el nuevo nodo ocupar�
el lugar (respecto al orden) del nodo usado como referencia al insertar (el refNode), por ello el servidor con dicho path
obtenemos el nodo de referencia lo cual es genial pues sabemos donde insertar.
Si se us� appendChild el path del nuevo nodo no existe en el servidor y el refNode ser� nulo, as� sabemos que se us� appendChild
(o insertBefore con referencia nula).
Este tipo de cosas son las usadas para formar el path enviado por el cliente y usado en getRefChild()
*/
// http://webfx.eae.net/dhtml/ieemu/htmlmodel.html
// Con getNewValue() obtenemos el markup como string del nuevo nodo, esto no es est�ndar pero nos vale.
String newValue = mutEvent.getNewValue();
DocumentFragment newNodeFragment = itsNatDoc.getItsNatDocumentTemplateVersion().parseFragmentToDocFragment(newValue,itsNatDoc);
Node newNode = newNodeFragment.getFirstChild();
parent.insertBefore(newNode,refNode); // refNode puede ser null
w3cMutEvent.setTargetNodeInserted((EventTarget)newNode); // De esta manera el usuario ver� el target de una forma est�ndar
}
else if (type.equals("DOMNodeRemoved"))
{
// El evento "DOMNodeRemoved" se procesa antes de que se haya quitado
// de forma efectiva el nodo, por lo que al servidor le llega el path del nodo a quitar (el target)
// La eliminaci�n ha de hacerse despu�s del despachado de listeners de acuerdo con el W3C DOM Events
}
else if (type.equals("DOMAttrModified"))
{
Attr attr = (Attr)mutEvent.getRelatedNode();
Element targetElem = (Element)mutEvent.getTarget();
int changeType = mutEvent.getAttrChange();
switch(changeType)
{
case MutationEvent.ADDITION:
String attrName = mutEvent.getAttrName();
DOMUtilInternal.setAttribute(targetElem,attrName,mutEvent.getNewValue());
attr = targetElem.getAttributeNode(attrName);
W3CMutationEventImpl w3cMutEvent = (W3CMutationEventImpl)mutEvent;
w3cMutEvent.setRelatedNodeAddedAttr(attr);
break;
case MutationEvent.MODIFICATION:
attr.setValue(mutEvent.getNewValue());
break;
case MutationEvent.REMOVAL: