var courseListByCode = "";
var courseListByName = "";

var offerings = new Array();

var billingCompany;
var billingEmailSuffix;

var enrollPageContents = "";

var currentPage = 0;
var desiredPage = -1;

function showQuickEnrollPage(startPage, useFade, callback) {
	currentPage = 0;
  pageChangePending = true;
  loadQuickEnrollPage(startPage, useFade, callback)
  dojo.byId("quickEnrollLink").blur();
  window.location.hash="quick-enroll";
  pageChangePending = false;
}

function loadQuickEnrollPage(startPage, useFade, callback) {
  if (enrollPageContents == "") {
    getQuickEnrollDisplay(startPage, useFade, callback);
  }
  else {
    displayQuickEnrollPage(enrollPageContents);
    selectQEPage(startPage, useFade);
		if (callback) {
			callback();
		}
  }
}


function getQuickEnrollDisplay(startPage, useFade, callback) {
  var req = createXMLHttpRequest();
  req.onreadystatechange = function() {
    if (req.readyState == 4 && req.status == 200) {
      enrollPageContents = req.responseText;
      displayQuickEnrollPage(req.responseText);
      selectQEPage(startPage, useFade);
			if (callback) {
				callback();
			}
    }
  }

  req.open("GET", "/enroll/getQuickEnrollDisplay");
  req.send(null);
}

function displayQuickEnrollPage(responseText) {
	var pcDiv = dojo.byId("pageContents");
  pcDiv.innerHTML = responseText;
  makeCourseSelect();
  populateCourseSelect();
}

function registerFromCourseDescription(doc) {
  var req = createXMLHttpRequest();
  req.onreadystatechange = function() {
    if (req.readyState == 4 && req.status == 200) {
      enrollPageContents = req.responseText;
      displayQuickEnrollPage(req.responseText);
      selectQEPage(1, false);
    }
  }

  req.open("GET", "/enroll/getQuickEnrollDisplay");
  req.send(null);
}


function selectCourse(courseCode, courseTitle, price, doc) { 
	console.log("setting course " + courseCode + "  " + courseTitle);
  var offSelectDiv = dojo.byId("ie-workaround-offSelectDiv", doc);
	console.log("offSelectDiv = " + offSelectDiv);
  getOfferings(courseCode);
    
  offSelectDiv.innerHTML = createOfferingsHTML();

  var dateSpan = dojo.byId("dateSpan", doc);

  sortOfferingsByLocation();

  dateSpan.setAttribute("style", "visibility:visible");

  rfCourse = dojo.byId("regformCourse", doc);
	console.log("rfCourse = " + rfCourse);
  rfCourse.innerHTML = courseCode + ": " + courseTitle;
	
	rfPrice = dojo.byId("regformPrice", doc);
	rfPrice.innerHTML = "Price: US$ " + price;
}

function selectCourseWithID(courseID, courseName, courseTitle, price, doc) {
	console.log("doc = " + doc);
	selectCourse(courseName, courseTitle, price, doc);
}

function getOfferings(courseCode) {
  offerings.length = 0;

  for (var i = 0; i < schedule.length; ++i) {
    if (schedule[i].course == courseCode) {
      offerings.push(schedule[i]);
    }
  }
}

function createOfferingsHTML() {
  var result = "";
  if (offerings.length == 0) {
    result = "<option value='none'>This course is not currently scheduled</option>";
  }
  else {
    for (var i = 0; i < offerings.length; ++i) {
/*
      result += "<option value='" + i + "'>" + offerings[i].start + " in " + offerings[i].display_name + "</option>";
*/
			result += "<option style='font-family:monospace;' value='" + i + "|" + offerings[i].display_name + "|" + offerings[i].start + "'>" + offerings[i].display_name + addLocationPadding(offerings[i].display_name) + offerings[i].start + "</option>";
    } 
  }
  return "<select id='offSelect' width='300' size='15' onChange='selectDateAndLocation()'>" + result + "</select>";
}

