// Funciones de validación de formulario.
// Para que utilizar esta función hay que añadir a las etiquetas HTML que componen el formulario
// alguno de los siguientes atributos especiales:
// wbRequired="true" -> el campo es obligatorio
// wbLabel="<nombre>" -> para cualquier aviso que dé la función, utilizará este nombre. Si no,
// utiliza el nombre del campo dentro del formulario
// wbType="<tipo>" -> indica que el contenido del campo debe ser de un tipo determinado.
// <tipo> puede ser uno de los siguientes valores:
// · "numeric" -> se comprueba que el campo contenga un número con hasta dos decimales
// (el separador decimal es la coma, y se admite el punto como separador de miles)
// · "mail" -> se comprueba que el campo contenga una dirección de correo electrónico válida
// · "date" -> una fecha está compuesta por tres desplegables, con nombres de sufijo _dia, _mes y _anno
//             Si el campo correspondiente al día está marcado con este tipo, se comprueba que sea
//             una fecha válida
// · "textdate" -> una fecha como campo de texto en formato dd/mm/aaaa
// · wbEQ="<nombre>" -> el formulario no es válido a menos que el campo tenga igual valor que el campo <nombre>
// · wbGT="<nombre>" -> el formulario no es válido a menos que el campo tenga valor mayor que el campo <nombre>
// · wbLT="<nombre>" -> el formulario no es válido a menos que el campo tenga valor menor que el campo <nombre>
// · wbGTEQ="<nombre>" -> el formulario no es válido a menos que el campo tenga valor mayor o igual que el campo <nombre>
// · wbLTEQ="<nombre>" -> el formulario no es válido a menos que el campo tenga valor menor o igual que el campo <nombre>
// · wbMaxLength="<longitud>" -> comprueba la longitud máxima del campo. Útil para campos <textarea>
//                               en los que no se puede usar el atributo HTML wbMaxLength
//
// Alternativamente, se pueden añadir campos de tipo hidden que se llamen <nombre del atributo>_<nombre del campo>
// Esto hace que la función sea compatible con más navegadores que Explorer
// Además de todo esto, al formulario hay que añadirle el atributo onSubmit="return wbValidateForm (this);"
// Si se llama al método submit() del formulario, el evento no se lanza, por lo que hay que llamar
// a la función a mano
// Ejemplo:
// <script type="text/javascript" src="/WEBBLOCKS/js/validateForm.js"></script>
// <form name="frmEj" onSubmit="return wbValidateForm (this);">
// <input type="text" name="usuario" wbRequired="true" wbLabel="Nombre de usuario">
// <input type="password" name="clave" wbRequired="true" wbLabel="Contraseña" wbEQ="clave2">
// <input type="password" name="clave2" wbRequired="true" wbLabel="Contraseña (repetir)">
// <input type="text" name="correo" wbType="mail" wbLabel="Correo electrónico">
// <input type="button" value="Enviar" onClick="if (wbValidateForm (document.frmEj) ) document.frmEj.submit();">
// </form>
//
// Ejemplo alternativo:
// <script type="text/javascript" src="/WEBBLOCKS/js/validateForm.js"></script>
// <form name="frmEj" onSubmit="return wbValidateForm (this);">
// <input type="text" name="usuario">
// <input type="hidden" name="wbRequired_usuario" value="true">
// <input type="hidden" name="wbLabel_usuario" value="Nombre de usuario">
// <input type="password" name="clave">
// <input type="password" name="clave2">
// <input type="hidden" name="wbRequired_clave" value="true">
// <input type="hidden" name="wbLabel_clave" value="Contraseña">
// <input type="hidden" name="wbEQ_clave" value="clave2">
// <input type="hidden" name="wbRequired_clave2" value="true">
// <input type="hidden" name="wbLabel_clave2" value="Contraseña (repetir)">
// <input type="text" name="correo">
// <input type="hidden" name="wbType_correo" value="mail">
// <input type="hidden" name="wbLabel_correo" value="Correo electrónico">
// <input type="button" value="Enviar" onClick="if (wbValidateForm (document.frmEj) ) document.frmEj.submit();">
// </form>

var g_wbVFalertMap = new Array();

