
// *** Globals
var dateNow = new Date();


// *** Functions

function doLoad() {
	var objForm = document.forms["feedback"];
	
	if (dateNow.getMinutes() > 45) {
		dateNow.setHours(dateNow.getHours() + 1, 0);
	}
	if (dateNow.getDay() == 0) {
		dateNow.setHours(9);
		dateNow.setDate(dateNow.getDate() + 1);
	}

	if (dateNow.getDay() > 0 && dateNow.getDay() < 5) { // Monday - Thursday
		if (dateNow.getHours() < 9) {
			dateNow.setHours(9);
		} else if (dateNow.getHours() > 20) {
			dateNow.setDate(dateNow.getDate() + 1);
			dateNow.setHours(9, 0, 0);
		}
	} else if (dateNow.getDay() == 5) { // Friday
		if (dateNow.getHours() < 9) {
			dateNow.setHours(9);
		} else if ((dateNow.getHours() * 100) + dateNow.getMinutes() > 1715) {
			dateNow.setDate(dateNow.getDate() + 1);
			dateNow.setHours(9, 0, 0);
		}
	} else if (dateNow.getDay() == 6) { // Saturday
		if (dateNow.getHours() < 10) {
			dateNow.setHours(10);
		} else if (dateNow.getHours() > 13) {
			dateNow.setDate(dateNow.getDate() + 2);
			dateNow.setHours(9, 0, 0);
		}
	}

	objForm.elements["time"].selectedIndex = dateNow.getHours() - 9;
	
	objForm.elements["date_day"].selectedIndex = dateNow.getDate()-1;
	objForm.elements["date_month"].selectedIndex = dateNow.getMonth();
	objForm.elements["date_year"].options[objForm.elements["date_year"].options.length] = new Option(String(dateNow.getFullYear()), String(dateNow.getFullYear()));
	objForm.elements["date_year"].options[objForm.elements["date_year"].options.length] = new Option(String(dateNow.getFullYear()+1), String(dateNow.getFullYear()+1));
	
	checkDate();
}

function checkRequiredFields() {
	var fOK = true;
	var theForm = document.forms[0];
	
	// check required fields are filled in
	if (theForm.keywords.value == "") {
			fOK = false;
			alert("Are you sure you want to search for nothing?");
			theForm.keywords.focus();
		}
	return fOK;
}

function checkForm(objForm) {
	var strErrors = "";
	var objErrorField = null;
	var strDateText = "";
	
	if (document.getElementById) {
		strDateText = document.getElementById("datespan").innerText;
	} else if (document.all) {
		strDateText = document.all("datespan").innerText;
	}
	
	if (objForm.elements["name"].value.length == 0) {
		strErrors += "Your name is required\r\n";
		if (objErrorField == null) objErrorField = objForm.elements["surname"];
		objForm.elements["name"].style.backgroundColor = "#FF0000";
	}
	if (objForm.elements["phone"].value.length == 0) {
		strErrors += "Your phone number is required\r\n";
		if (objErrorField == null) objErrorField = objForm.elements["phone"];
		objForm.elements["phone"].style.backgroundColor = "#FF0000";
	}
	if (!checkDate()) {
		strErrors += "A valid date at least 15 minutes from now is required, our opening hours are 08:30 - 17:00 Mon - Fri\r\n";
		if (objErrorField == null) objErrorField = objForm.elements["phone"];
	}
	if (strErrors != "") {
		alert("Please correct the following errors / omissions before continuing:\r\n\r\n" + strErrors);
		objErrorField.focus();
		return false;
	} else {
		//objForm.elements["adeptive_redirect"].value = objForm.elements["adeptive_redirect"].value + "&message=" + escape("Your callback request has been logged and an L&C representative will call you " + strDateText);
		
		return true;
	}
}

