// JavaScript Document

function createStudentDiv(ajaxReq) {

	var studentDiv;
	var attribute;
	var studentForm;
	var studentFormEmail;
	var studentFormName;
	var studentFormSelect;
	var studentFormDelete;
	var selectCurrent;
	var selectNonactive;
	var selectGraduated;
	var addStudentStatusDiv;
	var randNum;
	var element;
	var responseXML = ajaxReq.responseXML;	
	var formID;
		
	if (responseXML.getElementsByTagName('error')[0]) {
		document.getElementById('addStudentStatus').innerHTML = responseXML.getElementsByTagName('error')[0].firstChild.nodeValue;
		return false;
	} else if (responseXML.getElementsByTagName('student')[0]) {
		
		document.getElementById('addStudentStatus').innerHTML = "Student added.";
		document.getElementById('addStudent').reset();
		
		var studentid = responseXML.getElementsByTagName('studentid')[0].firstChild.nodeValue;	
		
		formID = "formStudent" + studentid;
				
		studentDiv = document.createElement('div');
		studentDiv.setAttribute('class','editStudentForm');
		studentDiv.setAttribute('name','editStudentForm');
		studentDiv.setAttribute('id','editStudentForm' + studentid);
		
		// Create the form element
		studentForm = document.createElement('form');
		studentForm.setAttribute('action','');
		studentForm.setAttribute('method','post');
		studentForm.setAttribute('name','studentForm');
		studentForm.setAttribute('id',"formStudent" + studentid);
		
		//Create the name div of the form
		studentFormName = document.createElement('div');
		studentFormName.setAttribute('class','list_name');
		studentFormName.setAttribute('name','form_studentName');
		//problemFormTitle.setAttribute('value', responseXML.getElementsByTagName('title')[0].firstChild.nodeValue);
		studentFormName.setAttribute('id',"formStudentName" + studentid);
		element = document.createTextNode(responseXML.getElementsByTagName('fullname')[0].firstChild.nodeValue);
		studentFormName.appendChild(element);
		
		// creates the select element in the form
		studentFormSelect = document.createElement('select');
		studentFormSelect.setAttribute('class','list_status');
		studentFormSelect.setAttribute('name','form_studentStatus');
		studentFormSelect.setAttribute('id','formStudentStatus' + studentid);
		selectCurrent = document.createElement('option');
		selectCurrent.setAttribute('value','C');
		element = document.createTextNode('Current');
		selectCurrent.appendChild(element);
		selectNonactive = document.createElement('option');
		selectNonactive.setAttribute('value','N');
		element = document.createTextNode('Nonactive');
		selectNonactive.appendChild(element);
		selectGraduated = document.createElement('option');
		selectGraduated.setAttribute('value','G');
		element = document.createTextNode('Graduated');
		selectGraduated.appendChild(element);
		studentFormSelect.appendChild(selectCurrent);
		studentFormSelect.appendChild(selectNonactive);
		studentFormSelect.appendChild(selectGraduated);
		studentFormSelect.selectedIndex = 0;
		
		// Create the delete button
		studentFormDelete = document.createElement('input');
		studentFormDelete.setAttribute('type','button');
		studentFormDelete.setAttribute('value','Delete');
		studentFormDelete.setAttribute('name','form_studentdelete');
		studentFormDelete.setAttribute('id','formStudentDelete' + studentid);
		studentFormDelete.setAttribute('class','list_delete');
		
		//Create the problemID hidden input of the form
		studentFormStudentID = document.createElement('input');
		studentFormStudentID.setAttribute('type','hidden');
		studentFormStudentID.setAttribute('name','form_studentid');
		studentFormStudentID.setAttribute('value', studentid);
		studentFormStudentID.setAttribute('id',"formStudentID" + studentid);
				
		// Package the problem div node
		studentForm.appendChild(studentFormName);
		studentForm.appendChild(studentFormSelect);
		studentForm.appendChild(studentFormDelete);
		studentForm.appendChild(studentFormStudentID);
		studentDiv.appendChild(studentForm);
		
		// Add the new problem to the list
		document.getElementById('studentList').appendChild(studentDiv);
		document.getElementById("formStudentName" + studentid).addEventListener('mouseover', studentHighlight, false);
		document.getElementById("formStudentName" + studentid).addEventListener('mouseout', studentUnHighlight, false);
		document.getElementById("formStudentStatus" + studentid).addEventListener('change', studentUpdate, false);
		document.getElementById("formStudentDelete" + studentid).addEventListener('click', studentDelete, false);

		return studentDiv;
	}
}