g_wbVFalertMap["es"] = new Array();
g_wbVFalertMap["es"]["req"] = "El campo obligatorio %e está en blanco";
g_wbVFalertMap["es"]["num"] = "El campo numérico %e es incorrecto";
g_wbVFalertMap["es"]["mail"] = "El formato del campo %e es incorrecto";
g_wbVFalertMap["es"]["date"] = "El campo fecha %e es incorrecto";
g_wbVFalertMap["es"]["not_eq"] = "El campo %e1 no coincide con %e";
g_wbVFalertMap["es"]["not_gt"] = "El campo %e tiene que ser mayor que %e1";
g_wbVFalertMap["es"]["not_lt"] = "El campo %e tiene que ser menor que %e1";
g_wbVFalertMap["es"]["not_gteq"] = "El campo %e tiene que ser mayor o igual que %e1";
g_wbVFalertMap["es"]["not_lteq"] = "El campo %e tiene que ser menor o igual que %e1";
g_wbVFalertMap["es"]["maxl"] = "El campo %e excede de la longitud máxima permitida";

g_wbVFalertMap["en"] = new Array();
g_wbVFalertMap["en"]["req"] = "The required field %e is empty";
g_wbVFalertMap["en"]["num"] = "Format for numeric field %e is incorrect";
g_wbVFalertMap["en"]["mail"] = "Field %e is incorrectly formatted";
g_wbVFalertMap["en"]["date"] = "Format for date field %e is incorrect";
g_wbVFalertMap["en"]["not_eq"] = "Field %e2 doesn't match %e";
g_wbVFalertMap["en"]["not_gt"] = "Field %e must be greater than %e1";
g_wbVFalertMap["en"]["not_lt"] = "Field %e must be less than %e1";
g_wbVFalertMap["en"]["not_gteq"] = "Field %e must be greater than or equal to %e1";
g_wbVFalertMap["en"]["not_lteq"] = "Field %e must be less than or equal to %e1";
g_wbVFalertMap["en"]["maxl"] = "Field %e exceeds maximum allowed length";

g_wbVFalertMap["de"] = new Array();
g_wbVFalertMap["de"]["req"] = "Das erforderliche Feld %e ist unvollständig ausgefült";
g_wbVFalertMap["de"]["num"] = "Format for numeric field %e is incorrect";
g_wbVFalertMap["de"]["mail"] = "Bitte geben Sie eine gültige %e ein.";
//g_wbVFalertMap["de"]["mail"] = "Das Feld %e ist nicht richtig formatiert";
g_wbVFalertMap["de"]["date"] = "%e Datierte Format ist nicht korrekt";
g_wbVFalertMap["de"]["not_eq"] = "Field %e2 doesn't match %e";
g_wbVFalertMap["de"]["not_gt"] = "Field %e must be greater than %e1";
g_wbVFalertMap["de"]["not_lt"] = "Field %e must be less than %e1";
g_wbVFalertMap["de"]["not_gteq"] = "Field %e must be greater than or equal to %e1";
g_wbVFalertMap["de"]["not_lteq"] = "Field %e must be less than or equal to %e1";
g_wbVFalertMap["de"]["maxl"] = "Field %e exceeds maximum allowed length";

g_wbVFalertMap["ca"] = new Array();
g_wbVFalertMap["ca"]["req"] = "El camp obligatori %e està en blanc";
g_wbVFalertMap["ca"]["num"] = "El camp numéric %e és incorrecte";
g_wbVFalertMap["ca"]["mail"] = "El format del camp %e és incorrecte";
g_wbVFalertMap["ca"]["date"] = "El campo fecha %e es incorrecto";
g_wbVFalertMap["ca"]["not_eq"] = "El camp %e1 no coincideix amb %e";
g_wbVFalertMap["ca"]["not_gt"] = "El campo %e tiene que ser mayor que %e1";
g_wbVFalertMap["ca"]["not_lt"] = "El campo %e tiene que ser menor que %e1";
g_wbVFalertMap["ca"]["not_gteq"] = "El campo %e tiene que ser mayor o igual que %e1";
g_wbVFalertMap["ca"]["not_lteq"] = "El campo %e tiene que ser menor o igual que %e1";
g_wbVFalertMap["ca"]["maxl"] = "El campo %e excede de la longitud máxima permitida";


