// ritorna true se la stringa passata sembra essere un'email valida.
function isEmail(s) {   
    // deve esserci almeno >= 1 carattere/i prima di @
    var i = s.indexOf("@");
    
    if (i == -1) return false;

    i += 2;
 
    // cerco "."
    i = s.indexOf(".", i);
    
    // almeno un carattere dopo il "."
    if ((i == -1) || (i == s.length-1)) return false;
    
    return true;
}

// Controlla che il gruppo checkbox che iniziano per il nome passato
// e hanno come postfisso i numeri 'da'..'a' abbia almeno un
// checkbox segnato. Con i valori di questi checkbox compone una
// stringa che mette nel campo certificazione_prodotto.

// nome hidden non viene pių considerato
function verificaCheck (form, nome, da, a, nomehidden) {
    for (var i=da; i<=a; i++) {
        if (form.elements[nome + i].checked) return true
    }
    return false
/*
    var str = "";

    for (var i=da; i<=a; i++) {
        if (form.elements[nome + i].checked)
            str += form.elements[nome + i].value
            str += " "
    }

    form[nomehidden].value = str
    return (str != "")
*/
}

//------------------------------------------------------------------------------
// FUNZIONI PER I MODULI

function trim(s) {
    var tmp = s.replace(/^[\s\u00A0]*/, '').replace(/[\s\u00A0]*$/, '');
    return tmp;
}

function isEmpty(field, txt) {
    if (field.type != "file") 
    field.value = trim(field.value);
    if (field.value == "") {
        //field.className = "fieldError " + field.className;
        field.focus();
        alert(txt);
        return true;
    }

    //var p = field.className.indexOf("fieldError");
    //if (p == 0) field.className = field.className.substring(11);

    return false;
}

// ritorna true se il campo č un numero, dopo averlo trimmato
function isNumber(field, txt) {
    if (field.type != "file") 
    field.value = trim(field.value);

    if (isNaN(field.value)){
        //field.className += " fieldError";	
        field.focus();
        alert(txt);
        return false;
    }

    //var p = field.className.indexOf(" fieldError");
    //if (p != -1) field.className = field.className.substring(0, p);

    return true;
}

function isValidEmail(field, emptyOk, txt) {
    field.value = trim(field.value);
    if ((field.value.length == 0) && emptyOk) return true

    var re = /^.+@.+\..+$/;
    if (!re.test(field.value)) {
        //field.className = "text-error"
        field.focus()
	alert(txt)
	return false
    }
    //field.className = "text";
    return true
}

function checkObbligatorio(el)
{
    if (isObbligatorioF(el.name)) {     
        var title = "";
        if (el.title) title = el.title;
        if (isEmpty(el, composeMessage(textRequired, title))) return false;
    }
    return true;
}

function checkEmail(el)
{
    if (isEmailF(el.name)) {
        if(!isValidEmail(el, true,  textEmail)){
            return false;
        }    
    }
    return true;
}

//------------------------------------------------------------------------------
// FUNZIONI DI ELABORAZIONE DEI CAMPI IN FUNZIONE DEL NOME

function getLimite(n) 
{
    var numberLimite = "";
    var p = n.lastIndexOf("___");
    if (p == -1) return "";
    var t = n.substring(p+1);
    p = t.indexOf("l");
    if (p == -1) return "";
    if(p+2<=t.length){
        numberLimite+=t.substring(p+1,p+2);
    }
    else return "";
    if(p+3<=t.length){
        numberLimite+=t.substring(p+2,p+3);
    }
    return numberLimite;
}

function getName(n) {
    var p = n.lastIndexOf("___");
    if (p == -1) return n;
    return n.substring(0,p);
}

function isLimitatoF(n) {
    return hasFlag(n, "l");
}

function isObbligatorioF(n) {
    return hasFlag(n, "o");
}

function isNumericoF(n) {
    return hasFlag(n, "n");
}

function isEmailF(n) {
    return hasFlag(n, "e");
}

function hasFlag(n, flag) {
    var p = n.lastIndexOf("___");
    if (p == -1) return false;
    var t = n.substring(p+1);
    return t.indexOf(flag) != -1;
}

function startsOnlyWith(container, startwith){
    if(container == startwith) return true;
    if(container.length == startwith.length) return false;
    var position = container.indexOf(startwith)
    if(position == -1) return false;
    var totalshift = Number(position)+Number(startwith.length)
    var checkChar = container.charAt(totalshift)
    if(checkChar=='0' || checkChar=='1' || checkChar=='2' || checkChar=='3' || checkChar=='4' || checkChar=='5' || checkChar=='6' || checkChar=='7' || checkChar=='8' || checkChar=='9'){
        return false;
    }
    return true;
}

function composeMessage(msg, value1) {
    var re = /\{1\}/gi;
    return msg.replace(re, value1);
}






