/**
* Contient la defintion de la classe de base des controles (elements de formulaire, qui ont tous la propriete form).
* D'autres type d'objet n'etant pas reellement des controles peuvent aussi faire partie d'un formulaire et se comporter comme des controles (un lien qui soumet au click, une image qui se comporte comme un bouton). Pour ces cas de figure pour obtenir la soumission il faut appeler getTheForm.submit() car l'evenmant onsubmit ne se produit pas pour le formulaire.
*/

IAD_PageController.ControlHandler = IAD_Class.create("ControlHandler", IAD_PageController.Handler,
    {
        initialize: function($super, elt, pc)
        {
            //alert("ControlHandler.initialize");
            var _formController = null;
            $super(elt, pc);
            this.onFormHandlerSet = function()
            {
                return this;
            }
            this.setFormHandler = function (fc)
            {
                _formController = fc;
                this.onFormHandlerSet();

                return this;
            }
            this.getFormHandler = function ()
            {
                return _formController;
            }
            this.getAjaxRequesHandler = function()
            {
                return _formController.getAjaxRequesHandler();
            }
            /**
            * Cette methode est appelee au debut du handler de click pour demander la confirmation de l'action si la propriete confirmation est definie
            */
            this._confirm = function(evt)
            {
                return (Object.isUndefined(elt.confirmation) || elt.confirmation=="") ? true : window.confirm(elt.confirmation);
            }
            this.handleEvent = function(evt)
            {
                if(!pc.isProd())
                {
                    pc.debug("No action for the id=" + this.getId() + ", event=" + evt.type);
                }
            }
            this.setDataValues = function (data, evt)
            {
                evt = evt || {type:"*"};
                var handler;
                $H(data).each(function(pair)
                {
                    //pc.debug("ControlHandler, pair.value=" + pair.value);
                    if(handler = pc.getElementHandler(pair.key))
                    {
                        handler.setValue(pair.value, evt);
                    }
                    else if(handler = getElt(pair.key, false))
                    {
                        handler.update(pair.value);
                    }
                });
            }
            this.requestsStart = function()
            {
                getElt("div_" + elt.id).hide();
            }
            this.requestsEnd = function()
            {
                getElt("div_" + elt.id).show();
            }
            if(!Object.isUndefined(elt.isListener))
            {
                pc.getStaticSplash().addListener(this);
            }
        }
    }
);