function addLocationPadding(str) {
	var result = "";
	var times = 35 - str.length;
	for (i = 0; i < times; ++i) {
		result += "&nbsp;"
	}
	return result;
}


function selectDateAndLocation() {
  var offEl = dojo.byId("offSelect");
  var selectedIndexStr = offEl.value;
  if (selectedIndexStr == null) {
    return;
  }

  var selectedOffering = offerings[parseInt(selectedIndexStr)];

	/*
  var rfID = dojo.byId("regformTCID");
  rfID.value = selectedOffering.id;

  var rfDate = dojo.byId("regformDate");
  rfDate.innerHTML = selectedOffering.start;

  var rfLoc = dojo.byId("regformLocation");
  rfLoc.innerHTML = selectedOffering.display_name;
	*/

	setDateAndLocation(selectedOffering.id, selectedOffering.start,
										 selectedOffering.display_name);
}

function setDateAndLocation(id, date, location) {
  var rfID = dojo.byId("regformTCID");
  rfID.value = id;

  var rfDate = dojo.byId("regformDate");
  rfDate.innerHTML = date;

  var rfLoc = dojo.byId("regformLocation");
  rfLoc.innerHTML = location;
}

function selectInDateLocationBox(date, location) {
	date = date.replace(/-/g, "/");
  var offEl = dojo.byId("offSelect");
	var opts = offEl.options;

	for (var i = 0; i < opts.length; ++i) {
		optData = opts[i].value.split("\|");

		if (date == optData[2] && location == optData[1]) {
			offEl.selectedIndex = i;
			break;
		}
	}
}
	

function doBooking() {
//  alert("Booking the class");
}

function clearBooking() {
  var sp = dojo.byId("sp3");
  sp.innerHTML = ""
    }

/*
  function clearLocation() {
  var locationSpan = dojo.byId("locationSpan");
  locationSpan.setAttribute("style", "visibility:hidden");
  clearBooking();
  }
*/

/*
function browseCourses() {
  var courseWindow = window.open("", "courses", 
                                 "width=550,height=550");
  var bodyElement = courseWindow.document.getElementsByTagName("BODY")[0];
  makeCourseSelect();
  bodyElement.innerHTML = "<select id='courseSelect' size='30'>" + courseListByCode + "</select><br/><br/><center><button id='sortButton' onclick='opener.sortBrowserByName(self)'>Sort By Course Name</button>&nbsp;<button onclick='opener.pickBrowsedCourse(self)'>Select</button></center>";
}
*/

function populateCourseSelect() {
  var csDiv = dojo.byId("ie-workaround-courseSelectDiv");

  csDiv.innerHTML = courseListByCode;
}

/*
function sortBrowserByName(courseWindow) {
  var csDiv = dojo.byId("ie-workaround-courseSelectDiv");
  csDiv.innerHTML = courseListByName;
  var button = courseWindow.dojo.byId("sortButton");
  button.innerHTML="Sort By Course Code";
  button.onclick=function() {
    sortBrowserByCode(courseWindow);
  }    
}
*/

/*
function sortBrowserByCode(courseWindow) {
  var csDiv = dojo.byId("ie-workaround-courseSelectDiv");
  csDiv.innerHTML = courseListByCode;

  var button = courseWindow.dojo.byId("sortButton");
  button.innerHTML="Sort By Course Name";
  button.onclick=function() {
    sortBrowserByName(courseWindow);
  }    
}
*/

function pickBrowsedCourse() {
  var sel = dojo.byId("courseSelect");
  var opts = sel.options;
  var index = sel.selectedIndex;
  if (index >= 0) {
    var cidHidden = dojo.byId("courseID"); 
  
    var course = opts.item(index).value;
    
    var courseInfo = course.split("|");
    var courseID = courseInfo[0];
    var courseName = courseInfo[1];
		var coursePrice = courseInfo[3];

    cidHidden.value = courseID;
  }

  selectCourseWithID(courseID, courseName, courseInfo[2], coursePrice, window.document);
}

