// Datehandler (c) Easybook International AB

// gör separat funktion för arr och dep change
// ta emot fältobjekten som argument till funktionen
// arr change tar emot både arr och dep fälten
// år behöver inte hanteras

	   function set_dates(month, day, n, arrMonthSelect, arrDaySelect, depMonthSelect, depDaySelect, formname)
		{//endast använd av calendar
			var inputform = window.document.forms[formname];
					
			//alert(month + " " + day);
			
			arrMonthSelect = inputform.elements[arrMonthSelect];
			arrDaySelect = inputform.elements[arrDaySelect];
			
			depMonthSelect = inputform.elements[depMonthSelect];
			depDaySelect = inputform.elements[depDaySelect];
			
			//alert(arrMonthSelect.selectedIndex);
			
			//return
			
			if (n==1) //arrday
			{
				var date = new Date(get_year(new Date(nowdate.getFullYear(), month-1, day)), month-1, day);
				set_selMonth(arrMonthSelect, date);
				set_dayLength(arrDaySelect, date);
				set_selDay(arrDaySelect, date);
				arrdate_change(arrMonthSelect, arrDaySelect, depMonthSelect, depDaySelect);
			}
			else if (n==2) //depday
			{
				var date = new Date(get_year(new Date(nowdate.getFullYear(), month-1, day)), month-1, day);
				set_selMonth(depMonthSelect, date);
				set_dayLength(depDaySelect, date);
				set_selDay(depDaySelect, date);
				//set_selDay(depDaySelect, date);
			}
		}

		function depdate_change(depMonthSelect, depDaySelect)
		{
		
			var depmonth = parseInt(depMonthSelect.options[depMonthSelect.selectedIndex].value, 10) + (1-depMonthSelect.options[0].value);	
			var depday = parseInt(depDaySelect.options[depDaySelect.selectedIndex].value, 10);
			
			var depdate = new Date(get_year(new Date(nowdate.getFullYear(), depmonth-1, depday)), depmonth-1, depday);
				
			//alert(depdate)	
			
			set_dayLength(depDaySelect, depdate);
				
			set_selMonth(depMonthSelect, depdate);
			set_selDay(depDaySelect, depdate);
		
		}

		function arrdate_change(arrMonthSelect, arrDaySelect, depMonthSelect, depDaySelect)
		{
		
			
			var date = new Date();
			var inputform = window.document.forms["inputform"];

			var arrmonth = parseInt(arrMonthSelect.options[arrMonthSelect.selectedIndex].value, 10)+ (1-arrMonthSelect.options[0].value);	
			var arrday = parseInt(arrDaySelect.options[arrDaySelect.selectedIndex].value, 10);
				
			var arryear = get_year(new Date(nowdate.getFullYear(), arrmonth-1, arrday));
			
			if (arrday > daysInMonth(arryear, arrmonth)) arrday = daysInMonth(arryear, arrmonth);
			var arrdate = new Date(arryear, arrmonth-1, arrday);
	
			//verify correct number of days in daySelect
			set_dayLength(arrDaySelect, arrdate);

			//set depdate
			var depmonth = parseInt(depMonthSelect.options[depMonthSelect.selectedIndex].value, 10) + (1-depMonthSelect.options[0].value);	
			var depday = parseInt(depDaySelect.options[depDaySelect.selectedIndex].value, 10);

			var depdate = new Date(get_year(new Date(nowdate.getFullYear(), depmonth-1, depday)), depmonth-1, depday);
					
			if (days_between(depdate, arrdate) < 1 || days_between(depdate, arrdate) > 30)
				depdate = new Date(arrdate.getFullYear(), arrdate.getMonth(), arrdate.getDate()+1);	

			set_dayLength(depDaySelect, depdate);
			
			//alert(depdate)
			set_selMonth(depMonthSelect, depdate);
			set_selDay(depDaySelect, depdate);

		}
		
		function get_year(date)
		{
			//get year
			if (days_between(date, nowdate) < 0) return parseInt(nowdate.getFullYear()) + 1;
			else return nowdate.getFullYear();
		}
		
		function set_selMonth(sel, date)
		{
			//alert(1-sel.options[0].value);
			sel.options[date.getMonth()].selected=true;
		}
		
		function set_selDay(sel, date)
		{
			sel.options[date.getDate()-1].selected=true;
		}
	
		function set_dayLength(sel, date)
		{
			//alert(date);
			var days = daysInMonth(date.getFullYear(), date.getMonth()+1);
			if (sel.selectedIndex+1 > days) sel.options[days-1].selected = true;
			
			if (sel.length != days)
			{
				for (var n=28;n<=35;n++)
				{
					if (n<=days && sel.options[n-1] == null)//add a date 
					{
						if((n)<10){sel.options[n-1] = new Option("0" + (n), "0" + (n))}
						else{sel.options[n-1] = new Option(n, n)};
					}		
					if (n>days && sel.options[n-1] != null) //remove a date	
					{
						sel.options[n-1]=null;
						n=n-1;
					}
				}
			}
		
		}

		function days_between(date1, date2) {
	
			// Convert both dates to milliseconds
			var date1_ms = date1.getTime()
			var date2_ms = date2.getTime()
		
			// Calculate the difference in milliseconds
			var difference_ms = date1_ms - date2_ms
			
			// Convert back to days and return
			return Math.round(difference_ms/86400000)

		}
	
		function isLeapYear(y)
		{
			 return (y%4==0 && y%100!=0) || y%400==0;
		}
		
		function daysInMonth(y,m)
		{
			if (m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12) {
				return 31;
			} else if (m==4 || m==6 || m==9 || m==11) {
				return 30;
			} else {
				return isLeapYear(y) ? 29 : 28;
			}
		}