var Event = {}

/**
 * @constructor
 * Construit un nouvel objet Event.
 *
 * @class Gestion des évènements.
 * <br><i>Compatibilité: (IE5+, FireFox 1.0+, Opera7.46+).</i>
 *
 * @param {HTMLInputElement} textBox le champs de saisie à auto-compléter
 * @param {String} url l'url d'appel du serveur permettant de récupérer la liste des mots existant
 * @return un nouveau AutoCompletion
 *
 * @author Liorean (liorean@user.bip.net)
 * @author Tim Morgan (http://www.timmorgan.info)
 * @author Maurice Montgénie (maurice.montgenie@cgss-guyane.fr)
 * @version $Revision: 1.1 $ $Date: 2005/01/06 12:59:12 $
 */
function Event() {
    throw "Event est une classe statique !";
}


/**
 * Ajoutes un évènement à un objet.
 *
 * @param {Object} obj l'objet
 * @param {String} evType le type d'évènement à ajouter
 * @param {Function} fn la fonction handler à enregistrer
 * @return vrai si l'ajout c'est bien passé, faux sinon
 * @type boolean
 */
Event.add = function(obj, evType, fn) {
    if (obj.addEventListener) {
        obj.addEventListener(evType, fn, false);
        return true;

    } else if (obj.attachEvent) {
        return obj.attachEvent('on'+evType, fn);

    } else {
        return false;
    }
}

/**
 * Ajoutes un gestionnaire d'évènement <i>onLoad</i>.
 *
 * @param {Function} f la fonction
 * @return vrai si le navigateur respecte les normes du W3C, faux sinon
 * @type boolean
 */
Event.addOnLoad = function(f) {
    Event.col[Event.col.length] = f;  // Add event handler to collection

    if (Event.isW3CCompliant()) {
        window.addEventListener('load', f, false);  // Apply event handler

    } else if (!Event.ieSet) {
        if (Event.isReadyStateSupported()) {
            document.onreadystatechange = Event.onload;  // Add In event handler handler
        }
    }

    Event.ieSet = true;

    return Event.isW3CCompliant();
}

/**
 * Gères plusieurs onload handlers dans IE.
 *
 * @private
 */
Event.onload = function(){
    var m=/mac/i.test(navigator.platform);  // Detect whether mac

    if (Event.isReadyStateSupported()) { // If supported
        if (m?document.readyState!='interactive':document.readyState!='complete') { // And not already finished
            return;
        }
    }

    for (var i=0,f;(f=(i<Event.col.length)?Event.col[i]:null);i++) {  // For all event handlers
        f();  // Run event handler
    }

    return;
}

/**
 * Indique si le navigateur respecte les normes du W3C.
 *
 * @return vrai ou faux
 * @type boolean
 */
Event.isW3CCompliant = function() {
    return (typeof window.addEventListener != 'undefined');
}

/**
 * Indique si la propriété <i>document.readyState</i> est définie dans le navigateur.
 *
 * @return vrai ou faux
 * @type boolean
 */
Event.isReadyStateSupported = function() {
    return (typeof document.readyState != 'undefined');
}

/**
 * Indique si le gestionnaire d'évènement à déjà été positionné.
 *
 * @type boolean
 * @private
 */
Event.ieSet = false;  // Variable to say whether event handler is set or not

/**
 * Tableau des gestionnaires d'évènements.
 *
 * @type Array
 * @private
 */
Event.col = new Array();