function selectInBox(id) {
  var sel = dojo.byId("courseSelect");
	var opts = sel.options;

	for (i = 0; i < opts.length; ++i) {
		optid = opts[i].value.split("\|")[0];
		if (optid == id) {
			sel.selectedIndex = i;
			break;
		}
	}
}

function makeCourseSelect() {
  var byCode = new Array();
  var byName = new Array();
  var spaces = "               ";

  for (var i = 0; i < catalog.length; ++i) {
    id  = catalogByCode[i].id;
    name = catalogByCode[i].name;
    title = catalogByCode[i].title;
		price = catalogByCode[i].price;
   
    byCode.push("<option style='font-family:monospace;' value='" + id + "|" + name + "|" + title + "|" + price + "'>" + name + addCourseIDPadding(name) + title + "</option>");

    id = catalogByTitle[i].id;
    name = catalogByTitle[i].name;
    title = catalogByTitle[i].title;
		price = catalogByTitle[i].price;

    byName.push("<option style='font-family:monospace;' value='" + id + "|" + name + "|" + title + "|" + price + "'>" + name + addCourseIDPadding(name) + title + "</option>");

/*
    byName.push("<option>" + catalogByTitle[i].name + ":&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + catalogByTitle[i].title + "</option>");
*/
  }

  courseListByCode = byCode.join("");
  courseListByCode = '<select id="courseSelect" size="15" onchange="pickBrowsedCourse()">' + courseListByCode + '</select>';

  courseListByName = byName.join("");
  courseListByName = '<select id="courseSelect" size="15" onchange="pickBrowsedCourse()">' + courseListByName + '</select>';

}

function addCourseIDPadding(id) {
	var result = "";
	var times = 15 - id.length;
	for (i = 0; i < times; ++i) {
		result += "&nbsp;"
	}
	return result;
}	

function sortOfferingsByLocation() {
  var osb = dojo.byId("osb");
  osb.innerHTML = "Sort By Date";
  osb.onclick = function() { sortOfferingsByDate(); }

  var offSelectDiv = dojo.byId("ie-workaround-offSelectDiv");
  offerings.sort(function(c1, c2) {
                   return compareLocations(c1.display_name, c2.display_name);
                 });
  offSelectDiv.innerHTML = createOfferingsHTML();
}

function sortOfferingsByDate() {
  var osb = dojo.byId("osb");
  osb.innerHTML = "Sort By Location";
  osb.onclick = function() { sortOfferingsByLocation(); }

  var offSelectDiv = dojo.byId("ie-workaround-offSelectDiv");
  offerings.sort(function(c1, c2) {
    return c1.start.localeCompare(c2.start);
  });

  offSelectDiv.innerHTML = createOfferingsHTML();
}


function gotoBillingInformation() {
  var courseSelect = dojo.byId("courseSelect");
  var offeringsSelect = dojo.byId("offSelect");

/*  
  var page1 = dojo.byId("qe-page1Div");
  var page2 = dojo.byId("qe-page2Div");
  page1.style.display="none";
  page2.style.display="block";
*/

	if (validateFormField('courseSelect','Course','') && validateFormField('offSelect', 'Date', 'none') && validateFormField('offSelect', 'Date', ''))
		selectQEPage(1, true);
}

function gotoStudentList() {
  var companyField = dojo.byId("regformCompanyField");
  billingCompany = companyField.value;
  var emailField = dojo.byId("regformEmailField");
  var billingEmail = emailField.value;
  billingEmailSuffix = "@" + billingEmail.split("@")[1];

	if (validateRegForm())
		selectQEPage(2, true);
/*
  var page2 = dojo.byId("qe-page2Div");
  var page3 = dojo.byId("qe-page3Div"); 
  page2.style.display="none";
  page3.style.display="block";
*/
}

