var XMLHttpRequestObject = false;

// initialize the XMLHttpRequest object when the window finishes loading
window.onload = function(){
	if (window.XMLHttpRequest)
		XMLHttpRequestObject = new XMLHttpRequest();
	else if (window.ActiveXObject)
		XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}

// function that is called when the select window is changed
// it will send a request along with GET query specifying the value
// of the select box that was changed - the server will then generate xml
// this is then processed by changeSelectOptions

function selectChanged(obj){
	if (XMLHttpRequestObject && obj.value != -1){
		if (obj.name == "job_category"){
			var regionVal = document.getElementById("select-region").value;
			XMLHttpRequestObject.open("GET","jobseekers-server.php?"+obj.name+"="+obj.value+"&region="+regionVal,true);
		}
		else if (obj.name == "education_level"){
			if (obj.value > 2)
				XMLHttpRequestObject.open("GET","jobseekers-server.php?"+obj.name+"="+obj.value,true);
			else {
				document.getElementById(obj.name+"-sublist").firstChild.innerHTML = "";
				document.getElementById(obj.name+"-sublist").style.display = "none";
				return;
			}
		}
		else
			XMLHttpRequestObject.open("GET","jobseekers-server.php?"+obj.name+"="+obj.value,true);
		
		XMLHttpRequestObject.onreadystatechange = function(){
		 	if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200){
				var XMLObj = XMLHttpRequestObject.responseXML;
				changeSelectOptions(XMLObj);			
				document.getElementById(obj.parentNode.id+"-sublist").style.display = "block";				
			}
		}
		XMLHttpRequestObject.send(null);
	}
	else if (obj.value == -1){
		document.getElementById(obj.parentNode.id+"-sublist").firstChild.innerHTML = "";
		document.getElementById(obj.parentNode.id+"-sublist").style.display = "none";
	}
}

// function is called by selectChanged() - it takes in two parameters
// (the XML Object and the div id of the form field that you want to modify)
// This function will clean out the div first. Then using the DOM - create options
// with the appopriate value and name - YOU MUST USE DOM because IE7 has bugs when
// modifying the select tag where it will chop off the first <tag> - rendering all of it
// useless

function changeSelectOptions(xml){
	//have to use this method for it to work in IE
	xml = xml.getElementsByTagName("data");
	xml = xml[0];
	var xmlObj = xml.getElementsByTagName("select");
	for (var x = 0; x < xmlObj.length; x++){
		xml = xmlObj[x]; //go to the first select object
		
		var descriptDiv = document.createElement('div');
		descriptDiv.className = "select-descript";
		var selectObj = document.createElement('select');
		selectObj.className = "select-box";
		var subListObj = null;
		
		var divName = "";

		var temp = document.createElement('option');
		var name = document.createTextNode("Select a Value");
		temp.setAttribute("value",-1);
		temp.appendChild(name);
		selectObj.appendChild(temp);
		
		for (var i = 0; i < xml.childNodes.length; i++){
			if (xml.childNodes[i].tagName == "name"){
				divName = xml.childNodes[i].firstChild.nodeValue;
				selectObj.setAttribute("name",divName);
				selectObj.setAttribute("id","select-"+divName);
			}
			else if (xml.childNodes[i].tagName == "descript"){
				var temp = document.createTextNode(xml.childNodes[i].firstChild.nodeValue);
				descriptDiv.appendChild(temp);
			}
			else if (xml.childNodes[i].tagName == "sublist"){
				selectObj.onchange = function (ev) { selectChanged(this); };
				subListObj = document.createElement('div');
				var temp = document.createElement('div');
				temp.setAttribute("id",xml.childNodes[i].firstChild.nodeValue);
				subListObj.appendChild(temp);
			}
			else {
				var temp = document.createElement('option');
				var name = document.createTextNode(xml.childNodes[i].lastChild.firstChild.nodeValue);
				temp.appendChild(name);
				temp.setAttribute("value",xml.childNodes[i].firstChild.firstChild.nodeValue);
				selectObj.appendChild(temp);
			}
		}
		
		document.getElementById(divName).innerHTML = "";
		document.getElementById(divName).appendChild(descriptDiv);
		document.getElementById(divName).appendChild(selectObj);
		if (subListObj != null){
			subListObj.setAttribute("id",divName+"-sublist");
			document.getElementById(divName).appendChild(subListObj);
		}
	}
}

function selectChangedEmployers(obj){
	if (XMLHttpRequestObject && obj.value != -1){
		if (obj.name == "job_category"){
			var regionVal = document.getElementById("select-region").value;
			XMLHttpRequestObject.open("GET","employers-server.php?"+obj.name+"="+obj.value+"&region="+regionVal,true);
		}
		else if (obj.name == "education_level"){
			if (obj.value > 2)
				XMLHttpRequestObject.open("GET","employers-server.php?"+obj.name+"="+obj.value,true);
			else {
				document.getElementById(obj.name+"-sublist").firstChild.innerHTML = "";
				document.getElementById(obj.name+"-sublist").style.display = "none";
				return;
			}
		}
		else
			XMLHttpRequestObject.open("GET","employers-server.php?"+obj.name+"="+obj.value,true);
		
		XMLHttpRequestObject.onreadystatechange = function(){
		 	if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200){
				var XMLObj = XMLHttpRequestObject.responseXML;
				changeSelectOptionsEmployers(XMLObj);			
				document.getElementById(obj.parentNode.id+"-sublist").style.display = "block";				
			}
		}
		XMLHttpRequestObject.send(null);
	}
	else if (obj.value == -1){
		document.getElementById(obj.parentNode.id+"-sublist").firstChild.innerHTML = "";
		document.getElementById(obj.parentNode.id+"-sublist").style.display = "none";
	}
}

