In questi giorni ho fatto un pò di aggiornamenti:
ve li illustrerò "brevemente", visto che il grosso della documentazione è sempre qui.
E qui lo zip.


ExtendDOM
La principale modifica al core della libreria, extendDOM.js, è che ora i prototipi non sono applicati al costruttore Object, bensì direttamente ad HTMLElement. Il precedente approccio andava a intaccare non solo gli oggetti HTML ma anche tutti gli altri oggetti.
Ad essere estesi sono anche document e window ( attenzione: non i costruttori Document e Window ).
Un grazie a Jason Karl Davis per la dritta su come rendere la libreria compatibile con safari.

E' stato eliminato il metodo addToEvent ( l'addEventListener crossbrowser ), poichè questo è stato rinominato migliorato e spostati in un modulo dedicato agli eventi ( evt.js ).

Per aggiungere in una sola volta più metodi, è ora possibile utilizzare la funzione DOM.extend al posto di richiamare più volte ExtendDOM.

codice:
DOM.extend({
  hide:function() { this.style.display="none"; },
  show:function() { this.style.display="block"; }
});
Oltre a ciò è disponibile una funzione ___extend___ che, se applicata a un qualsiasi costruttore, lo rende estendibile.

codice:
Costruttore.extend=___extend___;

Costruttore.extend({
  dimmiProprieta:function(property) { alert(this[property]); },
  eseguiTuoMetodo:function(method) { this[method](); }
});
La funzione extend è già applicata di default a diversi costruttori nativi, tra cui String, Array, Number ecc...



Utility
Questo modulo fa parte del core: senza di esso alcuni moduli potrebbero non funzionare.
Per adesso è un pò ( parecchio ) scarno.
L'unica funzionalità è l'oggetto browser, che permette di verificare il browser in uso:

codice:
if(browser.ie) {} //Internet explorer
if(browser.ff) {} //Firefox
if(browser.moz) {} //Browser basati su Mozilla
if(browser.ns) {} //Netscape
if(browser.op) {} //Opera
if(browser.saf) {} //Safari

EasyDOM
Contiene una serie metodi che facilitano l'interazione col dom.
Oltre alle già descritte caratteristiche, sono stati aggiunti tre metodi che sostituiscono il vecchio get_.
Sono:
id_(id) prende elemento da id
tag_(tag) prende elementi da tag
at_(attr, value, tags, useIndexOf) prende elementi da attributo

Se usati da soli, senza un oggetto davanti ( come metodi di window in pratica ), la ricerca viene effettuata all'interno del documento.
codice:
var elementi=id_("elem").at_("class", "myLinks", "a");
var elemento=document.id_("elem");
Ajax
Il vecchio modulo megutility è stato definitivamente cancellato e rimpiazzato dal file ajax.js.
Il nome della funzione è sempre innerAJAX e i cambiamenti maggiori sono 2:
1)I parametri sono ora scritti nella forma { method:"post", url:"pagina.php" }, in modo da facilitarne l'inserimento;
2)E' ora possibile fare il preload di qualsiasi file, che sia immagine, animazione, video ecc...
Dopo il caricamento, l'oggetto verrà caricato in un tag object ( nei browser decenti ) o in un iframe ( soluzione 1.0 per IE... )
codice:
document.getElementById("elem").innerAJAX({
   method:"post",
   url:"http://www.sitomega.net/spaceInvaders.swf",
   type:"application/x-shockwave-flash",
   size:[450, 300]
});


Evt
Modulo dedicato agli eventi.
Pre creare un evento "esteso" è necessario utilizzare il costruttore _Event, che prende come argomento l'oggetto evento W3C.
codice:
id_("elem").onclick=function(e) {
  e=new _Event(e);
  alert(e.pageX());
  alert(e.target());
}
Notare che pageX e target non sono proprietà ma metodi, in modo che i valori vengano calcolati effettivamente solo quando servono.
Oltre a ciò i metodi vengono applicati non nella stessa funzione del costruttore ma attraverso prototype, in modo da garantire la massima velocità di esecuzione.

Se si vuole accedere all'oggetto evento vero e proprio è necessario usare l'oggetto evt:
codice:
id_("elem").onclick=function(e) {
  e=new _Event(e);
  alert(e.evt.type);
}
Passiamo ai metodi del DOM. Il metodo addToEvent è stato sostituito da addListener. Ovviamente non cambia solo il nome
Oltre al fatto che ora è più compatibile, sono stati aggiunti altri metodi che permettono di manipolare i listener.
rremoveListener(type, listener) rimuove un listener
removeListeners(type) rimuove tutti i listener associati ad un evento
callListeners(type) esegue tutte le funzioni che ascoltano l'evento


Infine è stata inclusa e leggermente riadattata la soluzione di Andrea Giammarchi ( ovviamente con relativi crediti nella pagina di documentazione e nel codice stesso ) riguardo l'evento DOMContentLoaded crossbrowser. Ero indeciso tra questa soluzione e addDOMLoadEvent, alla fine ho scelto questa perchè è molto più leggera.
codice:
DOM.oncontent(function() { alert("Il workaround del defer può questo ed altro..."); });
DOM.oncontent(function() { alert("Ne puo aggiungere una, due, tre, quattro ecc..."); });

CSStyle e altri
Questi magari li aggiungo dopo... Comunque c'è già la documentazione.