﻿// File JScript

function validateDate(fld, sCulture) 
{
    switch (sCulture) 
    {
        case 'en-US':
            // en-US
            var RegExPattern = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
            if ((fld.value.match(RegExPattern)) && (fld.value!='')) 
                {
                    return true;
                } 
            else 
                {
                    return false;
                }
            break;
        default:
            // Altre lingue
            var RegExPattern = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;
            if ((fld.value.match(RegExPattern)) && (fld.value!='')) 
                {
                    return true;
                } 
            else 
                {
                    return false;
                } 
            break;
    }
}


function objData(strData) 
{
    var anno, mese, giorno;
    var chrSeparator;

    if (strData.lastIndexOf('.') != -1) 
    {
        chrSeparator = '.';
    }
    else if (strData.lastIndexOf('-') != -1) 
    {
        chrSeparator = '-';
    }
    else if (strData.lastIndexOf('/') != -1)  
    {
        chrSeparator = '/';
    }
    
    var data = strData.split(chrSeparator);
    
    if (data[2].length == 2) 
    {
        data[2] = "20" + data[2];
    }

    return new Date(data[2], parseInt(data[1], 10) - 1, parseInt(data[0], 10));
}

function objData(strData, sCulture) 
{
    var anno, mese, giorno;
    var chrSeparator;

    if (strData.lastIndexOf('.') != -1) 
    {
        chrSeparator = '.';
    }
    else if (strData.lastIndexOf('-') != -1) 
    {
        chrSeparator = '-';
    }
    else if (strData.lastIndexOf('/') != -1)  
    {
        chrSeparator = '/';
    }
    
    var data = strData.split(chrSeparator);
    
    if (data[2].length == 2) 
    {
        data[2] = "20" + data[2];
    }
    
    switch (sCulture) 
    {
        case 'en-US':
            // en-US
            return new Date(data[2], parseInt(data[0], 10), parseInt(data[1], 10));
        default:
            // Altre lingue
            return new Date(data[2], parseInt(data[1], 10) - 1, parseInt(data[0], 10));
    }
}

function CheckPeriodo(dtInizio, dtFine, iDaysRange, sCulture)
{
    var iMillisecondiXDay = 86400000;   // Millisecondi in un giorno
    var objInizio = objData(dtInizio, sCulture);
    var objFine = objData(dtFine, sCulture);

    if (parseInt(objFine.getTime() - objInizio.getTime(), 10) > parseInt((iMillisecondiXDay * iDaysRange), 10))
        return false;
    else
        return true;
}

