//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;
}

/*
May 31, 2010 - RL
Gets ServerDate, ServerTime, Location Pick Up Open Time,  current day Location close time, nextDayPickup value, and nextDayPickUpClosingbuffer value as arguments.  
This function takes in the arguments, applies the buffer values, then generate and return the location's new pickup open time for the next day.  
*/

function applyBuffer(serverDate, serverTime, StartDateOpen, LocationCloseTimeToday, nextDayPickUp, nextDayPickUpClosingbuffer){
	var a = StartDateOpen;
	//a = "06:30";
	//alert ("in js LocationCloseTimeToday: "+LocationCloseTimeToday);
	
	if (nextDayPickUpClosingbuffer != "" && nextDayPickUp != ""){
		//set temp time object d for calculation of nextDayPickUpClosingTime
		var d = new Date (LocationCloseTimeToday);
		d.setHours(d.getHours() - parseInt(nextDayPickUpClosingbuffer)); // Subtract nextDayPickUpClosingbuffer time from Loaction close time
		
		//set temp time object e (convert server Time into object)
		var e = new Date ('01/01/2000');
		var e_Hour = serverTime.substring(0,2);
		var e_Minute = serverTime.substring(3,5);
		e.setHours(e_Hour);
		e.setMinutes(e_Minute);
		difference_in_milliseconds = d - e;
		//if server time is greater than nextDayPickupClosingTime 
		if (difference_in_milliseconds < 0)
		{
			// convert tomorrow's location open time into time object for calculation
			var f = new Date ('01/01/2000');
			var f_Hour = StartDateOpen.substring(0,2);
			//alert("f_Hour : "+f_Hour);
			var f_Minute = StartDateOpen.substring(3,5);
			f.setHours(f_Hour);
			f.setMinutes(f_Minute);
			f.setHours(f.getHours()+parseInt(nextDayPickUp)); //apply nextDayPickUp value onto tomorrow's location open hour
			var temp_f_hour = f.getHours();		
			var temp_f_minute = f.getMinutes();
			if (temp_f_hour < 10){temp_f_hour = "0" + temp_f_hour;}
			if (temp_f_minute < 10){temp_f_minute = "0" + temp_f_minute;}
			var updated_f = temp_f_hour+":"+temp_f_minute;
			//alert("in js next day open hour:"+updated_f);
			//alert("d is before e!");
			
			a = updated_f;
			
			//alert ("in js d after subtract : "+d +"\nServer Time (e) : "+e);			  
			//alert ("nextDayPickUpClosingbuffer : " + nextDayPickUpClosingbuffer +"\nnextDayPickUp: "+ nextDayPickUp);
		}
	}
	return a;
}