//********************************************************************************
//********************************************************************************
// Version 01.00 - 12/02/2007
//
// This file contains some general date/time handling routines
//********************************************************************************
// IsDate        : Are value(s) a valid date
//********************************************************************************
//********************************************************************************

//********************************************************************************
//    Author: Steve Betts
//      Date: Oct 2005
//      Desc: IsDate
//            Returns true if the three elements of the date make up a valid date
//
// Amendment:
//********************************************************************************
function IsDate(p_sDay, p_sMonth, p_sYear, p_nMinYear, p_nMaxYear){

var nDaysInMonth=new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
var sDay;
var sMonth;
var sYear;
var nDay;
var nMonth;
var nYear;

// --------------------------------------
// All elements must exist and be numeric
// --------------------------------------
sDay=Trim(p_sDay);
sMonth=Trim(p_sMonth);
sYear=Trim(p_sYear);
if ((sDay.length==0) || !(IsInteger(sDay)) || (sMonth.length==0) || !(IsInteger(sMonth)) || (sYear.length==0) || !(IsInteger(sYear))) return false;

// ------------------------
// Convert string to number
// ------------------------
nDay=parseInt(sDay,10);
nMonth=parseInt(sMonth,10);
nYear=parseInt(sYear,10);
if ((nDay==0) || (nMonth==0) || (nYear==0)) return false;

// --------------------------------------
// Adjust days in February for leap years
// --------------------------------------
if ((nYear % 4 == 0) && ((!(nYear % 100 == 0)) || (nYear % 400 == 0))) nDaysInMonth[2]=29;

// -----------------
// Validate elements
// -----------------
if (nMonth<1 || nMonth>12) return false;
if (nDay > nDaysInMonth[nMonth]) return false;
if (nYear<p_nMinYear || nYear>p_nMaxYear) return false;
return true;
};