function addStudent2Queue() {
	
	// set up an AJAX handler
	
	var postData = "studentfirst=" + document.addStudent.form_addStudentFirst.value + "&studentemail=" + document.addStudent.form_addStudentEmail.value+ "&studentlast=" + document.addStudent.form_addStudentLast.value + "&schoolid=" + document.addStudent.schoolID.value;
	var testDiv;
	var ajaxReq = createXMLHttpRequest();

	//alert(postData);
	if (ajaxReq) {
		ajaxReq.open('POST', 'ajaxAddStudent.php', true);
		ajaxReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		ajaxReq.setRequestHeader("Content-length", postData.length);
		ajaxReq.setRequestHeader("Connection", "close");
		ajaxReq.onreadystatechange = function() {
			// Check for readyState 4
			if (ajaxReq.readyState == 1) {
				//document.getElementById('addStudentStatus').innerHTML = "Saving...";
			}
			if (ajaxReq.readyState == 4) {
				//Check for Status 200
				if (ajaxReq.status == 200) {
					// Grab the response text - will change to XML later
					//alert(ajaxReq.responseText);
					testDiv = createStudentDiv(ajaxReq);
					//var response = processProblemXML(ajaxReq);//ajaxReq.responseText;
					//alert(response);
				} else {
					alert('Ruh-roh, Rorge! ' + ajaxReq.statusText);
				}
				ajaxReq = null;
			}
		}
		ajaxReq.send(postData);
	}
	
	
	//var boxes = closeBoxes('form_problemText'); 
		
	/*if (boxes >= 16) {
		document.getElementById('addProblemForm').style.display='none';
	} */
	
}

function findDiv(evt) {

    var node = evt.target;
    while (node)
    {
        if (node.nodeType == Node.ELEMENT_NODE &&
                 node.nodeName == "DIV")
        {
                return node;
        }
        node = node.parentNode;
    }
    return null;
}

function findInput(evt) {

    var node = evt.target;
    while (node)
    {
        if (node.nodeType == Node.ELEMENT_NODE &&
                 node.nodeName == "INPUT")
        {
                return node;
        }
        node = node.parentNode;
    }
    return null;
}

function findTextarea(evt) {

    var node = evt.target;
    while (node)
    {
        if (node.nodeType == Node.ELEMENT_NODE &&
                 node.nodeName == "TEXTAREA")
        {
                return node;
        }
        node = node.parentNode;
    }
    return null;
}

function findStudentDiv(evt) {
    var node = evt.target;
    while (node)
    {
		//alert("While, findStudentDiv() "+node.getAttribute('id')+" "+node.nodeName);
		//alert('found the node!');

        if (node.nodeType == Node.ELEMENT_NODE &&
                 node.nodeName == "DIV")
        {
//				alert("Final node found "+node.getAttribute('id'));
				return node;
        }
        node = node.parentNode;
    }
    return null;
}

function studentHighlight(evt) {

//	alert("Highlight.");
	var obj = findDiv(evt);
	var parentForm = obj.parentNode;
	textBox = parentForm.getElementsByTagName('div')[0];
	textBox.style.backgroundColor = '#FFCC33';

}

function studentUnHighlight(evt) {


	var obj = findDiv(evt);
	var parentForm = obj.parentNode;
	textBox = parentForm.getElementsByTagName('div')[0];
	textBox.style.backgroundColor = '#FFFFFF';

}