function validateRegForm() {
	// validate: course, date, location, first, last, company, address, city, state, zip, phone, email, payment type 
	var result = (	validateFormField('regformTCID', 'Course', '') &&
									validateFormField('regformFirstNameField', 'First Name', '') &&
									validateFormField('regformLastNameField', 'Last Name', '') &&
									validateFormField('regformCompanyField', 'Company', '') &&
									validateFormField('regformAddressField', 'Address', '') &&
									validateFormField('regformCityField', 'City', '') &&
									validateFormField('regformStateField', 'State', '') &&
									validateFormField('regformZipField', 'Zip', '') &&
									validateFormField('regformPhoneField', 'Phone', '') &&
									validateEmailField('regformEmailField', 'Email', '') &&
									validateFormField('regformPaymentSelect', 'Payment Type', 'notSelected')
								);
	return result;
}

function validateStudentList() {
	// validate: student first name, last name, phone, email 
  var result = true;
  var studentConfDiv = dojo.byId("confStudentsDiv");
  var studentTable = dojo.byId("studentListTable");
  var tableBody = studentTable.tBodies[0];
  var rows = tableBody.rows;
  var mesg = "";

  for (var i = 1; i < rows.length; ++i) {
    var theRow = rows[i];
    var cells = theRow.cells;

    var firstNameField = cells[0].firstChild; 
    var lastNameField = cells[1].firstChild;
	 var phoneField = cells[3].firstChild;
	 var emailField = cells[4].firstChild;

	 if (firstNameField.value == '')
	 	mesg = 'Student ' + i + ' - First Name is required.';
	 	 
	 else if (lastNameField.value == '')
	 	mesg = 'Student ' + i + ' - Last Name is required.';
	 	
	 else if (phoneField.value == '')
	 	mesg = 'Student ' + i + ' - Contact Phone is required.';

	 else if (emailField.value == '')
	 	mesg = 'Student ' + i + ' - Email is required.';
	 else if (!validateEmail(emailField.value))
	 	mesg = 'Student ' + i + ' - Email is invalid.';
	 	
	 if (mesg != '') {
	 	result = false;
	 	alert(mesg);
	 	break;
	 }
  }

	return result;
}

function validateFormField(fieldID, fieldLabel, emptyVal) {
	var valid = false;
	var fld = dojo.byId(fieldID); 
	
	if (fld) {
		if (fld.value == emptyVal)
			alert(fieldLabel + ' is a required field.');
		else
			valid = true;
	}
	
	return valid;
}

function validateEmailField(fieldID, fieldLabel, emptyVal) {
	var valid = false;
	var fld = dojo.byId(fieldID); 
	
	if (fld) {
		if (fld.value == emptyVal) 
			alert(fieldLabel + ' is a required field.');
			
		else {
   		if (!validateEmail(fld.value)) 
   			alert(fieldLabel + ' is invalid.');
   		else
   			valid = true;
   	}
   }
   
   return valid;
}

function validateEmail(email) {
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   return (reg.test(email)); 
}

function gotoConfirmationPage(val) {
  
  	if ((val == 1 && validateRegForm()) || (val == 2 && validateStudentList())) {
  		fillConfirmationPage();

		selectQEPage(3, true);
	}
/*
  var page3 = dojo.byId("qe-page3Div");
  var page4 = dojo.byId("qe-page4Div"); 
  page3.style.display="none";
  page4.style.display="block";
*/
}