g_wbVFalertMap["pt"] = new Array();
g_wbVFalertMap["pt"]["req"] = "O campo de preenchimento obrigatório %e encontra-se em branco";
g_wbVFalertMap["pt"]["num"] = "El campo numérico %e es incorrecto";
g_wbVFalertMap["pt"]["mail"] = "O formato do campo %e está incorrecto";
g_wbVFalertMap["pt"]["date"] = "El campo fecha %e es incorrecto";
g_wbVFalertMap["pt"]["not_eq"] = "El campo %e1 no coincide con %e";
g_wbVFalertMap["pt"]["not_gt"] = "El campo %e tiene que ser mayor que %e1";
g_wbVFalertMap["pt"]["not_lt"] = "El campo %e tiene que ser menor que %e1";
g_wbVFalertMap["pt"]["not_gteq"] = "El campo %e tiene que ser mayor o igual que %e1";
g_wbVFalertMap["pt"]["not_lteq"] = "El campo %e tiene que ser menor o igual que %e1";
g_wbVFalertMap["pt"]["maxl"] = "El campo %e excede de la longitud máxima permitida";


g_wbVFalertMap["fr"] = new Array();
g_wbVFalertMap["fr"]["req"] = "Le champ obligatoire %e est vide";
g_wbVFalertMap["fr"]["num"] = "Le champ numérique %e est incorrect";
g_wbVFalertMap["fr"]["mail"] = "Le format du champ %e est incorrect";
g_wbVFalertMap["fr"]["date"] = "Le champ date %e est incorrect";
g_wbVFalertMap["fr"]["not_eq"] = "Le champ %e1 ne concorde pas avec %e";
g_wbVFalertMap["fr"]["not_gt"] = "Le champ %e doit être supérieur à %e1";
g_wbVFalertMap["fr"]["not_lt"] = "Le champ %e doit être inférieur à %e1";
g_wbVFalertMap["fr"]["not_gteq"] = "Le champ %e doit être supérieur ou égal à %e1";
g_wbVFalertMap["fr"]["not_lteq"] = "Le champ %e doit être inférieur ou égal à %e1";
g_wbVFalertMap["fr"]["maxl"] = "Le champ %e dépasse la longueur maximale autorisée";

function wbValidateForm (frm) {
    return wbValidateFormL (frm, "es");
}

