/******************
*
*	Managment Information Systems Association
*	Purdue University
*	Resume CD Filters
*	Scriped by Paul S. Chun
*	Feel free to steal this code, it's a free country, right?
*
******************/

function getXmlHttpRequestObject()
{
	if (window.XMLHttpRequest)
	{
		return new XMLHttpRequest(); //Good Browser
	}
	else if(window.ActiveXObject)
	{
		return new ActiveXObject("Microsoft.XMLHTTP"); //IE
	}
	else
	{
		alert("Please update to a Web 2.0 compliant browser like Firefox.");
	}
}

function MisaStudent()
{
	var firstName;
	var lastName;
	var major;
	var minor;
	var email;
	var gpa;
	var experience;
	var resumeUrl;
	var gradSeason;
	var gradYear;
}

var receiveReq = getXmlHttpRequestObject();    //XML HTTP REQUEST!
var resumeXml;    //XML Document
var major;    //Major
var swtString;    //Sweet String
var swtArray;    //Sweet Array
var arrayCount;    //Array count
var whoIn;    //Who is in?
var studentArray;

function doFilter()
{
	//Variable Declarations
	this.arrayCount = 0;    //Reset Array Count
	this.swtString = "";    //Sweet String
	
	//Get all students
	updateXML();
	this.swtArray = resumeXml.getElementsByTagName("student");
	this.whoIn = new Array();
	for(var loopControl1 = 0; loopControl1 < swtArray.length; loopControl1++)
	{
		whoIn[loopControl1] = "0";
	}
	this.studentArray = new Array();
	if(document.getElementById("major").value != "all")
	{
		filterMajor(document.getElementById("major").value);    //Filter by Major
	}
	if(document.getElementById("gpaRange").value != 0)
	{
		filterGpa(document.getElementById("gpaRange").value);    //Filter by Gpa
	}
	printIn();
}

function makeGone(id)
{
		whoIn[id] = "gone";
}

function getFormattedElement(indexAt, category)
{
	var temp = swtArray[indexAt].getElementsByTagName(category);
	if(temp.length > 0)
	{
		var returnString = temp[0].firstChild.nodeValue;
	}
	else
	{
		return "<i>Not Listed</i>";
	}
	for(var loopControl1 = 1; loopControl1 < temp.length; loopControl1++)
	{
		returnString += ", "+temp[loopControl1].firstChild.nodeValue;
	}
	return returnString;
}

function printIn()
{
	swtString = "";
	var loopControl1;
	var loopControl2 = 0;
	for(var loopControl1 = 0; loopControl1 < whoIn.length; loopControl1++)
	{
		if(whoIn[loopControl1] != "gone")
		{
			temp = new MisaStudent();
			temp.firstName = getFormattedElement(loopControl1, "firstName");
			temp.lastName = getFormattedElement(loopControl1, "lastName");
			temp.major = getFormattedElement(loopControl1, "major");
			temp.minor = getFormattedElement(loopControl1, "minor");
			temp.email = getFormattedElement(loopControl1, "email");
			temp.resumeUrl = getFormattedElement(loopControl1, "resume");
			temp.experience = getFormattedElement(loopControl1, "experience");
			temp.gpa = getFormattedElement(loopControl1, "gpa");
			temp.gradSeason = getFormattedElement(loopControl1, "gradSeason");
			temp.gradYear = getFormattedElement(loopControl1, "gradYear");
			studentArray[loopControl2++] = temp;
		}
		
	}
	
	for(loopControl1 = 0; loopControl1 < studentArray.length; loopControl1++)
	{
		for(loopControl2 = 0; loopControl2 < (studentArray.length-1); loopControl2++)
		{
			if(studentArray[loopControl2].lastName > studentArray[loopControl2+1].lastName)
			{
				temp = studentArray[loopControl2];
				studentArray[loopControl2] = studentArray[loopControl2+1];
				studentArray[loopControl2+1] = temp;
			}
		}
	}
	
	for(loopControl1 = 0; loopControl1 < studentArray.length; loopControl1++)
	{
		swtString += "<div class=\"resume\">";
		swtString += "<div class=\"name\">";
		swtString += studentArray[loopControl1].lastName+", "+studentArray[loopControl1].firstName;
		swtString += "</div>";
		swtString += "<div class=\"email\">";
		swtString += "<a href=\"mailto:"+studentArray[loopControl1].email+"\">"+studentArray[loopControl1].email+"</a>";
		swtString += "</div>";
		swtString += "<div class=\"miscInfo\">";
		swtString += "<div><span class=\"miscInfoHead\">Major</span>"+studentArray[loopControl1].major+"</div>";
		swtString += "<div><span class=\"miscInfoHead\">Minor</span>"+studentArray[loopControl1].minor+"</div>";
		swtString += "<div><span class=\"miscInfoHead\">Grade Point Average</span>"+studentArray[loopControl1].gpa+"</div>";
		swtString += "<div><span class=\"miscInfoHead\">Work Experience Desired</span>"+studentArray[loopControl1].experience+"</div>";
		swtString += "<div><span class=\"miscInfoHead\">Graduation Date</span>"+studentArray[loopControl1].gradSeason+" "+studentArray[loopControl1].gradYear+"</div>";
		swtString += "<div><span class=\"miscInfoHead\">Resume</span><a href=\""+studentArray[loopControl1].resumeUrl+"\"><img src=\"images/document.png\" alt=\"\" border=\"0\" /></a></div>";
		swtString += "</div>";
		swtString += "</div>";
	}
	if (receiveReq.readyState == 4 || receiveReq.readyState == 0)
	{
		receiveReq.open("GET", "resumecd/directory.xml", true);
		receiveReq.onreadystatechange = handleString;
		receiveReq.send(null);
	}
}

function filterGpa(gpaRange)
{
	var temp;
	for(var loopControl1 = 0; loopControl1 < parseInt(swtArray.length); loopControl1++)
	{
		temp = swtArray[loopControl1].getElementsByTagName("gpa");
		if(temp.length == 0)
		{
			makeGone(loopControl1);
		}
		else if(parseFloat(temp[0].firstChild.nodeValue) < parseFloat(gpaRange))
		{
			makeGone(loopControl1);
		}
	}
}

function filterMajor(major)
{
	var temp;
	for(var loopControl1 = 0; loopControl1 < parseInt(swtArray.length); loopControl1++)
	{
		temp = swtArray[loopControl1].getElementsByTagName("major");
		if(temp.length == 0)
		{
			makeGone(loopControl1);
		}
		else
		{
			var unsafe = 1;
			for(var loopControl2 = 0; loopControl2 < temp.length; loopControl2++)
			{
				if(temp[loopControl2].firstChild.nodeValue == major)
				{
					unsafe = 0; //We don't need to delete it anymore
				}
			}
			if(unsafe == 1)
			{
				makeGone(loopControl1);
			}
		}
	}
}

function handleString()
{
	document.getElementById("here").innerHTML = swtString;
}

function updateXML()
{
  if(window.ActiveXObject)
  {
    this.resumeXml = new ActiveXObject("Microsoft.XMLDOM");
    this.resumeXml.async = false;
    this.resumeXml.load("resumecd/directory.xml");
  }
  else
  {
    this.resumeXml = document.implementation.createDocument("","",null);
    this.resumeXml.async = false;
    this.resumeXml.load("resumecd/directory.xml");
	
  }
}