
var dayFourteen = '';
var combinedArray 		= new Array();
var businessDaysArray 	= new Array();
var now 				= new Date();
var futureYear 			= now.getFullYear();

function getActualDate(numberCount, dayName, monthName, yearNumber, lastDay) {
	//example - (4th Thursday in November = getActualDate(4, thursday, november, 2005, no))
	//changes from no - (nTh day of month) to yes - (last day of month)
	//this function requires an array initilized outside of itself named holidayArray
	var dateToReturn = new Date();
	var temp;
	var dayNumber;
	var monthNumber;
	var counter = 0;
	
	switch (dayName) {
		case 'Sunday':
			dayNumber = 0;
			break;
		case 'Monday':
			dayNumber = 1;
			break;
		case 'Tuesday':
			dayNumber = 2;
			break;
		case 'Wednesday':
			dayNumber = 3;
			break;
		case 'Thursday':
			dayNumber = 4;
			break;
		case 'Friday':
			dayNumber = 5;
			break;
		case 'Saturday':
			dayNumber = 6;
			break;
	}
	
	switch (monthName) {
		case 'January':
			monthNumber = 0;
			dayCount	= 31;
			break;
		case 'February':
			monthNumber = 1;
			if (yearNumber) {
				if ((yearNumber % 4) == 0) {
					temp = 29;
				}
				else {
					temp = 28;
				}
			dayCount 	= temp;
			break;
			}
		case 'March':
			monthNumber = 2;
			dayCount	= 31;
			break;
		case 'April':
			monthNumber = 3;
			dayCount	= 30;
			break;
		case 'May':
			monthNumber = 4;
			dayCount	= 31;
			break;
		case 'June':
			monthNumber = 5;
			dayCount	= 30;
			break;
		case 'July':
			monthNumber = 6;
			dayCount	= 31;
			break;
		case 'August':
			monthNumber = 7;
			dayCount	= 31;
			break;
		case 'September':
			monthNumber = 8;
			dayCount	= 30;
			break;
		case 'October':
			monthNumber = 9;
			dayCount	= 31;
			break;
		case 'November':
			monthNumber = 10;
			dayCount	= 30;
			break;
		case 'December':
			monthNumber = 11;
			dayCount	= 31;
			break;
	}
	
	if (lastDay == '') {
		for (i = 0; i <= dayCount; i++) {
			var tempDate = new Date(yearNumber, monthNumber, i);
			
			if (tempDate != 'NaN') {
				tempDay = tempDate.getDay();
				
				if (tempDay == dayNumber) {
					counter++;
				}
				if (counter == numberCount) {
					var tempDayofMonth = i;
					
					if (tempDayofMonth == 0) {
						tempDayofMonth = 7;
					}
					
					var returnDate = tempDate;
					return cleanDate(returnDate, tempDayofMonth);
				}
			}
		}
	}
	else {
		for (i = dayCount; i <= dayCount; i--) {
			var tempDate = new Date(yearNumber, monthNumber, i);
			
			if (tempDate != 'NaN') {
				tempDay = tempDate.getDay();
				
				if (tempDay == dayNumber) {
					counter++;
				}
				if (counter == 1) {
					var tempDayofMonth = i;
					var returnDate = tempDate;
					return cleanDate(returnDate, tempDayofMonth);
				}
			}
		}
	}
}

function cleanDate(tempDate, tempDayofMonth) {
	var tempMonth 	= tempDate.getMonth() + 1;
	var tempYear 	= tempDate.getFullYear();
	
	tehDate = tempMonth + '/' + tempDayofMonth + '/' + tempYear;
	return tehDate;
}

function setHolidayDates(theYear) {
	var holidayArray		= new Array();
	
	var tempCounter = 0;
			
	holidayArray[tempCounter] = '01/01/' + theYear 										// New Year's Day
		tempCounter++;
	holidayArray[tempCounter] = getActualDate(3, 'Monday', 'February', theYear, ''); 	// President's Day
		tempCounter++;
	holidayArray[tempCounter] = getActualDate(1, 'Monday', 'May', theYear, 1); 			// Memorial Day
		tempCounter++;
	holidayArray[tempCounter] = '07/04/' + theYear 										// Independance Day
		tempCounter++;
	holidayArray[tempCounter] = getActualDate(1, 'Monday', 'September', theYear, ''); 	// Labor Day
		tempCounter++;
	holidayArray[tempCounter] = getActualDate(4, 'Thursday', 'November', theYear, ''); 	// Thanksgiving
		tempCounter++;
	holidayArray[tempCounter] = '12/25/' + theYear 										// Christmas
		tempCounter++;
//	holidayArray[tempCounter] = getActualDate(3, 'Monday', 'January', theYear, ''); 	// Martin Luther King Jr. Day
	//	tempCounter++;
//	holidayArray[tempCounter] = '10/31/' + theYear 										// Halloween
	//	tempCounter++;
//	holidayArray[tempCounter] = getActualDate(4, 'Friday', 'November', theYear, ''); 	// Black Friday
	//	tempCounter++;
	
	return holidayArray;
}