function studentDelete(evt) {
	
	var obj = findStudentDiv(evt);
	var studentid = obj.childNodes[0].childNodes[3].value;
	var studentname = obj.childNodes[0].firstChild.firstChild.nodeValue;
	if (confirm("Are you sure you want to remove " + studentname + " from your roster?")){
		if (processDeleteStudent(obj)) {
			document.getElementById('studentList').removeChild(obj);
		}
	}
	
}

function studentUpdate(evt) {
	
	//alert("Running student update.");
	var obj = findStudentDiv(evt);

	// set up an AJAX handler
	
	var postData = "studentid=" + obj.firstChild.childNodes[3].value + "&studentstatus=" + obj.firstChild.childNodes[1].value;
//	alert(postData);
	var testDiv;
	var ajaxReq = createXMLHttpRequest();

	//alert(postData);
	if (ajaxReq) {
		ajaxReq.open('POST', 'ajaxUpdateStudent.php', true);
		ajaxReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		ajaxReq.setRequestHeader("Content-length", postData.length);
		ajaxReq.setRequestHeader("Connection", "close");
		ajaxReq.onreadystatechange = function() {
			// Check for readyState 4
			if (ajaxReq.readyState == 1) {
				//document.getElementById('addStudentStatus').innerHTML = "Saving...";
			}
			if (ajaxReq.readyState == 4) {
				//Check for Status 200
				if (ajaxReq.status == 200) {
					// Grab the response text - will change to XML later
					//alert(ajaxReq.responseText);
					testDiv = ajaxReq.responseXML;
					if (testDiv.getElementsByTagName('success')[0]){
						return true;
					}
					//var response = processProblemXML(ajaxReq);//ajaxReq.responseText;
					//alert(response);
				} else {
					alert('Ruh-roh, Rorge! ' + ajaxReq.statusText);
				}
				ajaxReq = null;
			}
		}
		ajaxReq.send(postData);
	}
}

function problemUniversal(evt) {

	var obj = findProblemDiv(evt);
	var switchText = obj.getElementsByTagName('input')[1].value;
	var problemNumber = obj.getElementsByTagName('input')[2].value;
	
	if (switchText == 'Edit') {
		showThisProblem(evt);
		obj.getElementsByTagName('input')[1].blur();
		obj.getElementsByTagName('input')[1].value = 'Save';
	} else if (switchText == 'Save') {
		problemSave(evt);
		obj.getElementsByTagName('input')[1].value = 'Saved';
		setTimeout("resetSaved(" + problemNumber + ");", 5000);
	}
}

function problemSave(evt) {

	var obj = findProblemDiv(evt);
	textBox = obj.getElementsByTagName('textarea')[0];
	problemForm = obj.getElementsByTagName('form')[0];
	var problemNumber = obj.getElementsByTagName('input')[2].value;

	// set up an AJAX handler
	
	var ajaxReq = createXMLHttpRequest();
	var postData = "probtitle=" + problemForm.getElementsByTagName('input')[0].value + "&probtext=" + problemForm.getElementsByTagName('textarea')[0].value + "&problemid=" + problemForm.getElementsByTagName('input')[2].value;
	var testDiv;
	if (ajaxReq) {
		ajaxReq.open('POST', 'ajaxEditProblem.php', true);
		ajaxReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		ajaxReq.setRequestHeader("Content-length", postData.length);
		ajaxReq.setRequestHeader("Connection", "close");
		ajaxReq.onreadystatechange = function() {
			// Check for readyState 4
			if (ajaxReq.readyState == 1) {
				obj.getElementsByTagName('input')[1].value = 'Saving...';
			}
			if (ajaxReq.readyState == 4) {
				//Check for Status 200
				if (ajaxReq.status == 200) {
					//alert(ajaxReq.responseText);
					if (ajaxReq.responseXML.getElementsByTagName('error')[0]) {
						document.getElementById('problemStatus').innerHTML = responseXML.getElementsByTagName('error')[0].firstChild.nodeValue;
						return false;
					} else if (ajaxReq.responseXML.getElementsByTagName('problem')[0]) {
						obj.getElementsByTagName('input')[1].value = 'Saved';
						setTimeout("resetSaved(" + problemNumber + ");", 5000);
					} else {
						document.getElementById('problemStatus').innerHTML = 'Problem not properly saved.';
					}
				} else {
					document.getElementById('problemStatus').innerHTML = "Problem saving problem \"" + problemForm.getElementsByTagName('input')[0].value + "\"";
				}
				ajaxReq = null;
			}
		}
		ajaxReq.send(postData);
	}
	
	var boxes = closeBoxes('form_problemText'); 
		
	if (boxes >= 16) {
		document.getElementById('addProblem').style.display='none';
	}

}

