var monthName = new Array("January", 
						"February", 
						"March", 
						"April",
						"May", 
						"June", 
						"July", 
						"August", 
						"September", 
						"October",
						"November", 
						"December"); 

function clean_duedateResult()
{
	document.dueDateCalculator.resultField.value="";
	document.dueDateCalculator.resultSumField.value="";
}

function setCurrentDate()
{
	var curDate = new Date();
	var curDay   = curDate.getDate();
	var curMonth = curDate.getMonth();
	var curYear  = curDate.getUTCFullYear();
	
	// set current day
	document.writeln("<select name=dayField size=1 onchange=clean_duedateResult()>");
	for (var i=1; i <= 31; i++) 
	{
		if (i == curDay)
			document.writeln("<option selected>" + i);
		else
			document.writeln("<option>" + i);
		
		document.writeln("</option>");
	}
	document.writeln("</select>");
	
	// set current month
	document.writeln("<select name=monthField size=1 onchange=clean_duedateResult()>");
	for (var j=0; j < 12; j++) 
	{
		if (j == curMonth)
			document.writeln("<option selected>" + monthName[j]);
		else 
			document.writeln("<option>" + monthName[j]);
			
		document.writeln("</option>");
	}
	document.writeln("</select>");
	
	// set current year
	document.writeln("<input type=text name=yearField value="+ curYear + " size=4 maxlength=4 onkeypress=clean_duedateResult()>");
}

function dueDateCalc(form)
{ 
	var _shiftDay  = form.shiftDay.value;
	var _direction = form.directionField.selectedIndex +1;
	var _day       = form.dayField.selectedIndex + 1;
	var _month     = form.monthField.selectedIndex;
	var _year      = form.yearField.value;
	
	var _init_sum  = form.initialSum.value;
	var _percent   = form.percentDay.value;
	var _compound  = form.compoundInterest.checked;
	
	init_sum = parseFloat(_init_sum);
	percent  = parseFloat(_percent);
	
	if ( form.compoundInterest.checked )
	{
		compound = 1;
	}
	else
	{
		compound = 0;
	}

	clean_duedateResult(); 
	intShift     = parseInt(_shiftDay); 
	intYear      = parseInt(_year); 
	intMonth     = parseInt(_month); 
	intDay       = parseInt(_day); 
	intDirection = parseInt(_direction); 
	
	intShift     = parseInt(_shiftDay); 
	
	if ( (_shiftDay == "")  || !(intShift >= 0) )
	{
 		alert("Number of days must be an integer."); 
 		document.dueDateCalculator.shiftDay.focus(); 
 		document.dueDateCalculator.shiftDay.select(); 
 		return false;
	}
	else
	{
		if ( (_year == "")  || !(intYear >= 1900) )
		{
			alert("Year must be an integer not less than 1900."); 
			document.dueDateCalculator.yearField.focus(); 
			document.dueDateCalculator.yearField.select(); 
			return false;
		}
		else
		{
			if ( !( (intShift > 0 ) && ( intShift <1000) ) )
			{ 
				alert("Number of days must be more than 0 and less, than 1000."); 
				document.dueDateCalculator.shiftDay.focus(); 
				document.dueDateCalculator.shiftDay.select(); 
				return false;
			}
			
			if ( ((intYear % 4)==0 && (intYear % 100)!=0) || (intYear % 400)==0 )
			{
				// leap year
				if ( ( intMonth == 1 ) && ( intDay > 29 ) )
				{ 
					alert("Leap year: February cannot have more than 29 days."); 
					return false;
				}
			}
			else
			{
				// nonleap year
				if ( ( intMonth == 1 ) && ( intDay > 28 ) )
				{ 
					alert("February cannot have more than 28 days."); 
					return false;
				}
			}
			
			if ( ( (intMonth==3) || (intMonth==5) || (intMonth==8) || (intMonth==10) ) && (intDay>30) )
			{ 
				alert("This month cannot have more than 30 days."); 
				return false;
			}

			monthArray = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
			curr_date = new Date(intYear, intMonth, intDay, 1, 1, 1);
			var step_forward  =  86400000;
			var step_backward = -86400000;
			
			var result_sum = init_sum;
			for (var i=0; i < intShift; i++) 
			{
               if ( intDirection == 1 )
			   {
					curr_date.setTime(curr_date.getTime() + step_forward);
			   }
			   else
			   {
					curr_date.setTime(curr_date.getTime() + step_backward);
			   }
			   
				if ( compound ) 
				{
					// if compound interest
					result_sum += (result_sum/100) * percent;
					
				}
				else
				{
					result_sum += (init_sum/100) * percent;
				}
			}
			
		    monthName = monthArray[curr_date.getMonth()];
		    document.dueDateCalculator.resultField.value= monthName + " " + curr_date.getDate() + ", " + curr_date.getFullYear();
			document.dueDateCalculator.resultSumField.value= result_sum.toFixed(4);
		}
	}
	
}
