/*!
    UTILITA'
 */

function fn_Trim(str)
{
    // ELIMINO SPAZI PRIMA E DOPO
    return String(str).replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
function fn_IsDecimal(_nrToCheck) {
    // Checks that an input string is a decimal number, with an optional +/- sign character.
    // oppure ^[-+]?\d*\.?\d*$

    var sepDecimale = ".";
    var reg = "";
    reg += "^\\s*(\\+|-)?((\\d+(\\";
    reg += sepDecimale;
    reg += "\\d+)?)|(\\";
    reg += sepDecimale;
    reg += "\\d+))\\s*$";
    return _regExp(_nrToCheck, reg);
}

function _regExp(_txtToCheck, _txtPattern) {
    var txtToCheck = new String(_txtToCheck);
    var txtPattern = new RegExp(_txtPattern);
    return txtPattern.test(txtToCheck);
}

function isDate(dateStr) {

    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray = dateStr.match(datePat); // is the format ok?

    if (matchArray == null) {
        alert("Inserire una data nel formato [ gg/mm/aaaa ].");
        return false;
    }

    day = matchArray[1]; // p@rse date into variables
    month = matchArray[3];
    year = matchArray[5];

    if (month < 1 || month > 12) { // check month range
        alert("Mese deve essere compreso tra  1 and 12.");
        return false;
    }

    if (day < 1 || day > 31) {
        alert("Giorno deve essere compreso tra  1 and 31.");
        return false;
    }

    if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) {
        alert("Anno " + month + " non ha 31 giorni!")
        return false;
    }

    if (month == 2) { // check for february 29th
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day > 29 || (day == 29 && !isleap)) {
            alert("Febbraio " + year + " non ha " + day + " giorni!")            
            return false;
        }
    }
    return true; // date is valid
}