function addFormFunctions() {

	var stud_names = document.getElementsByName('form_studentName');
	var stud_status =  document.getElementsByName('form_studentStatus');
	var stud_delete = document.getElementsByName('form_studentdelete');
	var i;
	var element;
	
	for (i=0; i < stud_names.length; i++) {
		stud_names[i].addEventListener('mouseover', studentHighlight, false);
		stud_names[i].addEventListener('mouseout', studentUnHighlight, false);
		stud_status[i].addEventListener('change', studentUpdate, false);
		stud_delete[i].addEventListener('click', studentDelete, false);
	}
	
	return true;
}

function processDeleteStudent(obj) {
	
	// set up an AJAX handler
	
	var postData = "studentid=" + obj.firstChild.childNodes[3].value;
	var testDiv;
	var ajaxReq = createXMLHttpRequest();

	//alert(postData);
	if (ajaxReq) {
		ajaxReq.open('POST', 'ajaxDeleteStudent.php', true);
		ajaxReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		ajaxReq.setRequestHeader("Content-length", postData.length);
		ajaxReq.setRequestHeader("Connection", "close");
		ajaxReq.onreadystatechange = function() {
			// Check for readyState 4
			if (ajaxReq.readyState == 1) {
				//document.getElementById('addStudentStatus').innerHTML = "Saving...";
			}
			if (ajaxReq.readyState == 4) {
				//Check for Status 200
				if (ajaxReq.status == 200) {
					// Grab the response text - will change to XML later
					//alert(ajaxReq.responseText);
					testDiv = ajaxReq.responseXML;
					if (testDiv.getElementsByTagName('success')[0]){
						return true;
					}
					//var response = processProblemXML(ajaxReq);//ajaxReq.responseText;
					//alert(response);
				} else {
					alert('Ruh-roh, Rorge! ' + ajaxReq.statusText);
				}
				ajaxReq = null;
			}
		}
		ajaxReq.send(postData);
	}
		
}

function updateTeamsRegistration() {
	
	// set up an AJAX handler
	
	var formData = document.getElementById('registerTeamsForm').getElementsByTagName('input');
	
	var postData = "teamj=" + formData[0].value + "&teamm=" + formData[1].value + "&teams=" + formData[2].value + "&indj=" + formData[3].value + "&indm=" + formData[4].value + "&inds=" + formData[5].value + "&cmpsj=" + formData[6].value + "&cmpsm=" + formData[7].value + "&cmpss=" + formData[8].value + "&scenj=" + formData[9].value + "&scenm=" + formData[10].value + "&scens=" + formData[11].value;
	var testDiv;
	var ajaxReq = createXMLHttpRequest();

	//alert(postData);
	if (ajaxReq) {
		ajaxReq.open('POST', 'ajaxUpdateRegistration.php', true);
		ajaxReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		ajaxReq.setRequestHeader("Content-length", postData.length);
		ajaxReq.setRequestHeader("Connection", "close");
		ajaxReq.onreadystatechange = function() {
			// Check for readyState 4
			if (ajaxReq.readyState == 1) {
				//document.getElementById('addStudentStatus').innerHTML = "Saving...";
			}
			if (ajaxReq.readyState == 4) {
				//Check for Status 200
				if (ajaxReq.status == 200) {
					// Grab the response text - will change to XML later
					//alert(ajaxReq.responseText);
					testDiv = ajaxReq.responseXML;
					if (testDiv.getElementsByTagName('success')[0]){
						alert(testDiv.getElementsByTagName('success')[0].firstChild.nodeValue);
					} else {
						alert(testDiv.getElementsByTagName('error')[0].firstChild.nodeValue);
					}
					//var response = processProblemXML(ajaxReq);//ajaxReq.responseText;
					//alert(response);
				} else {
					alert('Ruh-roh, Rorge! ' + ajaxReq.statusText);
				}
				ajaxReq = null;
			}
		}
		ajaxReq.send(postData);
	}
	
}

