/**
* Contient la defintion de la classe de base des handlers. Elle stocks les paramettres communs a tous les handler et definit leur accesseurs (ces parametres ne devarit pas etre modifies.
*/

IAD_PageController.Handler = Class.create(
{
    initialize: function(elt, pc)
    {
        this.getElement = function ()
        {
            return elt;
        }
        var _eltIntId = null;
        /**
        * Cette methode cherche a recuperer la partie nombre entier qui se trouve a la fin de
        * l'identifiant d'un element. Dans beaucoup de cas de figure cela represente l'identifiant dans
        * la base de donnee
        */
        this.getElementIntId = function()
        {
            if(!_eltIntId)
            {
                var matches = null;
                if(matches = elt.id.match(new RegExp("[1-9][0-9]*$")))
                {
                    _eltIntId = matches[0];
                }
            }

            return _eltIntId;
        }

        this.getPageController = function ()
        {
            return pc;
        }

        this.getId = function()
        {
            return elt.id;
        }
        /**
        * Retourne la valeur a utiliser pour determiner l'action qui a provoque la soumission
        */
        this._getSubmittedBy = function()
        {
            return elt.value ? elt.value : elt.name;
        }

        this.setValue = function(data)
        {
            //alert("IAD_PageController.Handler.setValue for " + elt.id);
            for(var id in data)
            {
                //alert("IAD_PageController.Handler.setValue for " + elt.id + ", key="+id + ", value="+data[id]);
                elt[id] = data[id];
            }
        }

        this.handleEvent = function(evt)
        {
            if(!pc.isProd())
            {
                pc.reportError("IAD_PageController.Handler.handleEvent() : event " + evt.type + " not handled for " + elt.id);
            }
            evt.stop();
        }
        this.disable = function(v)
        {
            v ? elt.enable() : elt.disable(v);

            return this;
        }
        this.isActive = function(evt)
        {
            return !elt.hasClassName("Off");
        }
        this.isInactive = function(evt)
        {
            return elt.hasClassName("Off");
        }
    }
}
);