function changeSelectOptionsEmployers(xml){
	//have to use this method for it to work in IE
	xml = xml.getElementsByTagName("data");	
	xml = xml[0];
	var xmlObj = xml.getElementsByTagName("select");
	for (var x = 0; x < xmlObj.length; x++){
		xml = xmlObj[x]; //go to the first select object
		
		var descriptDiv = document.createElement('div');
		descriptDiv.className = "select-descript";
		var selectObj = document.createElement('select');
		selectObj.className = "select-box";
		var subListObj = null;
		
		var divName = "";

		var temp = document.createElement('option');
		var name = document.createTextNode("Select a Value");
		temp.setAttribute("value",-1);
		temp.appendChild(name);
		selectObj.appendChild(temp);
		
		for (var i = 0; i < xml.childNodes.length; i++){
			if (xml.childNodes[i].tagName == "name"){
				divName = xml.childNodes[i].firstChild.nodeValue;
				selectObj.setAttribute("name",divName);
				selectObj.setAttribute("id","select-"+divName);
			}
			else if (xml.childNodes[i].tagName == "descript"){
				var temp = document.createTextNode(xml.childNodes[i].firstChild.nodeValue);
				descriptDiv.appendChild(temp);
			}
			else if (xml.childNodes[i].tagName == "sublist"){
				selectObj.onchange = function (ev) { selectChangedEmployers(this); };
				subListObj = document.createElement('div');
				var temp = document.createElement('div');
				temp.setAttribute("id",xml.childNodes[i].firstChild.nodeValue);
				subListObj.appendChild(temp);
			}
			else {
				var temp = document.createElement('option');
				var name = document.createTextNode(xml.childNodes[i].lastChild.firstChild.nodeValue);
				temp.appendChild(name);
				temp.setAttribute("value",xml.childNodes[i].firstChild.firstChild.nodeValue);
				selectObj.appendChild(temp);
			}
		}
		
		document.getElementById(divName).innerHTML = "";
		document.getElementById(divName).appendChild(descriptDiv);
		document.getElementById(divName).appendChild(selectObj);
		if (subListObj != null){
			subListObj.setAttribute("id",divName+"-sublist");
			document.getElementById(divName).appendChild(subListObj);
		}
	}
}


function checkForm(){
    //array with standin names fields
    //these names are slightly more descriptive than the names of the fields
    var biggerName = new Array() ;
    biggerName["state"] = "State" ;
    biggerName["region"] = "Metro Area" ;
    biggerName["job_category"] = "Occupation Category" ;
    biggerName["job_description"] = "Occupation" ;
    biggerName["education_level"] = "Education Level" ;
    biggerName["job_experience"] = "Work Experience" ;
    biggerName["company_size"] = "Company Size" ;
    biggerName["management_level"] = "Management Level" ;
    biggerName["report_to"] = "Report To" ;
    biggerName["sector"] = "Industry Sector" ;
    biggerName["industry"] = "Industry" ;
  
	var selectArray = document.getElementsByTagName("select");
	
	var missingList = "You have not completed the form\n" ;
	missingList += "The following items have not been completed:\n\n" ;
	var emptyItem = false;
	//for (var i = 0; emptyItem == false && i < selectArray.length; i++){
	 for (var i = 0;  i < selectArray.length; i++){
	 //alert(selectArray[i].name) ;
		if (selectArray[i].value == -1){
			emptyItem = true;
			//alert ("You have not completed the form.");
			if(typeof(biggerName[selectArray[i].name]) == "undefined" )
				missingList += selectArray[i].name + "\n" ;
			else
				missingList += biggerName[selectArray[i].name] + "\n" ;	
			//return (!emptyItem);
		}
	}
	
///add code for checking the radio buttons named "level"	
	var radioArray = document.getElementsByName("level");
	if(radioArray.length > 0){
	 
	 var emptyItemLevel = true ;//item is empty until it finds a checked button
	  		for (var i = 0; i < radioArray.length ; i++){
	  		//a hidden button with value -1 has been added to the list
			if(radioArray[i].checked){
				if(radioArray[i].value > 0){emptyItemLevel = false ;}
			}
		
			
		}
		if(emptyItemLevel == true){
		//	alert ("You have not completed the form.");
			emptyItem = true ;
			missingList += "Skill Level\n" ;
		}
	}
	if(emptyItem)
	alert(missingList) ;
	
	return (!emptyItem);
}

function checkDemoForm(){
    emptyItem = false ;//will become true if an empty item is found
 	var inputArray = document.getElementsByTagName("input");
 	//alert(inputArray.length) ;
 	for (var i = 0;  i < inputArray.length; i++){
 	 //alert(inputArray[i].length + "  "+ inputArray[i].value)
 	  //alert(inputArray[i].value.length + "  "+ inputArray[i].value)
 	  if(inputArray[i].value.length < 1){
		emptyItem = true ;
	}
	
 	 }
 	 if(emptyItem)
	  alert("Please enter the required fields") ;
 	return (!emptyItem) ;
 }