function checkCustomForm(f) {
    var errores = new Array();

        errores["es"]=new Array();
        errores["es"][0] = '   - El campo {$c} es obligatorio.\n';
        errores["es"][1] = '   - El campo {$c} debe ser una dirección válida de e-mail.\n';

        errores["eu"]=new Array();
        errores["eu"][0] = '   - {$c} betetzea beharrezkoa da.\n';
        errores["eu"][1] = '   - {$c} posta helbidea zuzena izan behar du.\n';

    var args=checkCustomForm.arguments;
    var lang=f.language.value;
    var msg_error="";
    var regexReemplazarCampo=new RegExp(/\{\$c\}+/g);
    var regexReemplazarGuion=new RegExp(/_/g);
    for (var i=1;i<args.length;i++) {
        var c=eval('f.'+args[i].split('|')[0]);
        if (!c.length || c.type=="select-one") { // campo simple o lista simple
            var label=c.name.replace(regexReemplazarGuion," ");
            if (label=="name") {
                if (lang=="es") label="Nombre";
                if (lang=="eu") label="Izena";
            }
            if (label=="email") label="E-mail";
            if (c.value=="") msg_error+=errores[lang][0].replace(regexReemplazarCampo,label);
            else if (args[i].split('|')[1]=="M" && !new RegExp('^[0-9a-zA-Z_]+(([\\.-]?[0-9a-zA-Z_]+)+)?@[0-9a-zA-Z_-]+(\\.([0-9a-zA-Z_-])+)+$').test(c.value))  msg_error+=errores[lang][1].replace(regexReemplazarCampo,label);
        } else {
            var label=c[0].name.replace(regexReemplazarGuion," ");
            var type=c[0].type;
            var encontrado=false;
            for (var j=0;j<c.length;j++) {
                if (type=="radio" || type=="checkbox") {
                    if (c[j].checked) encontrado=true;
                }
            }
            if (!encontrado) msg_error+=errores[lang][0].replace(regexReemplazarCampo,label);
        }
    }

    if (msg_error!="") {
        alert(msg_error);
        return false;
    }
    return true;
}