var defaultEmptyOK = false;
var daysInMonth = new initDaysInMonth();
function initDaysInMonth()
{
	iDiM = new makeArray(13);
	iDiM[0] = 0;
	iDiM[1] = 31;
	iDiM[2] = 29;
	iDiM[3] = 31;
	iDiM[4] = 30;
	iDiM[5] = 31;
	iDiM[6] = 30;
	iDiM[7] = 31;
	iDiM[8] = 31;
	iDiM[9] = 30;
	iDiM[10] = 31;
	iDiM[11] = 30;
	iDiM[12] = 31;
	return iDiM;
}

function makeArray(n)
{
	this.length = n;
	for (var i = 1; i <= n; i++)
		this[i] = 0;
	return this;
}

function isYear (s)
{   if (isEmpty(s)) 
       if (isYear.arguments.length == 1) return defaultEmptyOK;
       else return (isYear.arguments[1] == true);
    if (!isNonnegativeInteger(s)) return false;
    return ((s.length == 2) || (s.length == 4));
}

function isEmpty(s)
{   
	return ((s == null) || (s.length == 0))
}

function isDigit (c)
{   
	return ((c >= "0") && (c <= "9"))
}

function isIntegerInRange (s, a, b)
{   
	if (isEmpty(s)) 
		if (isIntegerInRange.arguments.length == 1) 
			return defaultEmptyOK;
		else 
			return (isIntegerInRange.arguments[1] == true);
    if (!isInteger(s, false)) return false;
    var num = parseInt (s);
    return ((num >= a) && (num <= b));
}

function isInteger (s)
{   
	var i;

    if (isEmpty(s)) 
		if (isInteger.arguments.length == 1) 
			return defaultEmptyOK;
		else 
			return (isInteger.arguments[1] == true);
    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (!isDigit(c)) return false;
    }
    return true;
}

function isSignedInteger (s)
{   
	if (isEmpty(s)) 
		if (isSignedInteger.arguments.length == 1) 
			return defaultEmptyOK;
		else 
			return (isSignedInteger.arguments[1] == true);
    else 
    {
        var startPos = 0;
        var secondArg = defaultEmptyOK;
        if (isSignedInteger.arguments.length > 1)
            secondArg = isSignedInteger.arguments[1];
        if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
           startPos = 1;    
        return (isInteger(s.substring(startPos, s.length), secondArg))
    }
}

function isNonnegativeInteger (s)
{   
	var secondArg = defaultEmptyOK;
    if (isNonnegativeInteger.arguments.length > 1)
		secondArg = isNonnegativeInteger.arguments[1];
    return (isSignedInteger(s, secondArg)
         && ( (isEmpty(s) && secondArg)  || (parseInt (s) >= 0) ) );
}

function isIntegerInRange (s, a, b)
{   if (isEmpty(s)) 
       if (isIntegerInRange.arguments.length == 1) return defaultEmptyOK;
       else return (isIntegerInRange.arguments[1] == true);
    if (!isInteger(s, false)) return false;
    var num = parseInt (s);
    return ((num >= a) && (num <= b));
}

function isMonth (s)
{   if (isEmpty(s)) 
       if (isMonth.arguments.length == 1) return defaultEmptyOK;
       else return (isMonth.arguments[1] == true);
    return isIntegerInRange (s, 1, 12);
}

function isDay (s)
{   if (isEmpty(s)) 
       if (isDay.arguments.length == 1) return defaultEmptyOK;
       else return (isDay.arguments[1] == true);   
    return isIntegerInRange (s, 1, 31);
}

function daysInFebruary (year)
{   
    return (  ((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0) ) ) ? 29 : 28 );
}

function isDate (year, month, day)
{
   if (! (isYear(year, false) && isMonth(month, false) && isDay(day, false))) return false;

    var intYear = parseInt(year);
    var intMonth = parseInt(month);
    var intDay = parseInt(day);

    if (intDay > daysInMonth[intMonth]) return false; 
    if ((intMonth == 2) && (intDay > daysInFebruary(intYear))) return false;
    return true;
}

function checkDate (sDate)
{
	var i, iSlashCount;
	var s, sTmp;
	var sMo, sDa, sYr;
	
	s = "";
	sTmp = "";
	sMo = "";
	sDa = "";
	sYr = "";
	if (sDate.charAt(0) == "/")
		return false;
	for (i = 0; i < sDate.length; i++)
	{
		s = sDate.charAt(i);
		if (s == "/")
		{
			if (sMo == "")
				sMo = sTmp;
			else
				if (sDa == "")
					sDa = sTmp;
				else
				{
					sYr = sTmp;
					i = sDate.length;
				}
			sTmp = "";
		}
		else
		{
			sTmp = sTmp + s;
			if ((sMo == "" || sDa == "") && sTmp.length > 2)
				return false;
		}
	}
	if (sYr == "")
		sYr = sTmp;
	if (sMo == "" || sDa == "" || sYr == "")
		return false;
	if (sMo.charAt(0) == "0")
		sMo = sMo.charAt(1);
	if (sDa.charAt(0) == "0")
		sDa = sDa.charAt(1);
	if (sYr.charAt(0) == "0")
		sYr = "20" + sYr;
	return isDate(sYr, sMo, sDa);
}