//#############################################################################
// ROUTINE VARIE                                                              
//#############################################################################

//-----------------------------------------------------------------------------
// Apertura di una finestra di popup
//-----------------------------------------------------------------------------
function ZZ_ApriLink(tipoApertura, nomeLink, larghezza, altezza, barraMenu, barraStatus)
{
    var parametri = "";
    
    if (larghezza > 0) {
        parametri = "width="  + larghezza + ", "
                  + "height=" + altezza   + ", ";
    }
    parametri += "menubar=" + barraMenu   + ", "
               + "status="  + barraStatus + ", "
               + "scrollbars=yes";
      
    newwindow = window.open(nomeLink, tipoApertura, parametri);
}

//-----------------------------------------------------------------------------
// Calcolo di una data con un delta giorni su una data parametro
// (sia la data in input che quella restituita in output sono nel formato "gg/mm/aaaa")
//-----------------------------------------------------------------------------
function ZZ_DeltaData(dataRif, numGiorni)
{
    var dataWk;
    var dataStr;
    
    dataWk  = new Date(Number(dataRif.substr(6, 4)),
                       Number(dataRif.substr(3, 2)),
                       Number(dataRif.substr(0, 2)));
    dataWk.setTime(dataWk.getTime() + numGiorni * (24*60*60*1000));
    dataStr = ((dataWk.getDate() < 10) ? "0" : "")  + dataWk.getDate()  + "/"
            + ((dataWk.getMonth() < 10) ? "0" : "") + dataWk.getMonth() + "/"
            + dataWk.getFullYear();
    
    return dataStr;
}

//-----------------------------------------------------------------------------
// Controllo di correttezza di un'indirizzo e-mail, restituisce true se è
// tutto ok, altrimenti false
//-----------------------------------------------------------------------------
function ZZ_CheckEmail(txtEmail)
{
    var trovataChiocciola    = false;
    var posizioneChiocciola  = -1;
    var trovatoPunto         = false;
    var posizioneUltimoPunto = -1;
    var txtEmail;
    var ix;
    
    txtEmail = txtEmail.toLowerCase();
    for (ix = 0; ix < txtEmail.length; ix++) {
        if (   (   txtEmail.charAt(ix) >= "a"
                && txtEmail.charAt(ix) <= "z")
            || (   txtEmail.charAt(ix) >= "0"
                && txtEmail.charAt(ix) <= "9")
            || (   txtEmail.charAt(ix) == "@"
                || txtEmail.charAt(ix) == "."
                || txtEmail.charAt(ix) == "_"
                || txtEmail.charAt(ix) == "-")) {
            
            if (txtEmail.charAt(ix) == "@") {
                // Errore se la chiocciola è il primo carattere
                if (!ix) {
                    return false;
                }                
                if (trovataChiocciola) {
                    // Errore se c'è più di una chiocciola
                    return false;
                } else {
                    // Errore se un punto è immediatamente prima di una chiocciola
                    if (   trovatoPunto
                        && (posizioneUltimoPunto == (ix - 1))) {
                        return false;
                    } else {
                        trovataChiocciola   = true;
                        posizioneChiocciola = ix;
                        continue;
                    }
                }
            }
            if (txtEmail.charAt(ix) == ".") {
                // Errore se il punto è il primo carattere
                if (!ix) {
                    return false;
                }
                if (   trovatoPunto
                    && (posizioneUltimoPunto == (ix - 1))) {
                    // Errore se ci sono due punti di seguito
                    return false;
                }
                // Errore se la chiocciola è immediatamente prima del punto
                if (   trovataChiocciola
                    && (posizioneChiocciola == (ix - 1))) {
                    return false;
                }
                trovatoPunto         = true;
                posizioneUltimoPunto = ix;
                continue;
            }
        } else {
            // Errore se è un carattere non ammesso
            return false;
        }
    }
      
    if (   !trovataChiocciola
        || !trovatoPunto
        || (posizioneChiocciola > posizioneUltimoPunto)
        || (posizioneUltimoPunto == (txtEmail.length - 1)))  {
        return false;
    }

    return true;
}

//-----------------------------------------------------------------------------
// Controlla i caratteri di un numero di telefono restituendo
// true se sono tutti ok, false altrimenti
//-----------------------------------------------------------------------------
function ZZ_CheckTelefono(txtTelefono)
{
    // Numero minimo di cifre ammesse è 7, ossia min. 2 di prefisso e min. 5 di numero
    var numMinCifre     = 7;
    var numCifreTrovate = 0;
    var ix;
    
    for (ix = 0; ix < txtTelefono.length; ix++) {
        if (   txtTelefono.charAt(ix) >= '0'
            && txtTelefono.charAt(ix) <= '9') {
            numCifreTrovate++;
            continue;
        } else {
            if (   txtTelefono.charAt(ix) == '.'
                || txtTelefono.charAt(ix) == '-'
                || txtTelefono.charAt(ix) == '+'
                || txtTelefono.charAt(ix) == ' '
                || txtTelefono.charAt(ix) == '/') {
                continue;
            } else {
                return false;
            }
        }
    }
    
    if (numCifreTrovate < numMinCifre) {
        return false;
    }
    
    return true;
}

//-----------------------------------------------------------------------------
// Controllo di valorizzazione di una stringa, restituisce true
// se la stringa è vuota o contiene solo spazi, altrimenti "false"
//-----------------------------------------------------------------------------
function ZZ_StringaVuota(strTest)
{
    var risultato = true;
    var ix;
    
    if (strTest.length > 0) {
        for (ix = 0; ix < strTest.length; ix++) {
            if (   strTest.charAt(ix) != " "
                && strTest.charAt(ix) != "\n"
                && strTest.charAt(ix) != "\r"
                && strTest.charAt(ix) != "\t ") {
                risultato = false;
                break;
            }
        }
    }
        
    return risultato;
}

//-----------------------------------------------------------------------------
// Controllo di valorizzazione di una stringa, restituisce true
// se la stringa è vuota o contiene solo spazi, altrimenti "false"
//-----------------------------------------------------------------------------
function ZZ_Trim(stringa)
{
    var ix;
    
    if (stringa.length == 0) {
        return stringa;
    }

    // Elimina i caratteri "vuoti" iniziali, "ix" indica la posizione in cui ha
    // trovato un carattere "non vuoto"
    for (ix = 0; ix < stringa.length; ix++) {
        if (   stringa.charAt(ix) != " "
            && stringa.charAt(ix) != "\n"
            && stringa.charAt(ix) != "\r"
            && stringa.charAt(ix) != "\t ") {
            break;
        }
    }
    stringa = stringa.substr(ix, stringa.length - ix);

    // Elimina i caratteri "vuoti" finali, "ix" indica la posizione in cui ha
    // trovato un carattere "non vuoto"
    for (ix = stringa.length - 1; ix >= 0; ix--) {
        if (   stringa.charAt(ix) != " "
            && stringa.charAt(ix) != "\n"
            && stringa.charAt(ix) != "\r"
            && stringa.charAt(ix) != "\t ") {
            break;
        }
    }
    stringa = stringa.substr(0, ix + 1);
        
    return stringa;
}

//------------------------------------------------------------------------------
// In base alla lingua della pagina restituisce un parametro o l'altro. Il
// default è la lingua italiana.
//------------------------------------------------------------------------------
function ZZ_TxLang(strIta, strEng)
{
    return ((ZZ_LANG == "en") ? strEng : strIta);
}
