//Input a datepackage and output correct Month
function getMonthString(datepackage){
	var month=new Array(12);
		month[0]="01";
		month[1]="02";
		month[2]="03";
		month[3]="04";
		month[4]="05";
		month[5]="06";
		month[6]="07";
		month[7]="08";
		month[8]="09";
		month[9]="10";
		month[10]="11";
		month[11]="12";
		
	return month[datepackage.getMonth()];
}

//use for get date button (optional)
function getTheStartDate() { 
	var t1 = $('#startDatepicker').datepick('getDate');
	
	alert('The Start date is : ' + t1); 	

} 

function getTheEndDate() { 
	var t2 = $('#endDatepicker').datepick('getDate');
	
	alert('The End date is : ' + t2); 	

} 

//set return date one day after the start date
function customRange(input) { 
	
	var tempstart = $('#startDatepicker').datepick('getDate');
	tempstart.setDate(tempstart.getDate() + 1);
	var tempstartDay = tempstart.getDate();
	var tempstartMonth = tempstart.getMonth()*1 + 1;
	var tempstartYear = tempstart.getFullYear();
	return {minDate: (input.id == 'endDatepicker' ? 
		tempstartMonth + '/' + tempstartDay + '/' + tempstartYear : null)};  
	
}

   	function holidays(date) {   
    for (i = 0; i < hd.length; i++) {   
        if (date.getMonth() == hd[i][0] - 1 && date.getDate() == hd[i][1] && date.getFullYear() == hd[i][2]) {   
            return [false, hd[i][3] + '_day'];   
        }   
    }   
    return [true, ''];   
	}
	

   	function skipHolidays() {
		//alert ("in skipHolidays");

		var date = $('#startDatepicker').datepick('getDate');
		var skipDays = 1;
		for (i = 0; i < hd.length; i++) {   
			if (date.getMonth() == hd[i][0] - 1 && date.getDate()+skipDays == hd[i][1] && date.getFullYear() == hd[i][2]) {   
				skipDays++;   
			}   
		}
		
		var nextDate=date;
			//alert ("start nextdate = " + nextDate);
		nextDate.setDate(nextDate.getDate()+skipDays);
			//alert ("start nextdate = " + nextDate);
		var nextDateDay = nextDate.getDate();
		var nextDateMonth = nextDate.getMonth() *1 + 1; 
		var nextDateYear = nextDate.getFullYear(); 	
		var nextDateFormated = nextDateMonth +'/'+nextDateDay+'/'+nextDateYear;
			//alert ("SkipDays = " + skipDays + " nextDateFormated = " + nextDateFormated);
		return nextDateFormated;
	}
	
	
	function skipStartHolidays() {
	 

		var date = new Date();
		var skipDays = 1;
		
		for (i = 0; i < hd.length; i++) {   
			if (date.getMonth() == hd[i][0] - 1 && date.getDate()+skipDays == hd[i][1] && date.getFullYear() == hd[i][2]) {   
				skipDays++;   
			}   
		}
		
		var nextDate=date;
			//alert ("start nextdate = " + nextDate);
		nextDate.setDate(nextDate.getDate()+skipDays);
		var nextDateDay = nextDate.getDate();
		var nextDateMonth = nextDate.getMonth() *1 + 1; 
		var nextDateYear = nextDate.getFullYear(); 	
		var nextDateFormated = nextDateMonth +'/'+nextDateDay+'/'+nextDateYear;
		return nextDateFormated;
	}