function updatePassword() {
	
	// set up an AJAX handler
	
	var formData = document.getElementById('changePassword').getElementsByTagName('input');
	
	if (formData[1].value == formData[2].value) {
		
		var postData = "oldpass=" + formData[0].value + "&newpass=" + formData[1].value + "&uid=" + formData[4].value + "&utype=" + formData[5].value;
		//alert(postData);
		var testDiv;
		var ajaxReq = createXMLHttpRequest();
	
		//alert(postData);
		if (ajaxReq) {
			ajaxReq.open('POST', 'ajaxUpdatePassword.php', true);
			ajaxReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			ajaxReq.setRequestHeader("Content-length", postData.length);
			ajaxReq.setRequestHeader("Connection", "close");
			ajaxReq.onreadystatechange = function() {
				// Check for readyState 4
				if (ajaxReq.readyState == 1) {
					//document.getElementById('addStudentStatus').innerHTML = "Saving...";
				}
				if (ajaxReq.readyState == 4) {
					//Check for Status 200
					if (ajaxReq.status == 200) {
						// Grab the response text - will change to XML later
						//alert(ajaxReq.responseText);
						testDiv = ajaxReq.responseXML;
						if (testDiv.getElementsByTagName('success')[0]){
							alert(testDiv.getElementsByTagName('success')[0].firstChild.nodeValue);
							document.getElementById('changePassword').reset();
						} else {
							alert(testDiv.getElementsByTagName('error')[0].firstChild.nodeValue);
							document.getElementById('changePassword').reset();
						}
						//var response = processProblemXML(ajaxReq);//ajaxReq.responseText;
						//alert(response);
					} else {
						alert('Ruh-roh, Rorge! ' + ajaxReq.statusText);
					}
					ajaxReq = null;
				}
			}
			ajaxReq.send(postData);
		}
	} else {
		alert('Your new passwords don\'t match.  Please reenter them and try again.');
	}
}

function changeToBlack(fieldName, fieldValue) {

	var field = document.getElementsByName(fieldName)[0];
	var text = field.value;
	
	if (text == fieldValue) {
		field.value = "";
		field.style.color = "#000000";
	}

}

function changeToPassword(fieldName) {

	var field = document.getElementsByName(fieldName)[0];
	field.style.background = "#FFFFFF";

}

function changeToColor(fieldName, fieldValue, fieldColor) {

	var field = document.getElementsByName(fieldName)[0];
	var text = field.value;
	
	if (text == '') {
		field.value = fieldValue;
		field.style.color = fieldColor;
	}
}

function openPanel(panelName) {
	
	var iterCount = 0;
	var i = 0;
	if (document.getElementById(panelName).style.display != 'block') {
		
		iterCount = document.getElementsByName('controlPanelSection').length;
		for (i=0; i < iterCount; i++) {
			document.getElementsByName('controlPanelSection')[i].style.display = 'none';
		}
		document.getElementById('overviewPanel').style.display = 'none';
		document.getElementById('teamsPanel').style.display = 'none';		
		document.getElementById('accountPanel').style.display = 'none';
		document.getElementById('studentPanel').style.display = 'none';
		document.getElementById('registerPanel').style.display = 'none';
		document.getElementById(panelName).style.display = 'block';
	}

}