/* LLC javascript functions */

function xmlHttpSetup() {
	var xmlHttp;
	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp = new XMLHttpRequest();
	} catch (e) {
		// Internet Explorer
		try {
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
				alert("Your browser must be ajax-enabled in order for this site to function correctly.");
      			return false;
	  		}
		}
	}
	return xmlHttp;	
}

function activateMenuItem(menuItem) {
	menuItem.style.backgroundColor = "#4786c6";
}

function deactivateMenuItem(menuItem, event) {
	var reltg = (event.relatedTarget) ? event.relatedTarget : event.toElement;
	if(reltg.className != 'dropDown1' && reltg.className != 'dropDown2' && reltg.className != 'dropDown3') {
		menuItem.style.backgroundColor = "#17497d";
		removeDropDowns();
	}
}

function showDropDown(menuName) {
	var dropDown = document.getElementById(menuName);
	dropDown.style.visibility = "visible";
}

function removeDropDowns(menuName) {
	document.getElementById('menuFac').style.visibility = "hidden";
	document.getElementById('menuRes').style.visibility = "hidden";
	document.getElementById('menuSer').style.visibility = "hidden";
}

function clearAll(event) {
	var reltg = (event.relatedTarget) ? event.relatedTarget : event.toElement;
	if(reltg.tagName != 'A' && reltg.className != 'dropDown1' && reltg.className != 'dropDown2' && reltg.className != 'dropDown3') {
		var x;
		for(x=1; x<=6; x++)
			document.getElementById('mb'+x).style.backgroundColor = "#17497d";
		removeDropDowns();
	}
}

function retrieveWeekday(form) {
	var contentSpan = document.getElementById("dayOfTheWeek");
	var month = form.dateMonth.options[form.dateMonth.selectedIndex].value;
	var day = form.dateDay.options[form.dateDay.selectedIndex].value;
	var year = form.dateYear.options[form.dateYear.selectedIndex].value;
	if(month > 0 && day > 0 && year > 0) {
		var connection = xmlHttpSetup();
		connection.onreadystatechange = function() {
			if(connection.readyState == 4)
				contentSpan.innerHTML = connection.responseText+", ";
		}
		connection.open("GET","scripts/retrieveWeekday.php?year="+year+"&day="+day+"&month="+month,true);
		connection.send(null);
	} else
		contentSpan.innerHTML = "";
}

function checkForCartChange(form) {
	var selectionValue = form.desiredRoom.options[form.desiredRoom.selectedIndex].value;
	var roomSelectionSpan = document.getElementById("cartShow");
	if(selectionValue == "PC-CART")
		roomSelectionSpan.style.visibility = "visible";
	else
		roomSelectionSpan.style.visibility = "hidden";
}

function checkForCourseChange(form) {
	var selectionValue = form.courseDept.options[form.courseDept.selectedIndex].value;
	var areaToKill = document.getElementById("courseKill");
	if(selectionValue == "Other" || selectionValue == "TELECONF")
		areaToKill.style.visibility = "hidden";	
	else
		areaToKill.style.visibility = "visible";
}