function wbValidateFormL (frm, lang) {
    var field, sFieldValue, sFieldNameOther, sFieldValueOther;
    
    var WarningList  = new Array();
    var pos=0;
    

    for (var i = 0; i < frm.elements.length; i++) {
        field = frm.elements[i];
        var sFieldName = field.wbLabel;

        if ( (sFieldName == undefined) || (sFieldName == "") ) {
            if (frm.elements['wbLabel_' + field.name] != undefined) sFieldName = frm.elements['wbLabel_' + field.name].value;
            else sFieldName = field.name;
        }
        
        

        // Campos requeridos
        var bRequiredAndEmpty;
        var fieldwbRequired = field.wbRequired;
        if ( (fieldwbRequired == undefined) && (frm.elements['wbRequired_' + field.name] != undefined) )
            fieldwbRequired = frm.elements['wbRequired_' + field.name].value;

        if ( (field.type == "radio") || (field.type == "checkbox") ) {
            if (fieldwbRequired != "true") {
                bRequiredAndEmpty = false;
            } else {
                bRequiredAndEmpty = true;
                var iNumBut = eval ("frm." + field.name + ".length");
                var check;
                if (iNumBut == undefined) bRequiredAndEmpty = !eval ("frm." + field.name + ".checked");
                else for (var j = 0; j < iNumBut; j++) {
                    if (eval ("frm." + field.name + "[" + j + "].checked") ) {
                        bRequiredAndEmpty = false;
                        break;
                    }
                }
            }
        }
        else {
            bRequiredAndEmpty = (fieldwbRequired == "true") && (field.value == "");
        }
        if (bRequiredAndEmpty) {

            alert (g_wbVFalertMap[lang]["req"].replace ("%e", sFieldName) );
            field.focus();
            return false;
        }

        // Tipo
        var fieldwbType = null;
        if ( (field.wbType != undefined) && (field.wbType != "") ) fieldwbType = field.wbType;
        else if (frm.elements['wbType_' + field.name] != undefined)
            fieldwbType = frm.elements['wbType_' + field.name].value;

        if ( (fieldwbType != null) && field.value != "") {
            switch (fieldwbType) {
                case "numeric":
                    //if (!wbvfIsFloat (field.value) ) {
                    if (!wbfvIsFormattedNumeric (field.value) ) {
                        alert (g_wbVFalertMap[lang]["num"].replace ("%e", sFieldName) );
                        field.focus();
                        return false;
                    }
                    break;
                case "mail":
                    if (!wbvfIsEmail (field.value) ) {
                        alert (g_wbVFalertMap[lang]["mail"].replace ("%e", sFieldName) );
                        field.focus();
                        return false;
                    }
                    break;
                case "date": case "textdate":
                    sFieldValue = wbfvFieldValue (field);
                    if (!wbvfCheckDate (sFieldValue) ) {
                        alert (g_wbVFalertMap[lang]["mail"].replace ("%e", sFieldName) );
                        field.focus();
                        return false;
                    }
                    break;
            }
        }

        // Comparación de campos
        sFieldValue = wbfvFieldValue (field);

        var fieldwbEQ = field.wbEQ;
        if ( (fieldwbEQ == undefined) && (frm.elements['wbEQ_' + field.name] != undefined) )
            fieldwbEQ = frm.elements['wbEQ_' + field.name].value;

        if ( (fieldwbEQ != undefined) && (fieldwbEQ != "") ) {
            if (sFieldValue != wbfvFieldValue (frm.elements[fieldwbEQ]) ) {
                sFieldNameOther = frm.elements[fieldwbEQ].wbLabel;
                if ( (sFieldNameOther == undefined) && (frm.elements['wbLabel_' + fieldwbEQ] != undefined) )
                    sFieldNameOther = frm.elements['wbLabel_' + fieldwbEQ].value;
                if ( (sFieldNameOther == undefined) || (sFieldNameOther == "") )
                    sFieldNameOther = frm.elements[fieldwbEQ].name;

                alert (g_wbVFalertMap[lang]["not_eq"].replace ("%e1", sFieldNameOther).replace ("%e", sFieldName) );
                field.focus();
                return false;
            }
        }

        var fieldwbGT = field.wbGT;
        if ( (fieldwbGT == undefined) && (frm.elements['wbGT_' + field.name] != undefined) )
            fieldwbGT = frm.elements['wbGT_' + field.name].value;

        if ( (fieldwbGT != undefined) && (fieldwbGT != "") ) {
            sFieldValueOther = wbfvFieldValue (frm.elements[fieldwbGT]);
            if ( (sFieldValue != "") && (sFieldValueOther != "") && (sFieldValue <=  sFieldValueOther) ) {
                sFieldNameOther = frm.elements[fieldwbGT].wbLabel;
                if ( (sFieldNameOther == undefined) && (frm.elements['wbLabel_' + fieldwbGT] != undefined) )
                    sFieldNameOther = frm.elements['wbLabel_' + fieldwbGT].value;
                if ( (sFieldNameOther == undefined) || (sFieldNameOther == "") )
                    sFieldNameOther = frm.elements[fieldwbGT].name;

                alert (g_wbVFalertMap[lang]["not_gt"].replace ("%e1", sFieldNameOther).replace ("%e", sFieldName) );
                field.focus();
                return false;
            }
        }

        var fieldwbLT = field.wbLT;
        if ( (fieldwbLT == undefined) && (frm.elements['wbLT_' + field.name] != undefined) )
            fieldwbLT = frm.elements['wbLT_' + field.name].value;

        if ( (fieldwbLT != undefined) && (fieldwbLT != "") ) {
            sFieldValueOther = wbfvFieldValue (frm.elements[fieldwbLT]);
            if ( (sFieldValue != "") && (sFieldValueOther != "") && (sFieldValue >= sFieldValueOther) ) {
                sFieldNameOther = frm.elements[fieldwbLT].wbLabel;
                if ( (sFieldNameOther == undefined) && (frm.elements['wbLabel_' + fieldwbLT] != undefined) )
                    sFieldNameOther = frm.elements['wbLabel_' + fieldwbLT].value;
                if ( (sFieldNameOther == undefined) || (sFieldNameOther == "") )
                    sFieldNameOther = frm.elements[fieldwbLT].name;

                alert (g_wbVFalertMap[lang]["not_lt"].replace ("%e1", sFieldNameOther).replace ("%e", sFieldName) );
                field.focus();
                return false;
            }
        }
        
        var fieldwbLTEQ = field.wbLTEQ;
        if ( (fieldwbLTEQ == undefined) && (frm.elements['wbLTEQ_' + field.name] != undefined) )
            fieldwbLTEQ = frm.elements['wbLTEQ_' + field.name].value;

        if ( (fieldwbLTEQ != undefined) && (fieldwbLTEQ != "") ) {
            sFieldValueOther = wbfvFieldValue (frm.elements[fieldwbLTEQ]);
            if ( (sFieldValue != "") && (sFieldValueOther != "") && (sFieldValue > sFieldValueOther) ) {
                sFieldNameOther = frm.elements[fieldwbLTEQ].wbLabel;
                if ( (sFieldNameOther == undefined) && (frm.elements['wbLabel_' + fieldwbLTEQ] != undefined) )
                    sFieldNameOther = frm.elements['wbLabel_' + fieldwbLTEQ].value;
                if ( (sFieldNameOther == undefined) || (sFieldNameOther == "") )
                    sFieldNameOther = frm.elements[fieldwbLTEQ].name;

                alert (g_wbVFalertMap[lang]["not_lteq"].replace ("%e1", sFieldNameOther).replace ("%e", sFieldName) );
                field.focus();
                return false;
            }
        }
        
        var fieldwbGTEQ = field.wbGTEQ;
        if ( (fieldwbGTEQ == undefined) && (frm.elements['wbGTEQ_' + field.name] != undefined) )
            fieldwbGTEQ = frm.elements['wbGTEQ_' + field.name].value;

        if ( (fieldwbGTEQ != undefined) && (fieldwbGTEQ != "") ) {
            sFieldValueOther = wbfvFieldValue (frm.elements[fieldwbGTEQ]);
            if ( (sFieldValue != "") && (sFieldValueOther != "") && (sFieldValue < sFieldValueOther) ) {
                sFieldNameOther = frm.elements[fieldwbGTEQ].wbLabel;
                if ( (sFieldNameOther == undefined) && (frm.elements['wbLabel_' + fieldwbGTEQ] != undefined) )
                    sFieldNameOther = frm.elements['wbLabel_' + fieldwbGTEQ].value;
                if ( (sFieldNameOther == undefined) || (sFieldNameOther == "") )
                    sFieldNameOther = frm.elements[fieldwbGTEQ].name;

                alert (g_wbVFalertMap[lang]["not_gteq"].replace ("%e1", sFieldNameOther).replace ("%e", sFieldName) );
                field.focus();
                return false;
            }
        }
        
        // Longitud máxima (sólo es necesaria para textareas)
        var fieldwbMaxLength = field.wbMaxLength;
        if ( (field.wbMaxLength == undefined) && (frm.elements['wbMaxLength_' + field.name] != undefined) )
            fieldwbMaxLength = frm.elements['wbMaxLength_' + field.name].value;
        if ( (fieldwbMaxLength != undefined) && (fieldwbMaxLength != "") ) {
            if (sFieldValue.length > parseInt (fieldwbMaxLength) ) {
                alert (g_wbVFalertMap[lang]["maxl"].replace ("%e", sFieldName) );
                field.focus();
                return false;
            }
        }
        
        //Añadimos al array de warnings
        var fieldwbWarning = field.wbWarning;
        
        if ( (fieldwbWarning == undefined) && (frm.elements['wbWarning_' + field.name] != undefined) )
            fieldwbWarning = frm.elements['wbWarning_' + field.name].value;
          
         if((fieldwbWarning)&&(wbfvFieldValue(field) == "")){
         	WarningList[pos]=sFieldName;
         	pos++;
         }	

         
        	     
    }
    
   
    if(WarningList.length){
    	if(window.confirm("Algunos campos ("+WarningList+") están en blanco. ¿Desea continuar?"))
			return true;
		else
			return false;
    }	
    		
    
    
    return true;
}

    function cw_esta_vacio(variable) { 
        if((variable == null) || (variable.length == 0) || (variable.value == "")) { 
          return true; 
        }
        return false;
    }
    
   function cw_tiene_espacios (variable) {   
       var espacio = " \n\t\r";
       var i;
       for (i = 0; i < variable.value.length; i++) {   
           var car = variable.value.substring (i, i+1);
           if (espacio.indexOf(car) != -1) return true;
       }
       return false;
   }

    _wbvfREEmail = /^[A-Z0-9._%-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$/i;
   function wbvfIsEmail (value) {
     return _wbvfREEmail.test (value);
   }

   /*
   function cw_es_email (address) {   

       if(cw_esta_vacio(address)) return false; 
       if(cw_tiene_espacios(address)) return false;
       
       var i = 1;
       var addressLength = address.value.length;
       var fuera = false;
       var car = "";

       // Mirando por la @
       while (!fuera) {
         if(i < addressLength) {
         car =  address.value.substring (i, i+1);
             if(car == "@") fuera=true;
         } else { fuera = true }
         i++;
       } 

       if (i >= addressLength) { return false; } 
       if (car != "@") { return false; } 
       i++;

       // Mirando por el .
       fuera = false;
       car = "";
       while (!fuera) {
         if(i < addressLength) {
             car =  address.value.substring (i, i+1);
             if(car == ".") fuera=true;
         } else { fuera = true }
         i++;
       } 
       if (i >= addressLength) { return false; } 
       if (car != ".") { return false; } 
       return true;
   }
   */

function wbvfIsFloat(valor){
    var reFloat = /^((\d+(\.\d*)?)|((\d*\.)?\d+)|(\d+(\,\d*)?)|((\d*\,)?\d+))$/
    return reFloat.test (valor) || valor.length == 0 || valor == null;
}

function wbfvIsFormattedNumeric (valor) {
    var reFN = /^(\d{1,3})((\.)?\d{3})*(,\d{0,2})?$/
    return reFN.test (valor) || valor.length == 0 || valor == null;
}

function wbvfIsInt(valor){
    var reInt = /^(\d+)$/
    return reInt.test (valor) || valor.length == 0 || valor == null;
}

var __awbvfLimMonths = Array (0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

// La fecha viene en formato aaaammdd
function wbvfCheckDate (sCadena) {
    if (sCadena == "") return true;
    
    if (sCadena.length != 8) return false;
    
//  if ( (sCadena.charAt (2) != '/') || (sCadena.charAt (5) != '/') ) return false;
    
    var sDay = sCadena.substring (6);
    var sMonth = sCadena.substring (4, 6);
    var sYear = sCadena.substring (0, 4);
    if (sDay.charAt (0) == '0') sDay = sDay.substring (1);
    if (sMonth.charAt (0) == '0') sMonth = sMonth.substring (1);
    while (sYear.charAt (0) == '0') sYear = sYear.substring (1);
    
    if (!wbvfIsInt (sDay) || !wbvfIsInt (sMonth) || !wbvfIsInt (sYear) ) return false;
    
    var iDay = parseInt (sDay), iMonth = parseInt (sMonth), iYear = parseInt (sYear);
    if ( (iMonth < 1) || (iMonth > 12) ) return false;
    
    var iTopDay = __awbvfLimMonths[iMonth];
    if ( (iMonth == 2) && ( (iYear % 4) == 0) ) iTopDay++;

    if ( (iDay < 1) || (iDay > iTopDay) ) return false;
    
    return true;
}

function wbfvFieldValue (field) {
    var sValue, sType;
    if (field.type == "radio") {
        sType = field.wbType;
        if ( (sType == undefined) && (field.form.elements['wbType_' + field.name] != undefined) )
            sType = field.form.elements['wbType_' + field.name].value;
        sValue = "";
        var iFrmPos = -1;
        for (var i = 0; i < document.forms.length; i++) {
            if (document.forms[i] == field.form) {
                iFrmPos = i;
                break;
            }
        }
        if (iFrmPos == -1) {
            alert ("Error interno: formulario no se encuentra");
            return "";
        }
        var iNumBut = eval ("document.forms[" + iFrmPos + "]." + field.name + ".length");
        for (var i = 0; i < iNumBut; i++) {
            if (eval ("document.forms[" + iFrmPos + "]." + field.name + "[" + i + "].checked") ) {
                sValue = eval ("document.forms[" + iFrmPos + "]." + field.name + "[" + i + "].value");
                break;
            }
        }
    } else {
        sValue = field.value;
        sType = field.wbType;
        if ( (sType == undefined) && (field.form.elements['wbType_' + field.name] != undefined) )
            sType = field.form.elements['wbType_' + field.name].value;
    }

    if ( (sType != undefined) && (sType != "") ) {
        switch (sType) {
            case "numeric":
                return sValue.replace (/\,/g, ".");

            case "date":
                var sYear, sMonth, sDay, sPrefix = field.name.substr (0, field.name.length - 4);
                sYear = String (field.form.elements[sPrefix + "_anno"].value);
                sMonth = String (field.form.elements[sPrefix + "_mes"].value);
                sDay = String (field.value);
                return sYear + sMonth + sDay;

            case "textdate":
                var sYear, sMonth, sDay;
                sDay = field.value.substring (0, 2);
                sMonth = field.value.substring (3, 5);
                sYear = field.value.substring (6);
                return sYear + sMonth + sDay;
        }
    }

    return sValue;
}
