/*
 *
 * Copyright (c) 2010 Nick Busey (http://nickabusey.com/)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Version 1.0.1
 * 
 */
(function($)
	{
		$.fn.dateSelectBoxes = function(month, day, year)
			{
				var allDays = 
				{
					"1" : "1", "2" : "2", "3" : "3",
					"4" : "4", "5" : "5", "6" : "6",
					"7" : "7", "8" : "8", "9" : "9",
					"10" : "10", "11" : "11", "12" : "12",
					"13" : "13", "14" : "14", "15" : "15",
					"16" : "16", "17" : "17", "18" : "18",
					"19" : "19", "20" : "20", "21" : "21",
					"22" : "22", "23" : "23", "24" : "24",
					"25" : "25", "26" : "26", "27" : "27",
					"28" : "28", "29" : "29", "30" : "30",
					"31" : "31"
				};
				function isLeapYear() {
					var selected = $("#"+year).selectedValues();
					return ( selected == "" || ( ( selected % 4 == 0 ) && ( selected % 100 != 0 ) ) || ( selected % 400 == 0) );
				}
				function updateDays() {
					var selected = $("#"+day).selectedValues();
					$("#"+day).removeOption(/./);
					var days = {};
					switch (parseInt($("#"+month).val())) {
						case 1:
						case 3:
						case 5:
						case 7:
						case 8:
						case 10:
						case 12:
							for (i=1;i<=31;i++)
							{
								days[i]=allDays[i]
							}
						break;
						case 2:
							var febDays = 0;
							if (isLeapYear())
								febDays = 29;
							else
								febDays = 28;
							for (i=1;i<=febDays;i++)
							{
								days[i]=allDays[i]
							}
						break;
						case 4:
						case 6:
						case 9:
						case 11:
							for (i=1;i<=30;i++)
							{
								days[i]=allDays[i]
							}
						break;
					}
					$("#"+day).addOption(days, false);
					$("#"+day).selectOptions(selected);
				}
				$("#"+year).change( function() {
					updateDays();
				});
				$("#"+month).change( function() {
					updateDays();
				});
			};
})(jQuery);
