/*

Aziendecom v1

© Comservices s.r.l.

info: www.comservices.it

------------------------

script page: js/CLientValidator.js

started: 04-03-2009

last-modified: 04-03-2009 (Catrini)

*/



 /********** CLASSE PER GESTIRE LA VALIDAZIONE LATO CLIENT ******************/

 ClientValidator = Class.create();

 ClientValidator.prototype={
     
     initialize : function(url,form,inputs)
     {
        //Assegno ad handler il riferimento alla funzione validate
        handler=this.validate;
        var x = new Array();
        //Assegno il gestore dell'evento onblur sui campi da validare
        $$("input."+inputs).each(function(s){
            
            s.observe("blur",this.handler.bindAsEventListener(this,s,url,form));
        });
     },
     
     validate : function(event,element,url,form)
     {         
          var options={
             method:"POST",
             parameters:element.serialize(),
             onSuccess:function (transport){
                        //Recupero la risposta JSON dal server
                        //Il formato di risp è una stringa JSON del tipo
                        /*
                            {"elemento":"id_campo_di_input";
                            "0":"errore 0";
                            "1":"errore 1";
                            "n":"errore n"}
                        */
                         var risp=transport.responseText.evalJSON(true);
                         //Creo la lista che conterrà i messaggi di errore
                         var ul=document.createElement("ul");
                         if(document.all)
                            ul.setAttribute("className","errors");
                         else
                            ul.setAttribute("class","errors");
                         //Trasformo la risposta JSON in un Hash per poter
                         // invocare la funzione each()
                         var x=$H(risp);
                         //Invoci each() sull'Hash x
                         x.each(function(s,i){
                            if(i>0)
                            {
                            //Aggiungo alla lista degli errori i singoli errori
                                var li=document.createElement("li");
                                    li.innerHTML=s.value;
                                    ul.appendChild(li);
                            }
                         });
                         //Recupero l'id dell'elemento validato
                         var elemento=risp.elemento;                         
                         //Recupero il decorator dell'elemento validato
                         var parent=$(elemento).parentNode;
                         //Rimuovo l'eventuale la lista degli errori precedenti
                         if(parent.lastChild.className=="errors")
                             parent.removeChild(parent.lastChild);
                         //Aggiungo la nuova lista degli errori
                         parent.appendChild(ul);
             },
             onFailure:function (transport){
                //alert("Errore"+transport.responseText);
             }
         }
         //Invio la richiesta AJaX
         new Ajax.Request(baseurl+"/clientvalidator/index/form/"+form,options);
     }
 };
    
