/**
 * Agregar un error a un campo de formulario
 * @param fieldId nombre del campo sobre el que se desea agregar el mensaje de error
 * @param error texto del error que se desea agregar
 */
function addMsgOk(fieldId, msg){

    var field;
    if(fieldId == undefined){
        return;
    } else {
        field = dojo.byId(fieldId);
    }

    if(field!=undefined){
       field.className = "good";
       var holder = dijit.byId(fieldId+"-errors");
       if(holder == undefined){
         var args = {
             id: fieldId+"-errors",
             connectId: [fieldId],
             label: msg
         };
         holder = new dijit.Tooltip(args);
         holder.startup();
       } else {
            holder.label+="<br/>"+msg;
       }
    }
}

function addError(fieldId, error){

    var field;
    if(fieldId == undefined){
        return;
    } else {
        field = dojo.byId(fieldId);
    }

    if(field!=undefined){
       field.className = "error";
       var holder = dijit.byId(fieldId+"-errors");
       if(holder == undefined){
         var args = {
             id: fieldId+"-errors",
             connectId: [fieldId],
             label: error
         };
         holder = new dijit.Tooltip(args);
         holder.startup();
       } else {
            holder.label+="<br/>"+error;
       }
    }
}

function addErrorCntrol(fieldId, fieldIdMult, error){

    var field;
    if(fieldId == undefined){
        return;
    } else {
        field = dojo.byId(fieldIdMult);
    }

    if(field!=undefined){
       field.className = "error";
       var holder = dijit.byId(fieldIdMult+"-errors");
       if(holder == undefined){
         var args = {
             id: fieldId+"-errors",
             connectId: [fieldId],
             label: error
         };
         holder = new dijit.Tooltip(args);
         holder.startup();
       } else {
            holder.label+="<br/>"+error;
       }
    }
}

function clearError(fieldId){

    var field;
    if(fieldId == undefined){
        return;
    } else {
        field = dojo.byId(fieldId);
    }

    if(field!=undefined){
       field.className = "";
       var holder = dijit.byId(fieldId+"-errors");
       if(holder != undefined){
         field.className="";
         holder.destroyRecursive();
       }
    }
}

/**
 * Agregar una advertencia a un campo de formulario
 * @param fieldId nombre del campo sobre el que se desea agregar el mensaje de error
 * @param error texto del error que se desea agregar
 */
function addNotify(fieldId, notify){

    var field;
    if(fieldId == undefined){
        return;
    } else {
        field = dojo.byId(fieldId);
    }

    if(field!=undefined){
       field.className = "alert";
       var holder = dijit.byId(fieldId+"-errors");
       if(holder == undefined){
         var args = {
             id: fieldId+"-errors",
             connectId: [fieldId],
             label: notify
         };
         holder = new dijit.Tooltip(args);
         holder.startup();
       } else {
            holder.label+="<br/>"+notify;
       }
    }
}

/**
 * Limpia los campos del formulario de los errores marcados
 * @param form
 */
function clearForm(form){
   var frm = undefined;

   if(dojo.isString(form)){
       frm = document.forms[form];
   } else {
       frm = form;
   }

   if(frm!=undefined){
       for(i=0;i<frm.length;i++){
           var field = frm.elements[i];
           var tooltip = dijit.byId(field.id + "-errors");
           if(tooltip!=undefined){
               field.className="";
               tooltip.destroyRecursive();
           }
       }
   }
}

/**
 * Ejecuta una animación que muestra un elemento concreto de la página
 * ejecuta una animación (fadeIn) para mostrar el elemento
 * @param id (obligatorio) identificador del elemento a mostrar
 * @param duration (opcional) duración en milisegundos de la animación (2000 como valor por defecto)
 */
function show(id, duration){

    if(id==undefined || dojo.byId(id) == undefined){
        return;
    }

    var node = dojo.byId(id);
    var anim = dojo.fadeIn({
       duration: (duration!=undefined?duration:2000),
       node: node
    });    
    anim.play();
    node.style.display = "block";
}

/**
 * Ejecuta una animación que oculta un elemento concreto de la página
 * ejecuta una animación (fadeOut) para ocultar el elemento
 * @param id (obligatorio) identificador del elemento a ocultar
 * @param duration (opcional) duración en milisegundos de la animación (2000 como valor por defecto)
 */
function hide(id, duration){

    if(id==undefined || dojo.byId(id) == undefined){
        return;
    }

    var node = dojo.byId(id);
    var anim = dojo.fadeOut({
       duration: (duration!=undefined?duration:2000),
       node: node
    });
    anim.play();
    node.style.display = "none";
}