function checkDate() {
	var objForm = document.forms["feedback"];
	var arrMonths = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
	var arrWeekdays = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
	var strDate;
	var strDateText;
	var dateSelected;
	var dateAllowed = new Date(dateNow.getFullYear(), dateNow.getMonth(), dateNow.getDate(), dateNow.getHours(), dateNow.getMinutes());
	var fValid = true;
	var dateToday = new Date();
	var dateTomorrow = new Date();
	
	dateTomorrow.setDate(dateTomorrow.getDate()+1);
	
	dateAllowed.setMinutes(dateAllowed.getMinutes()+15);
	
	strDate = objForm.elements["date_day"].options[objForm.elements["date_day"].selectedIndex].value + "/";
	strDate += objForm.elements["date_month"].options[objForm.elements["date_month"].selectedIndex].value + "/";
	strDate += objForm.elements["date_year"].options[objForm.elements["date_year"].selectedIndex].value;
	objForm.elements["date"].value = strDate;
	
	if (isDate(strDate)) {
		dateSelected = new Date(parseInt(objForm.elements["date_year"].options[objForm.elements["date_year"].selectedIndex].value), objForm.elements["date_month"].selectedIndex, objForm.elements["date_day"].selectedIndex+1);
		dateSelected.setHours(objForm.elements["time"].selectedIndex + 10);
		if (dateSelected.valueOf() < dateAllowed.valueOf() || !checkTime(dateSelected)) {
			fValid = false;
		} else {
			strDate = arrWeekdays[dateSelected.getDay()] + " ";
			strDate += getOrdinal(dateSelected.getDate()) + " ";
			strDate += arrMonths[objForm.elements["date_month"].selectedIndex] + " ";
			strDate += objForm.elements["date_year"].options[objForm.elements["date_year"].selectedIndex].value;
			if (dateSelected.getDate() == dateToday.getDate() && dateSelected.getMonth() == dateToday.getMonth() && dateSelected.getFullYear() == dateToday.getFullYear()) {
				strDateText = "today";
			} else if (dateSelected.getDate() == dateTomorrow.getDate() && dateSelected.getMonth() == dateTomorrow.getMonth() && dateSelected.getFullYear() == dateTomorrow.getFullYear()) {
				strDateText = "tomorrow";
			} else {
				strDateText = strDate;
			}
		}
		fValid = fValid && (dateSelected.getDay() != 0) && (dateSelected.getDay() != 6); // not sundays or saturdays
	} else {
		fValid = false;
	}

	if (fValid) {
		strDateText = (strDate == strDateText ? "on " : "") + strDateText + " between " + objForm.elements["time"].options[objForm.elements["time"].selectedIndex].value.replace("-", "and");
	} else {
		strDateText = "invalid date / time - must be at least 15 minutes from now. Our opening hours are 08:30 - 17:00 Mon - Fri ";
	}
	if (document.getElementById) {
		document.getElementById("datespan").innerText = strDateText;
	} else if (document.all) {
		document.all("datespan").innerText = strDateText;
	}
	
	return fValid;
}

function checkTime(dateSelected) {
	var fValid = true;
	var iTime = (dateSelected.getHours() * 10000) + (dateSelected.getMinutes() * 100) + dateSelected.getSeconds();
	
	switch (dateSelected.getDay()) {
		case 0: // Sunday
			fValid = false;
			break;
		case 1: // Monday
		case 2: // Tuesday
		case 3: // Wednesday
		case 4: // Thursday
			if (iTime < 90000 || iTime > 200000) fValid = false;
			break;
		case 5: // Friday
			if (iTime < 90000 || iTime > 173000) fValid = false;
			break;
		case 6: // Saturday
			if (iTime < 100000 || iTime > 130000) fValid = false;
			break;
	}
	return fValid;
}

function getOrdinal(iNum) {
	var strOrdinal = String(iNum);
	var strLastDigit = strOrdinal.substr(strOrdinal.length-1, 1);
	
	if (iNum > 3 && iNum < 20) {
		strOrdinal += "th";
	} else if (strLastDigit == "1") {
		strOrdinal += "st";
	} else if (strLastDigit == "2") {
		strOrdinal += "nd";
	} else if (strLastDigit == "3") {
		strOrdinal += "rd";
	} else {
		strOrdinal += "th";
	}
	
	return strOrdinal;
}

function isDate(strDate) {
	var fValid = true;
	var arrTemp;
	var iNum;
	var dateNow = new Date();
	
	if (strDate.length != 10) return false;
	arrTemp = strDate.split("/");
	if (arrTemp.length != 3) return false;
	for (var i = 0; i < 3; i++) {
		iNum = parseInt(arrTemp[i], 10);
		if (pad(iNum, (i ==2 ? 4 : 2)) != arrTemp[i]) {
			fValid = false;
			break;
		}
		if (iNum < 1 || (i == 0 && iNum > 31) || (i ==1 && iNum > 12) || (i ==2 && (iNum > dateNow.getFullYear() + 10 || iNum < dateNow.getFullYear()))) {
			fValid = false;
			break;
		}
	}
	return fValid;
}

function pad(iNum, iDigits) {
	var strPad = String(iNum);
	for (var i = 0; i < iDigits - strPad.length; i++) {
		strPad = "0" + strPad;
	}
	return strPad;
}

