// JavaScript Document
var monthtext = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];
var day_name = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
var today = new Date()
var dateCount = today.getDate() - 1
var selectedDay = today.getDate()
var selectedMonth = today.getMonth()
var selectedYear = today.getFullYear()

var typeOfTour = "walking"
var private_tour = false

var tourTimeString = " "
var itemToHighlight = "dayWeekendSummer"
var kindOfTour = "dayWeekendSummer"

function initDropdown(dayfield, monthfield, yearfield, timefield) {
	//alert (dateCount +" "+ selectedMonth +" "+ selectedYear +" "+ typeOfTour)
	var dayfield = document.getElementById(dayfield)
	var monthfield = document.getElementById(monthfield)
	var yearfield = document.getElementById(yearfield)
	var timefield = document.getElementById(timefield)

	//document.getElementById("walkingWeekendSummer").style.borderStyle="solid"
	//document.getElementById("walkingWeekendSummer").style.borderWidth=1
	//alert(dayfield + " " + monthfield + " " + yearfield + " " + timefield)
	//alert (selectedMonth)
	var daysThisMonth = daysInMonth(today.getMonth(), today.getFullYear())
	dayfield.options[0] = new Option(" ", " ")

	//for (var i = 0; i < daysThisMonth; i++)
	//dayfield.options[i] = new Option(i + 1, i + 1)
	//dayfield.options[today.getDate()] = new Option(today.getDate() + 1, today.getDate(), true, true) //select today's day
	for (var m = 0; m < 12; m++)
	monthfield.options[m] = new Option(monthtext[m], monthtext[m])
	monthfield.options[selectedMonth] = new Option(monthtext[selectedMonth], monthtext[selectedMonth], true, true) //select today's month
	var thisyear = today.getFullYear()
	for (var y = 0; y < 3; y++) {
		yearfield.options[y] = new Option(thisyear, thisyear)
		thisyear += 1
	}

	refreshDateDropdown('dayDropdown')
	refreshTimeDropdown('timeDropdown')
	highlightItemInTable()
}

function refreshDropdown(form, dayDropdown, monthDropdown, yearDropdown, timeDropdown) {
	getVariablesFromForm(form)
	refreshDateDropdown(dayDropdown)
	refreshTimeDropdown(timeDropdown)
	highlightItemInTable()
}

function refreshDropdownFromDay(form, dayDropdown, monthDropdown, yearDropdown, timeDropdown) {
	getVariablesFromForm(form)
	//refreshDateDropdown(dayDropdown)
	refreshTimeDropdown(timeDropdown)
	highlightItemInTable()
}

function getVariablesFromForm(form) {
	if (form.type_of_tour[0].checked){typeOfTour="walking"}
	if (form.type_of_tour[1].checked){typeOfTour="ghost"}
	if (form.type_of_tour[2].checked){private_tour=true}
	else {private_tour=false}
	
	
	if (private_tour == true) {
		typeOfTour = "private"
	}

	for (monthCount = 0; monthCount < 12; monthCount++) {
		if (form.monthDropdown[monthCount].selected) break;
	}

	for (dateCount = 0; dateCount < 31; dateCount++) {
		if (form.dayDropdown[dateCount].selected) break;
	}

	for (yearCount = 0; yearCount < 3; yearCount++) {
		if (form.yearDropdown[yearCount].selected) break;
	}

	selectedDay = dateCount + 1
	selectedMonth = monthCount
	selectedYear = yearCount + today.getFullYear()
}