function setDisabledDates(passedYear, rushDays) {								//Sets all the disabled dates for the calendar, determines rush date timeframe
	var temp1Array 	= new Array();
	var temp2Array 	= new Array();
	
	var futureDay 	= now.getDate();
	var futureMonth = now.getMonth();
	
	if (futureMonth) {															//find date about 6 months in advance
		for (i = 0; i <= 6; i++) {
			if (futureMonth < 11) {
				futureMonth++;	  												//increase the month by one
			}
			else {
				futureMonth = 0;
				futureYear++;		  											//increase the year by one
			}
		}
	}
	if (futureMonth != 11) {
		futureMonth++;
	}
	else {
		futureMonth = 1;
	}
	
	tempDate2 = futureMonth + '/' + futureDay + '/' + futureYear
	
	var futureDate 	= new Date(tempDate2);
		var tempMonth 	= futureDate.getMonth();
		if (tempMonth > 5) {
			tempMonth = tempMonth - 5
		}
		else {
			tempMonth = tempMonth + 6
		}
		var tempYear 	= futureDate.getFullYear();
		var nextYear	= new Date((tempYear), tempMonth, 0);
	
	theCalendar.addDisabledDates(null,formatDate(now,"MM/dd/yyyy"));  			//Remove all dates before today
	theCalendar.addDisabledDates(formatDate(nextYear,"MM/dd/yyyy"), null);  	//Remove all dates after 6 months from today
	theCalendar.setDisabledWeekDays(0,6);  										//Removes weekends (Saturday and Sunday)
	
	tempArray1 = setHolidayDates(passedYear);									//Get this years holidays
	tempArray2 = setHolidayDates((passedYear + 1));								//Get next years holidays
	combinedArray = tempArray1.concat(tempArray2);								//Combine arrays into superArray(tm)
	
	for (m = 0; m < combinedArray.length; m++) {
		theCalendar.addDisabledDates(combinedArray[m]);							//Add holidays to calendar disabled dates
	}

    //dayFourteen = findFourteenDays(); - changed to setRushDays passing in numbers of days dynamically
    setRushDays(rushDays);
}

function setRushDays(numOfDays) {  												//finds days considered rush order
    var movingDate = new Date();
    var businessDayCounter = 0;
    var fourteenDays = '';
    var arrayCounter = 0;

    for (i = 0; i <= 30; i++) {  												//this is the current day
        tempDay = movingDate.getDate();
        tempDayName = movingDate.getDay();
        tempMonth = movingDate.getMonth();
        tempYear = movingDate.getFullYear();

        switch (tempMonth) {
            case 0:
                dayCount = 31;
                break;
            case 1:
                if (tempYear) {
                    if ((tempYear % 4) == 0) {
                        temp = 29;
                    }
                    else {
                        temp = 28;
                    }
                    dayCount = temp;
                    break;
                }
            case 2:
                dayCount = 31;
                break;
            case 3:
                dayCount = 30;
                break;
            case 4:
                dayCount = 31;
                break;
            case 5:
                dayCount = 30;
                break;
            case 6:
                dayCount = 31;
                break;
            case 7:
                dayCount = 31;
                break;
            case 8:
                dayCount = 30;
                break;
            case 9:
                dayCount = 31;
                break;
            case 10:
                dayCount = 30;
                break;
            case 11:
                dayCount = 31;
                break;
        }

        if (tempDay < dayCount) {  												//increase the day by one
            tempDay++;
        }
        else {
            tempDay = 1;
            if (tempMonth != 11) {
                tempMonth++;
            }
            else {
                tempMonth = 0;
                tempYear++;
            }
        }

        tempDateString = (tempMonth + 1) + '/' + tempDay + '/' + tempYear;
        movingDate = new Date(tempDateString);  							    //this date increases every iteration
        var isHoliday = false;

        if (tempDayName != 5 && tempDayName != 6) {  						    //no weekends please
            if (combinedArray) {
                for (j = 0; j < combinedArray.length; j++) {
                    if (tempDateString == combinedArray[j]) {
                        isHoliday = true;  										//this day matches a holiday
                    }
                }
            }
            if (isHoliday == false) {
                
                businessDaysArray[arrayCounter] = tempDateString
                arrayCounter++;
                businessDayCounter++;
            }
            if (businessDayCounter == numOfDays) {
                return tempDateString;
            }
        }
    }
}