function selectQEPage(index, use_fade) {
  /*
  alert("selecting page: " + index);
  */
  var pages = new Array(4);
	var names = [ 
		"qe-page1Div",
		"qe-page2Div",
		"qe-page3Div",
		"qe-page4Div"
	];

  pages[0] = dojo.byId("qe-page1Div");
  pages[1] = dojo.byId("qe-page2Div");    
  pages[2] = dojo.byId("qe-page3Div");
  pages[3] = dojo.byId("qe-page4Div");    

	console.log("seqp: index = " + index + " current = " + currentPage);
  
  if (index != currentPage) {
		if (use_fade) {
			var fadeout =	
				dojo.fadeOut({node: names[currentPage], 
												 duration: 500,
												 onEnd: function() {
												 pages[currentPage].style.display = "none";
												 pages[index].style.display="block";
												 dojo.fadeIn({node: pages[index], duration: 500}).play();
												 currentPage = index;
											 }
										 });
			fadeout.play();
		}
		else {
			pages[currentPage].style.display = "none";
			pages[currentPage].style.opacity = 0;
			pages[index].style.display = "block";
			pages[index].style.opacity = 1;
			currentPage = index;
		}
	}


/*
  for (i = 0; i < 4; ++i) {
    if (i == index) {
      pages[i].style.display="block";
    }
    else {
      pages[i].style.display="none";
    }
  }
*/
}

function fillConfirmationPage() {
  fillBillingConfirmation();
  fillStudentListConfirmation();
}

function fillBillingConfirmation() {
  var billingConfDiv = dojo.byId("confBillingDiv");
  var billingInfo = "<span class=\"required\">Course:</span> " + dojo.byId("regformCourse").innerHTML + "<br />";
  billingInfo += "<span class=\"required\">Date:</span> " + dojo.byId("regformDate").innerHTML + "<br />";
  billingInfo += "<span class=\"required\">Location:</span> " + dojo.byId("regformLocation").innerHTML + "<br /><br />";

  billingInfo += "<span class=\"required\">Your Name and Address:</span><br />";
  billingInfo += getValueById("regformFirstNameField") + " ";
  billingInfo += getValueById("regformLastNameField") + "<br />";
  billingInfo += getValueById("regformCompanyField") + "<br />";
  billingInfo += getValueById("regformAddressField") + ", ";
  billingInfo += getValueById("regformAddress2Field") + "<br />";
  billingInfo += getValueById("regformCityField") + ", ";
  billingInfo += getValueById("regformStateField") + " ";
  billingInfo += getValueById("regformZipField") + "-";
  billingInfo += getValueById("regformZip4Field") + "<br /><br/>";

  billingInfo += "<span class=\"required\">Phone:</span> " + getValueById("regformPhoneField") + "<br />";
  billingInfo += "<span class=\"required\">Alternate Phone:</span> " + getValueById("regformAltPhoneField") + "<br />";
  billingInfo += "<span class=\"required\">Email:</span> " + getValueById("regformEmailField") + "<br /><br />";

  billingInfo += "<span class=\"required\">Payment Method:</span> " + nicePaymentSelect();


  billingConfDiv.innerHTML = "<p><strong>Confirm Course and Billing Information</strong></p>" + billingInfo;
}

function nicePaymentSelect() {
	var val = getValueById("regformPaymentSelect");
	
	switch (val) {
		case 'creditCard':
			return 'Credit Card';
			
		case 'purchaseOrder':
			return 'Purchase Order';
			
		case 'fsa':
			return 'BE Flexible Solutions Account';
			
		case 'pass':
			return 'Pass Program';
			
		case 'trainingCredits':
			return 'Training Credits';
		
		default:
			return '';
	}

}

function fillStudentListConfirmation() {
  var studentConfDiv = dojo.byId("confStudentsDiv");

  var studentInfo = "";
  var studentTable = dojo.byId("studentListTable");

  var tableBody = studentTable.tBodies[0];

  var rows = tableBody.rows;

  for (var i = 1; i < rows.length; ++i) {
    var theRow = rows[i];
    var cells = theRow.cells;

    var firstNameField = cells[0].firstChild;
    var lastNameField = cells[1].firstChild;

    studentInfo += firstNameField.value + " " + lastNameField.value + ", ";
    studentInfo += cells[2].firstChild.value + ", ";
    studentInfo += cells[3].firstChild.value + ", ";
    studentInfo += cells[4].firstChild.value + "<br />";
  }

  if (studentInfo != '')
  		studentConfDiv.innerHTML = "<p><strong>Confirm Student List</strong></p>" + studentInfo;
  else
  		studentConfDiv.innerHTML = "";
}





