function numbersonly(myfield, e, dec)
{
var key;
var keychar;

if (window.event)
   key = window.event.keyCode;
else if (e)
   key = e.which;
else
   return true;
keychar = String.fromCharCode(key);

// control keys
if ((key==null) || (key==0) || (key==8) || 
    (key==9) || (key==13) || (key==27) )
   return true;
else if ((("0123456789").indexOf(keychar) > -1))
   return true;
else
   return false;
}


function isValidDate(month, day, year)
{
	var isValid;
	isValid = "Yes";
	
	if (day < 1 || day > 31) isValid = (month + '/' + day + '/' + year + ' is not a valid date.');

	if (month==4 || month==6 || month==9 || month ==11)
	{
		if (day > 30) isValid = ("Only 30 days in selected month.");
	}
	if (month ==2)
	{
		if (isLeapYear(year) == false && day > 28) 
			isValid = "Only 28 days in February in a non-leap year.";
		else 
			if (day > 29) 
			isValid = "Only 29 days in February in a leap year.";
	}

	return isValid;
}

function calculate(month, day, year)
{
var dayCount;
var message;
var message1;
var message2;
var message3;
var message4;

year = parseInt(year);
month = parseInt(month);
day = parseInt(day);
if (document.getElementById('Days').value != "")
{
	dayCount = parseInt(document.getElementById('Days').value);

	message = dayCount + " days " + document.getElementById('Select1').value.toLowerCase() + " " + fullDate(month, day, year) + " = ";
	message2 = "";
	message3 = "a weekend";
	message4 = isValidDate(month, day, year);


	if (message4 == "Yes")
		{
			if (document.getElementById('Select1').value == "Before")
			{
				while (dayCount > 0)
				{
        			if (day > 1)
            			day = (day-1);
	        		else 
    	    		{
        	    		if (month > 1)
            	    		month = (month-1);
	            		else
	            		{
    	            		month = 12;
        	        		year = (year-1);
            			}
         	  			day = daysInMonth(month, year);
		        	}
    	    		dayCount = (dayCount-1);
					message1 = isHoliday(month, day, year);
					if (document.getElementById('Adjust').checked == false)
	        		{
    	    			if ((message1 != "none") || isWeekend(month, day, year))
	    	    		{  	dayCount = dayCount + 1;
        	    			message2 = "\n\n" + "    (Weekends and holidays have been excluded.)" 
	        			}	
    	    		}
	    		}
			}
			else
			{
				while (dayCount > 0)
				{
       				if (day < daysInMonth(month, year))
           				day = (day+1);
	       			else
    	   			{
       					day = 1;
	       				if (month < 12)
   		        			month = (month+1);
       					else
       					{		
           					month = 1;
           					year = (year+1);
	           			}
    	   			}
            	

	    	    	dayCount = (dayCount - 1);
					message1 = isHoliday(month, day, year);
    	    		if ((message1 != "none") || isWeekend(month, day, year))
					{
						if (document.getElementById('Adjust').checked == false)
	  		        	{  	dayCount = dayCount + 1;
	        	    		message2 = "\n\n" + "    (Weekends and holidays have been excluded.)"
	    	    		}	
    		    	}
				}
			} 

			document.getElementById('Results').value = message + dayOfWeek(month, day, year) + ", " + fullDate(month, day, year) + message2;
		}

		else
			alert("Invalid date:  " + message4);
	}
else
	alert("Please enter number of days!");
		
} 

function daysInMonth(month, year)
{
	if ((month == 4) || (month == 6) || (month == 9) || (month == 11))
        return 30;
	else if ((month == 2) && (isLeapYear(year)))
        return 29;
    else if (month == 2)
        return 28;
    else 
        return 31;
}

function dayOfWeek(month, day, year)
{
var dayName;
var monthName;
var dateName;

	dateName = (month + '/' + day + '/' + year);
	sDate = new Date (dateName);

	dayName = new Array("Sunday", "Monday", "Tuesday", "Wednesday",
          "Thursday", "Friday", "Saturday");

	return dayName[sDate.getDay()];
}

function fullDate(month, day, year)
{
var monthName;
monthName = new Array("January", "February", "March", "April",
	"May", "June", "July", "August", "September", "October",
	"November", "December");

	return (monthName[month-1] + ' ' + day + ', ' + year);
}

function isLeapYear(year)
{
	if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
		return true;
	else
		return false;
}

function isHoliday(month, day, year)
{
var holidayName;
holidayName = "none";
        if (month == 1)
        	{
            if (day == 1)
            	holidayName = "New Years";
            else if ((dayOfWeek(month, day, year) == "Monday") &&
            		(day - 14 > 0) && (day - 7 < 15))
            	holidayName = "Martin Luther King Day";
            }
        if ((month == 2) && 
           (dayOfWeek(month, day, year) == "Monday") &&
	       		(day - 14 > 0) && (day - 7 < 15))
	       holidayName = "Washington's Birthday";
        if ((month == 5) &&
           (dayOfWeek(month, day, year) == "Monday") && 
           		(day > 24) && (day <= 31))
           holidayName = "Memorial Day";
        if ((month == 7) && (day == 4))
            holidayName = "July 4th";
        if ((month == 9) &&
           		(dayOfWeek(month, day, year) == "Monday") &&
           		(day > 0) && (day < 8))
            holidayName = "Labor Day";
        if ((month == 10) && 
           		(dayOfWeek(month, day, year) == "Monday") &&
           		(day - 7 > 0) && (day - 7 < 8))
            holidayName = "Columbus Day";
        if (month == 11)
        	{ 
        	if (day == 11)
        		holidayName = "Veterans Day";
        	else if ((dayOfWeek(month, day, year) == "Thursday") && 
            		(day - 21 > 0) && (day - 21 < 8))
            	holidayName = "Thanksgiving Day";
            }
		if ((month == 12) && (day == 25))
			holidayName = "Christmas";
		return holidayName;
}

function isWeekend(month, day, year)
{
	if ((dayOfWeek(month, day, year) == "Saturday") || (dayOfWeek(month,day,year) == "Sunday"))
		return true;
	else
		return false;
}

function todaysDate()
{
var rightNow = new Date();
	document.getElementById('UserSelectedMonth').value = rightNow.getMonth() + 1;
	document.getElementById('UserSelectedDay').value = rightNow.getDate();
	document.getElementById('UserSelectedYear').value = rightNow.getFullYear();
}