function refreshDateDropdown(dayfield) {

	var dayfield = document.getElementById(dayfield)
	var dayIsBold = 0
	var daysThisMonth = daysInMonth(selectedMonth, selectedYear)

	if (dateCount > daysThisMonth - 1) {
		dateCount = daysThisMonth - 1
	}

	dayfield.options.length = 0;

	for (var i = 0; i < daysThisMonth; i++) {
		var iSelectedDate = new Date(selectedYear, selectedMonth, i + 1)
		var iDayOfWeek = iSelectedDate.getDay()
		var iDayName = day_name[iDayOfWeek] + " " + (i + 1)

		if ((i) == dateCount) {
			var dateCountDayNameOfWeek = iDayName
			//alert(dateCount)
		}

		dayfield.options[i] = new Option(iDayName, iDayName)

		if (typeOfTour == "walking") {
			if (day_name[iDayOfWeek] == "Sat" || day_name[iDayOfWeek] == "Sun") {
				dayfield.options[i].style.fontWeight = "bold"
				if (i == dateCount) {
					dayIsBold = 1
				}
			}
		}
		if (typeOfTour == "ghost") {
			if (day_name[iDayOfWeek] == "Fri" || day_name[iDayOfWeek] == "Sat") {
				dayfield.options[i].style.fontWeight = "bold"
				if (i == dateCount) {
					dayIsBold = 1
				}
			}
		}
	}

	if (dateCount != 0) {
		dayfield.options[dateCount] = new Option(dateCountDayNameOfWeek, dateCountDayNameOfWeek, true, true)
	}
	if (dayIsBold == 1) {
		dayfield.options[dateCount].style.fontWeight = "bold"
	}

}

function highlightItemInTable() {
	kindOfTour = getKindOfTour()
	if (kindOfTour == "noGhostWeekdaySummer") {
		kindOfTour = "ghostWeekdaySummer"
	}
	var highLightList = ["dayWeekendSummer", "dayWeekendWinter", "dayWeekdaySummer", "dayWeekdayWinter", "ghostWeekendSummer", "ghostWeekendWinter", "ghostWeekdaySummer", "ghostWeekdayWinter", "private"]
	var daySummerColor = "#FFFFC9"
	var dayWinterColor = "#D4CCFF"
	var ghostSummerColor = "#C1E796"
	var ghostWinterColor = "#aaCCFF"
	var privateColor = "#CCCCCC"

	var colorList = [daySummerColor, dayWinterColor, daySummerColor, dayWinterColor, ghostSummerColor, ghostWinterColor, ghostSummerColor, ghostWinterColor, privateColor]
	//alert(colorList)
	for (var i = 0; i < highLightList.length; i++) {
		if (kindOfTour == highLightList[i]) {
			document.getElementById(highLightList[i]).style.color = "#DD0000"
			document.getElementById(highLightList[i]).style.background = "#FFFF00"
		}
		else {
			//}
			//alert("walkingWeekendSummer")
			document.getElementById(highLightList[i]).style.color = "#003399"
			document.getElementById(highLightList[i]).style.background = colorList[i]
		}

	}
}

function getKindOfTour() {

	//alert (typeOfTour +" "+ selectedDay +" "+selectedMonth+" "+selectedYear)
	//var timefield = document.getElementById(timefield)
	selectedDate = new Date(selectedYear, selectedMonth, selectedDay);
	var selectedDayOfWeek = selectedDate.getDay()
	selectedDayOfWeek = day_name[selectedDayOfWeek]
	startOfSummerDate = new Date(selectedYear, 3 - 1, 15);
	startOfWinterDate = new Date(selectedYear, 10 - 1, 25);

	//alert (selectedDayOfWeek)
	//timefield.options.length = 0; //initialise the drop down menu
	if (typeOfTour == "walking") {
		if (selectedDate > startOfSummerDate && selectedDate < startOfWinterDate) {
			if (selectedDayOfWeek == "Sat" || selectedDayOfWeek == "Sun") {
				kindOfTour = "dayWeekendSummer"
			}
			else {
				kindOfTour = "dayWeekdaySummer"

			}
		}
		else { if (selectedDayOfWeek == "Sat" || selectedDayOfWeek == "Sun") { //Walking Tour Winter Weekend
				kindOfTour = "dayWeekendWinter"
			}
			else { //Walking Tour Winter Week Day
				kindOfTour = "dayWeekdayWinter"
			}
		}
	}
	if (typeOfTour == "ghost") {
		if (selectedDate > startOfSummerDate && selectedDate < startOfWinterDate) {
			if (selectedDayOfWeek == "Fri" || selectedDayOfWeek == "Sat") { //"Ghost Tour Summer Weekend"
				kindOfTour = "ghostWeekendSummer"
			}
			else { if (selectedMonth >= (6 - 1) && selectedMonth <= (8 - 1)) { //Ghost Tour Summer Week Day
					kindOfTour = "ghostWeekdaySummer"
				}
				else { // No Ghost Tours Today
					kindOfTour = "noGhostWeekdaySummer"
				}
			}
		}
		else { if (selectedDayOfWeek == "Fri" || selectedDayOfWeek == "Sat") { //Ghost Tour Winter Weekend"
				kindOfTour = "ghostWeekendWinter"
			}
			else { //Ghost Tour Winter Week Day
				kindOfTour = "ghostWeekdayWinter"
			}
		}
	}
	if (typeOfTour == "private") {
		kindOfTour = "private"
	}
	return kindOfTour
}