function checkIfRushDay(passedDate) {   //checks to see if the date selected is considered rush
    var dateSelected = new Date(passedDate);
    var selectedDay = dateSelected.getDate();
    var selectedDayName = dateSelected.getDay();
    var selectedMonth = dateSelected.getMonth();
    var selectedYear = dateSelected.getFullYear();
    var dateSelectedString = (selectedMonth + 1) + '/' + selectedDay + '/' + selectedYear

    for (i = 0; i < (businessDaysArray.length - 1); i++) {
        if (dateSelectedString == businessDaysArray[i]) {
            return true;
        }
    }
    return false;
}

//DEPRECIATED with setRushDays and checkIfRushDay to set timeframe of rush orders
//function findFourteenDays() {  													//finds 14 business days from today
//	var movingDate = new Date();
//	var businessDayCounter = 0;
//	var fourteenDays = '';
//	var arrayCounter = 0;
//	
//	for (i = 0; i <= 30; i++) {  												//this is the current day
//		tempDay 	= movingDate.getDate();
//		tempDayName	= movingDate.getDay();
//		tempMonth 	= movingDate.getMonth();
//		tempYear 	= movingDate.getFullYear();
//		
//		switch (tempMonth) {
//			case 0:
//				dayCount = 31;
//				break;
//			case 1:
//				if (tempYear) {
//					if ((tempYear % 4) == 0) {
//						temp = 29;
//					}
//					else {
//						temp = 28;
//					}
//				dayCount = temp;
//				break;
//				}
//			case 2:
//				dayCount = 31;
//				break;
//			case 3:
//				dayCount = 30;
//				break;
//			case 4:
//				dayCount = 31;
//				break;
//			case 5:
//				dayCount = 30;
//				break;
//			case 6:
//				dayCount = 31;
//				break;
//			case 7:
//				dayCount = 31;
//				break;
//			case 8:
//				dayCount = 30;
//				break;
//			case 9:
//				dayCount = 31;
//				break;
//			case 10:
//				dayCount = 30;
//				break;
//			case 11:
//				dayCount = 31;
//				break;
//		}
//		
//		if (tempDay < dayCount) {  												//increase the day by one
//			tempDay++;
//		}
//		else {
//			tempDay = 1;
//			if (tempMonth != 11) {
//				tempMonth++;
//			}
//			else {
//				tempMonth = 0;
//				tempYear++;
//			}
//		}
//		
//		tempDateString 	= (tempMonth + 1) + '/' + tempDay + '/' + tempYear;
//		movingDate 		= new Date(tempDateString);  							//this date increases every iteration
//		var isHoliday 	= false;
//		
//		if (tempDayName != 5 && tempDayName != 6) {  							//no weekends please
//			if (combinedArray) {
//				for (j = 0; j < combinedArray.length; j++) {
//					if (tempDateString == combinedArray[j]) {
//						isHoliday = true;  										//this day matches a holiday
//					}
//				}
//			}
//			if (isHoliday == false) {
//				businessDaysArray[arrayCounter] = tempDateString
//				arrayCounter++;
//				businessDayCounter++;
//			}
//			if (businessDayCounter == 14) {
//				return tempDateString;
//			}
//		}
//	}
//}

//function checkFourteenDays(passedDate) {
//	var dateSelected = new Date(passedDate);
//		var	selectedDay 	= dateSelected.getDate();
//		var	selectedDayName	= dateSelected.getDay();
//		var	selectedMonth 	= dateSelected.getMonth();
//		var	selectedYear 	= dateSelected.getFullYear();
//	var dateSelectedString	= (selectedMonth + 1) + '/' + selectedDay + '/' + selectedYear
//	
//	for (i = 0; i < (businessDaysArray.length - 1); i++) {
//		if (dateSelectedString == businessDaysArray[i]) {
//			return true;
//		}
//	}
//	return false;
//}