function registerForCourse() {
  var registration = new Object();

  rfClassID = dojo.byId("regform-tcid");
  registration.classID = rfClassID.value;

  rfCourse = dojo.byId("regform-course");
  registration.course = encodeURIComponent(rfCourse.innerHTML);
  
  rfDate = dojo.byId("regform-date");
  registration.date = encodeURIComponent(rfDate.innerHTML);

  rfLocation = dojo.byId("regform-location");
  registration.location = encodeURIComponent(rfLocation.innerHTML);

  rfFirstName = dojo.byId("regform-firstname");
  registration.firstName = encodeURIComponent(rfFirstName.innerHTML);

  rfLastName = dojo.byId("regform-lastname");
  registration.lastName = encodeURIComponent(rfLastName.innerHTML);
  
  sendRegistrationRequest(registration);
}

function sendRegistrationRequest(registration) {  
/*
  alert("registering for " + registration.course 
    + " on " + registration.date 
    + " at " + registration.location);
  */

  var formdata = "classID=" + registration.classID;
  formdata += "firstName=" + registration.firstName;
  formdata += "lastName=" + registration.lastName;

//  alert("formdata = " + formdata);

  var req = createXMLHttpRequest();
  req.onreadystatechange = function() {
    if (req.readyState == 4 && req.status == 200) {
      displayRegistrationResult(req.responseText);
    }
  }

  req.open("POST", "/enroll/register");
  req.setRequestHeader("Content-Type", 
                       "application/x-www-form-urlencoded");
/*
  req.send(null);
*/

  req.send(formdata);

} 

function displayRegistrationResult(responseText) {
  pcDiv = dojo.byId("pageContents");
  pcDiv.innerHTML = responseText;
}


var currentPaymentMethod = "";

function selectPaymentMethod() {
  var paymentSelect = dojo.byId("regformPaymentSelect");
  var opts = paymentSelect.options;
  var index = paymentSelect.selectedIndex;
  var newPaymentMethod = opts.item(index).value;

  if (newPaymentMethod != currentPaymentMethod) {
    undisplayPaymentControls();
    currentPaymentMethod = newPaymentMethod;
    displayPaymentControls();
  }
}

function undisplayPaymentControls() {
  var paymentDiv = dojo.byId("regformCCPaymentData");
  paymentDiv.style.display="none";  

  paymentDiv = dojo.byId("regformPOPaymentData");
  paymentDiv.style.display="none";  
}

function displayPaymentControls() {
  var paymentDiv = null;

  if (currentPaymentMethod == "creditCard") {
    paymentDiv = dojo.byId("regformCCPaymentData");
  }
  else if (currentPaymentMethod == "purchaseOrder") {
    paymentDiv = dojo.byId("regformPOPaymentData");
  }

  if (paymentDiv != null) {
    paymentDiv.style.display="block"; 
  }
}

function displayCreditCardControls() {
}


function addStudent() {
  var studentTable = dojo.byId("studentListTable");
  var numRows = studentTable.rows.length;

  var newRow = studentTable.insertRow(numRows);

  var firstNameCell = newRow.insertCell(0);
  firstNameCell.innerHTML="<input type='text '/>";

  var lastNameCell = newRow.insertCell(1);
  lastNameCell.innerHTML="<input type='text '/>";

  var companyCell = newRow.insertCell(2);
  var id = "company" + numRows;
  companyCell.innerHTML="<input id='" + id + "' name='" + id + "' type='text '/>";
  companyInput = companyCell.firstChild;
  companyInput.value = billingCompany;
  
  var phoneCell = newRow.insertCell(3);
  phoneCell.innerHTML="<input type='text '/>";

  var emailCell = newRow.insertCell(4);
  emailCell.innerHTML="<input type='text '/>";

  var deleteCell = newRow.insertCell(5);
  deleteCell.innerHTML="<button onclick='deleteStudent(this)'>Delete</button>";
  
  var addCell = newRow.insertCell(6);
  addCell.innerHTML = "<button onclick='addStudent()'>Add</button>";
}