function refreshTimeDropdown(timefield) {

	//alert (typeOfTour +" "+ selectedDay +" "+selectedMonth+" "+selectedYear)
	var timeFieldList = []
	kindOfTour = getKindOfTour(timefield)

	switch (kindOfTour) {
	case "dayWeekendSummer":
		timeFieldList = ["Select Time", "11.00am", "12.00pm", "1.00pm", "2.00pm", "3.00pm", "4.00pm"];
		break;
	case "dayWeekdaySummer":
		timeFieldList = ["Select Time", "11.00am", "1.00pm", "3.00pm"];
		break;
	case "dayWeekendWinter":
		timeFieldList = ["Select Time", "11.00am", "12.00pm", "1.00pm", "2.00pm", "3.00pm"];
		break;
	case "dayWeekdayWinter":
		timeFieldList = ["Select Time", "12.00pm", "2.00pm"];
		break;
	case "ghostWeekendSummer":
		timeFieldList = ["7.30pm"];
		break;
	case "ghostWeekdaySummer":
		timeFieldList = ["7.30pm"];
		break;
	case "noGhostWeekdaySummer":
		timeFieldList = ["No Ghost Tour this day"];
		break;
	case "ghostWeekendWinter":
		timeFieldList = ["Select Time", "4.00pm", "7.30pm"];
		break;
	case "ghostWeekdayWinter":
		timeFieldList = ["4.00pm"];
		break;
	case "private":
		timeFieldList = ["Select Time", "11.00am", "12.00pm", "1.00pm", "2.00pm", "3.00pm", "4.00pm", "7.30pm", "Other"];
		break;
	default:
		["error"];
	}

	var timefield = document.getElementById(timefield)
	timefield.options.length = 0; //initialise the drop down menu
	for (i = 0; i < timeFieldList.length; i++) {
		timefield.options[i] = new Option(timeFieldList[i]);
	}

}

function daysInMonth(iMonth, iYear) {
	return 32 - new Date(iYear, iMonth, 32).getDate();
}

function evaluateForm(form) {

	if (form.type_of_tour[0].checked){typeOfTour="walking"}
	if (form.type_of_tour[1].checked){typeOfTour="ghost"}
	if (form.type_of_tour[2].checked){private_tour=true}
	else {private_tour=false}
	
	var childNum = form.children_num.value;
	var adultNum = form.adult_num.value;
	var studSenNum = form.studSen_num.value;

	if (childNum == "") childNum = "0";
	if (adultNum == "") adultNum = "0";
	if (studSenNum == "") studSenNum = "0";

	var child_ghost = 3.00;
	var adult_ghost = 6.00;
	var studSen_ghost= 6.00;
	
	var child_day = 3.00;
	var adult_day = 7.50;
	var studSen_day = 7.00;
	
	var adult_private = 1.00;
	var child_private = 1.00;
	var studSen_private = 1.00;
	
	var TotalCost;

	if (private_tour==false){
		if (typeOfTour=="walking"){
			TotalCost = parseInt(childNum) * child_day + parseInt(adultNum) * adult_day + parseInt(studSenNum) * studSen_day;
			//alert ("Walking false")
		}
		if (typeOfTour=="ghost"){
			TotalCost = (parseInt(childNum) * child_ghost) + parseInt(adultNum) * adult_ghost + parseInt(studSenNum)*studSen_ghost;
			//alert ("Ghost false")
		}
	}
	else {
		if (typeOfTour=="walking"){
			TotalCost = 90 + parseInt(childNum) * child_private + parseInt(adultNum) * adult_private + parseInt(studSenNum)*studSen_private;
			//alert ("Walking true")
		}
		if (typeOfTour=="ghost"){
			TotalCost = 90;
			//alert ("Ghost true")
		}
	}
	
	form.total_value.value = "£" + TotalCost.toFixed(2);
}