function makeReservation() {
	var form = document.getElementsByTagName("form")[0];
	
	var fullName = form.fullName.value;
	var emailAddress = form.email.value;
	
	var courseDept = form.courseDept.options[form.courseDept.selectedIndex].value;
	var courseNumber = form.courseNumber.value;
	var sectionNumber = form.sectionNumber.value;

	var month = form.dateMonth.options[form.dateMonth.selectedIndex].value;
	var day = form.dateDay.options[form.dateDay.selectedIndex].value;
	var year = form.dateYear.options[form.dateYear.selectedIndex].value;
	
	var now = new Date();
	var currentMonth = now.getMonth()+1;
	var currentDay = now.getDate();
	var currentYear = now.getFullYear();
	
	var startHour = form.timeStartHour.options[form.timeStartHour.selectedIndex].value;
	var startMin = form.timeStartMin.options[form.timeStartMin.selectedIndex].value;
	var stopHour = form.timeStopHour.options[form.timeStopHour.selectedIndex].value;
	var stopMin = form.timeStopMin.options[form.timeStopMin.selectedIndex].value;

	var tempStartHour = startHour;
	var tempStartMin = startMin;
	var tempStopHour = stopHour;
	var tempStopMin = stopMin;
	if(tempStartHour < 7) tempStartHour = tempStartHour+12;
	if(tempStopHour < 7) tempStopHour = tempStartHour+12;
	
	var evalStartTime = (tempStartHour*60)+tempStartMin;
	var evalStopTime = (tempStopHour*60)+tempStopMin;
	
	var desiredRoom = form.desiredRoom.options[form.desiredRoom.selectedIndex].value;
	var equipmentRoomNumber = form.equipmentRoomNumber.value;
	
	var notes = form.notes.value;
	
	if(fullName.length == 0) {
		alert("You must enter a name.");
		return;
	}
		
	if(emailAddress.length == 0) {
		alert("You must enter an email address.");
		return;
	}
	
	if(emailAddress.search(/@/) >= 0 || emailAddress.search(/,/) >= 0 || emailAddress.search(/;/) >= 0) {
		alert("Invalid email address.  Please enter your UH username in the field.");
		return;
	}
	
	if ((courseDept.length < 2 || courseDept.length > 4) && courseDept != "Other" && courseDept != "TELECONF") {
	  alert("You did not select a valid department.");
		return;
	} 
	
	if((courseNumber.length < 2 || courseNumber.length > 4) && courseDept != "Other" && courseDept != "TELECONF") {
		alert("You did not enter a valid course number.");
		return;
	}
	
	if((sectionNumber < 1 || sectionNumber > 20) && courseDept != "Other" && courseDept != "TELECONF") {
		alert("You did not enter a valid section number.");
		return;
	}
	
	if(year < currentYear || year > currentYear+1) {
		alert("You did not select a valid year in the reservation date.");
		return;
	}
		
	if(day < 1 || day > 31) {
		alert("You did not select a valid day in the reservation date.");
		return;	
	}
	
	if(month < 1 || month > 12) {
		alert("You did not select a valid month in the reservation date.");
		return;
	}
	
	if(currentYear == year) {
		if(month < currentMonth) {
			alert("You must enter today's date or a future date.");
			return;
		} else {
			if(month == currentMonth && day < currentDay) {
				alert("You must enter today's date or a future date.");
				return;
			}
		}
	}
	
	if(evalStopTime <= evalStartTime) {
		alert("The starting time of the reservation must be before the stopping time.");
		return;
	}
	
	if(desiredRoom == "NULL") {
		alert("You must select a room or a piece of equipment to reserve.");
		return;
	}
	
	if(desiredRoom == "PC-CART" && equipmentRoomNumber.length < 3) {
		alert("If you are checking out a PC Cart, you must enter the room number where you will use it.");
		return;
	}
	
	var connection = xmlHttpSetup();
	connection.onreadystatechange = function() {
		if(connection.readyState == 4) {
			var mainPanel = document.getElementById("mainPanel");
			var newPage = "Your Request Has Been Sent:<br/><br/><span style=\"color:#ffcc33\">If you requested a teleconference, please see further instructions</span> <a href= \"http://llc.manoa.hawaii.edu/facFaculty.php\">here</a>.	<table style=\"margin: auto; text-align: left;\" cellpadding=\"3\" cellspacing=\"4\">";
			newPage = newPage+"<tr><td><b>Name:</b></td><td>"+fullName+"</td></tr>";
			newPage = newPage+"<tr><td><b>E-mail:</b></td><td>"+emailAddress+"</td></tr>";
			newPage = newPage+"<tr><td><b>Course:</b></td><td>"+courseDept+courseNumber+"."+sectionNumber+"</td></tr>";
			newPage = newPage+"<tr><td><b>Date:</b></td><td>"+month+"/"+day+"/"+year+"</td></tr>";
			newPage = newPage+"<tr><td><b>Time:</b></td><td>"+startHour+":"+startMin+" to "+stopHour+":"+stopMin+"</td></tr>";
			newPage = newPage+"<tr><td><b>Reservation:</b></td><td>"+desiredRoom;
			if(equipmentRoomNumber.length > 0)
				newPage = newPage+" "+equipmentRoomNumber;
			newPage = newPage+"</td></tr>";
			newPage = newPage+"<tr><td><b>Notes:</b></td><td>"+notes+"</td></tr>";
			newPage = newPage+"</table>";
			mainPanel.style.textAlign = "center";
			mainPanel.innerHTML = newPage;
			alert("Your request has been sent.");
		}
	}

	var dataString = "fullName="+fullName;
	dataString = dataString+"&email="+emailAddress;
	dataString = dataString+"&courseDept="+courseDept;
	dataString = dataString+"&courseNumber="+courseNumber;
	dataString = dataString+"&sectionNumber="+sectionNumber;
	dataString = dataString+"&month="+month;
	dataString = dataString+"&day="+day;
	dataString = dataString+"&year="+year;
	dataString = dataString+"&startHour="+startHour;
	dataString = dataString+"&startMin="+startMin;
	dataString = dataString+"&stopHour="+stopHour;
	dataString = dataString+"&stopMin="+stopMin;
	dataString = dataString+"&desiredRoom="+desiredRoom;
	dataString = dataString+"&equipmentRoomNumber="+equipmentRoomNumber;
	dataString = dataString+"&notes="+notes;
	
	connection.open("GET","scripts/sendRequest.php?"+dataString,true);
	connection.send(null);
	
}

function updateSchedule(form) {
	var checkView = "";
	var checkSpan = "";
	for (var i=0; i<form.checkView.length; i++)
   	if (form.checkView[i].checked)
	      checkView = form.checkView[i].value;
	for (var i=0; i<form.checkSpan.length; i++)
   	if (form.checkSpan[i].checked)
	      checkSpan = form.checkSpan[i].value;
	var connection = xmlHttpSetup();
	connection.onreadystatechange = function() {
		if(connection.readyState == 4) {
			document.getElementById("display").innerHTML = connection.responseText;
		}
	}	
	connection.open("GET","scripts/retrieveSchedule.php?view="+checkView+"&span="+checkSpan,true);
	connection.send(null);
}

function printableSchedule(checkView, checkSpan) {
	var connection = xmlHttpSetup();
	connection.onreadystatechange = function() {
		if(connection.readyState == 4) {
			document.getElementById("display").innerHTML = connection.responseText;
		}
	}	
	connection.open("GET","scripts/retrieveSchedule.php?view="+checkView+"&span="+checkSpan+"&printable=1",true);
	connection.send(null);
}