function deleteStudent(button) {
  var studentTable = dojo.byId("studentListTable");
  var rowIndex = button.parentNode.parentNode.rowIndex;
  studentTable.deleteRow(rowIndex);
}


function getValueById(id) {
  var element = dojo.byId(id);
  return element.value;
}

function submitRegistration() {
  regData = gatherRegistrationData();
	
  var req = createXMLHttpRequest();
  req.onreadystatechange = function() {
    if (req.readyState == 4 && req.status == 200) {
      displayRegistrationResponse(req.responseText);
    }
  }

  req.open("POST", "/enroll/register");
  req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  req.send(regData);	
}  

function gatherRegistrationData() {
	var formFields = [];

	gatherBillingData(formFields);	
	gatherStudentData(formFields);

	return formFields.join('&');
}

function gatherBillingData(formFields) {
	var fieldIDs = [ "regformTCID", 
									 "regformFirstNameField", 
									 "regformLastNameField",
									 "regformCompanyField",
									 "regformAddressField",
									 "regformAddress2Field",
									 "regformCityField",
									 "regformStateField",
									 "regformZipField",
									 "regformZip4Field",
									 "regformPhoneField",
							     "regformAltPhoneField",
									 "regformEmailField",
									 "regformPaymentSelect"
								  ];

	getDataFromElementsByIDs(fieldIDs, formFields)
}

function gatherStudentData(formFields) {
	var oneRadio = dojo.byId("regformOneRadio");
	if (oneRadio.checked) {
		formFields.push(encodeNameAndValue("sameAsBilling", "true"));
	}
	else {
		formFields.push(encodeNameAndValue("sameAsBilling", "false"));
		gatherStudentList(formFields);
	}
}

function gatherStudentList(formFields) {
	var rosterTable = dojo.byId("studentListTable");
	var numRows = rosterTable.rows.length;

	var fieldSuffixes = [ "first_name", "last_name", "company", "phone", "email" ];

	formFields.push(encodeNameAndValue("studentCount", numRows - 1));

	for (var i = 1; i < numRows; ++i) {
		var theRow = rosterTable.rows[i];
		var cells = theRow.cells;

		for (var cellIndex = 0; cellIndex < cells.length - 1; ++cellIndex) {
			var name = "student" + i + "_" + fieldSuffixes[cellIndex];
			var value = cells[cellIndex].firstChild.value;
	
			formFields.push(encodeNameAndValue(name, value));
		}
	}
}


function getDataFromElementsByIDs(fieldIDs, formFields) {
	for (var i = 0; i < fieldIDs.length; ++i) {
		formFields.push(getEncodedFieldValue(fieldIDs[i]));
	}
}	

function getEncodedFieldValue(fieldID) {
	var field = dojo.byId(fieldID);

	return encodeNameAndValue(field.name, field.value);
}

function encodeNameAndValue(name, value) {
	var spaceRegex = /%20/g;

	return encodeURIComponent(name).replace(spaceRegex, "+") + "=" 
					+ encodeURIComponent(value).replace(spaceRegex, "+");
}

function displayRegistrationResponse(responseText) {
	var pcDiv = dojo.byId("pageContents");
  pcDiv.innerHTML = responseText;
}

function disableButtons(val) {
	if (val == 1) {
		// disable multi
		var fld = dojo.byId('regFormButtonStudentList');
		if (fld)
			fld.disabled = true;
		
		fld = dojo.byId('regFormButtonNext');
		if (fld)
			fld.disabled = false;
	} else {
		// disable single
		var fld = dojo.byId('regFormButtonNext');
		if (fld)
			fld.disabled = true;
		
		fld = dojo.byId('regFormButtonStudentList');
		if (fld)
			fld.disabled = false;
	}
		

}

