function valiDate_exact(datestr)
{
	var isDate = new Date(datestr);

	if(!isNaN(isDate) || isDate != "Invalid Date")
	{

		if(datestr.replace(/[0-9\/]/g, "") == "")
		{
    		var parts = datestr.split("/");

    		for(var i = 0; i < parts.length; i++)
        		parts[i] = parts[i] * 1;

    		if(parts[2] > 1900)
    		{
    			var febdays = 28 + (new Date("2/29/" + new Date(datestr).getFullYear()).getMonth() == 1);
    			var daysInMonth = [0,31, febdays, 31,30,31,30,31,31,30,31,30,31];

    			if(parts[0] > 0 && parts[0] <= 12)
    			{
        			if(parts[1] > 0 && parts[1] <= daysInMonth[parts[0]])
            		return true;
    			}
			} // end parts[2] >1900

		} // end datestr.replace
	} // end if !isNaN

	return false;
}

function set_age(dob)
{
	var datDOB = new Date(dob);

	// Invalid date, stop and return 0 now instead of NaN
	if (isNaN(datDOB)) return 0;
	
	var datNow = new Date();
	var datDiff = new Date(datNow.getFullYear(), datDOB.getMonth(), datDOB.getDate());
	
	var age;

	if (datNow < datDiff)
		age = (datNow.getFullYear() - datDOB.getFullYear()) - 1;
	else
		age = datNow.getFullYear() - datDOB.getFullYear();

	return age;
}