/*
Gets startTime and endTime as arguments.  AfterHrDropOff is an option argument where default value is 0.  
This function takes in the arguments and generate a return variable containing a list of select options for a location's opening hours.  Between each option, It will increase by 30 minutes until it meets the endTime.
*/

	function openingHours(startTime, endTime, AfterHrDropOff){
		var AfterHrDropOff = AfterHrDropOff || 0;
		
		var resultOption ="";
		var temp_now = new Date ('01/01/2000');
		var a = new Date ('01/01/2000');
		var b = new Date ('01/01/2000');	
		var startTimeHour = startTime.substring(0,2);
		var startTimeMinute = startTime.substring(3,5);
		temp_now.setHours(startTimeHour);
		temp_now.setMinutes(startTimeMinute);
		a.setHours(startTimeHour);
		a.setMinutes(startTimeMinute);
		b.setHours(23);
		b.setMinutes(30);

		var openTimeString=startTimeHour+":"+startTimeMinute;
		
		var temp_end = new Date ('01/01/2000');
		var endTimeHour = endTime.substring(0,2);
		var endTimeMinute = endTime.substring(3,5);
		temp_end.setHours(endTimeHour);
		temp_end.setMinutes(endTimeMinute);

		var afterHourDropOff = new Date ('01/01/2000');

		if (openTimeString != "00:00"){
			if (AfterHrDropOff == 1){
				while (afterHourDropOff < temp_now ){
					
					var hour = afterHourDropOff.getHours();
					var minute = afterHourDropOff.getMinutes();
						if (hour < 10){hour = "0" + hour;}
						if (minute < 10){minute = "0" + minute;}
					var clockTime = hour+":"+minute;
					
					resultOption += "<option class=\"red\" value=\""+ clockTime +"\">"+ clockTime + "</option>";
					
					var temp_minutes = afterHourDropOff.getMinutes();
					temp_minutes += 30;  // Add 30 minutes to the time
					afterHourDropOff.setMinutes(temp_minutes);
					
				}
			}
		}
		
		while (temp_now<=temp_end){
			var hour = temp_now.getHours();
			var minute = temp_now.getMinutes();
				if (hour < 10){hour = "0" + hour;}
				if (minute < 10){minute = "0" + minute;}
			var clockTime = hour+":"+minute;
				if (clockTime == "00:00"){
					resultOption += "<option value=\"Closed\">Closed</option>";				
				}else{
					if (temp_now <= a){ 
						resultOption += "<option value=\""+ clockTime +"\" Selected>"+ clockTime + "</option>";
					}else{
						resultOption += "<option value=\""+ clockTime +"\">"+ clockTime + "</option>";						
					}
				}
			var temp_minutes = temp_now.getMinutes();
			temp_minutes += 30;  // Add 30 minutes to the time
			temp_now.setMinutes(temp_minutes);
		}
		

		if (openTimeString != "00:00"){
			afterHourDropOff.setHours(endTimeHour);
			afterHourDropOff.setMinutes(endTimeMinute);
			afterHourDropOff.setMinutes(30);

				
			if (AfterHrDropOff == 1){
				while (afterHourDropOff < b ){
					
					var hour = afterHourDropOff.getHours();
					var minute = afterHourDropOff.getMinutes();
						if (hour < 10){hour = "0" + hour;}
						if (minute < 10){minute = "0" + minute;}
					var clockTime = hour+":"+minute;
					resultOption += "<option class=\"red\" value=\""+ clockTime +"\">"+ clockTime + "</option>";
					
					var temp_minutes = afterHourDropOff.getMinutes();
					temp_minutes += 30;  // Add 30 minutes to the time
					afterHourDropOff.setMinutes(temp_minutes);
					
				}
			}
		}
		return resultOption;
	}

function dateString(a){
	var dtyear = a.getFullYear();
	var dtmonth = a.getMonth()*1+1;
	var dtday = a.getDate();
	if (dtday < 10){dtday = "0" + dtday;}
	if (dtmonth < 10){dtmonth = "0" + dtmonth;}
		return (dtyear+""+dtmonth+""+dtday);
}

function isHoliday(dateString, HH){
	var i = 0;
	var isAHoliday = -1;
	for ( var f in HH ) {
		i++;
		var b = eval("HH.a"+i+"[0].HolidayDate");
		if (b == dateString){
			isAHoliday = i;
		};
	};
	return isAHoliday;
}
