// ******************************************************************
// This function accepts a string variable and verifies if it is a
// proper date or not. It validates format matching one of these
// formats: mm-dd-yyyy, mm-dd-yy, mm/dd/yyyy, or mm/dd/yy. Then it
// checks to make sure the month has the proper number of days, based
// on which month it is.
// The function returns true if a valid date, false if not.
// ******************************************************************

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("Please enter date in one of the following formats:\nmm/dd/yy, mm/dd/yyyy, mm-dd-yyyy, or mm-dd-yyyy.");
        return false;
    }

    day = matchArray[1]; // parse date into variables
    month = matchArray[3];
    year = matchArray[5];

    if (month < 1 || month > 12) { // check month range
//        alert("Month must be between 1 and 12.");
        return false;
    }

    if (day < 1 || day > 31) {
//        alert("Day must be between 1 and 31.");
        return false;
    }

    if ((month==4 || month==6 || month==9 || month==11) && day==31) {
//        alert("Month "+month+" doesn't have 31 days!")
        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("February " + year + " doesn't have " + day + " days!");
            return false;
        }
    }
    return true; // date is valid
}

// Compara dues dates
// -1 -> Si la primera és mes gram
// 0 -> si son iguals
// 1 -> Si la segona és mes gran
function ComparacioData(data1, data2)
{
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;

    var matchArray1 = data1.match(datePat);
    var matchArray2 = data2.match(datePat);

    if (matchArray1 == null) return "ERROR";
    if (matchArray2 == null) return "ERROR";

    day1 = matchArray1[1];
    month1 = matchArray1[3];
    year1 = matchArray1[5];

    day2 = matchArray2[1];
    month2 = matchArray2[3];
    year2 = matchArray2[5];

    if (month1 < 1 || month1 > 12) return "ERROR";
    if (day1 < 1 || day1 > 31) return "ERROR";
    if ((month1==4 || month1==6 || month1==9 || month1==11) && day1==31) return "ERROR";

    if (month2 < 1 || month2 > 12) return "ERROR";
    if (day2 < 1 || day2 > 31) return "ERROR";
    if ((month2==4 || month2==6 || month2==9 || month2==11) && day2==31) return "ERROR";


    if (month1 == 2)
    {
        var isleap = (year1 % 4 == 0 && (year1 % 100 != 0 || year1 % 400 == 0));
        if (day1 > 29 || (day1==29 && !isleap)) return "ERROR";
    }

    if (month2 == 2)
    {
        var isleap = (year2 % 4 == 0 && (year2 % 100 != 0 || year2 % 400 == 0));
        if (day2 > 29 || (day2==29 && !isleap)) return "ERROR";
    }


    if (year1 > year2) return -1;
    if (year1 < year2) return 1;

    if (month1 > month2) return -1;
    if (month1 < month2) return 1;

    if (day1 > day2) return -1;
    if (day1 < day2) return 1;

    return 0;
}

