var xmlreqs = new Array();
var boxToUpdate;
var currentValueToSet;
var countryList;

function CXMLReq(freed) {
	this.freed = freed;
	this.xmlhttp = false;
	if (window.XMLHttpRequest) {
		this.xmlhttp = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
}

function xmlreqGetPos(url,functionToUse) {
	var pos = -1;
	
	for (var i=0; i<xmlreqs.length; i++) {
		if (xmlreqs[i].freed == 1) { pos = i; break; }
	}
	if (pos == -1) { pos = xmlreqs.length; xmlreqs[pos] = new CXMLReq(1); }
	return pos;
}
	
function xmlreqGET(pos,url,functionToUse) {	
	if (xmlreqs[pos].xmlhttp) {
		xmlreqs[pos].freed = 0;
		xmlreqs[pos].xmlhttp.open("GET",url,true);
		xmlreqs[pos].xmlhttp.onreadystatechange = function() {
			if (typeof(xmlhttpChange) != 'undefined') { xmlhttpChange(pos,functionToUse); }
			else{alert("equal to undefined");}
		}
		if (window.XMLHttpRequest) {
			xmlreqs[pos].xmlhttp.send(null);
		} else if (window.ActiveXObject) {
			xmlreqs[pos].xmlhttp.send();
		}
	}
	return pos;
}

function xmlhttpChange(pos,handler) {
	if (typeof(xmlreqs[pos]) != 'undefined' && xmlreqs[pos].freed == 0 && xmlreqs[pos].xmlhttp.readyState == 4) {
		if (xmlreqs[pos].xmlhttp.status == 200 || xmlreqs[pos].xmlhttp.status == 304) {
			handler(xmlreqs[pos].xmlhttp.responseXML,pos);
			} 
		else {
			alert(xmlreqs[pos].xmlhttp.status);
			alert("Unable to connect to server www.travel-to-teach.org");
		}
		xmlreqs[pos].freed = 1;
	}
}

function getAllProjects() {
	var url = "load_projects.php";
	var pos = xmlreqGetPos();
	xmlreqGET(pos,url,loadAllProjects);
}

function loadAllProjects(request,pos){
	countryList = request.getElementsByTagName("country");
}

function loadProjects(selectToUpdate,selectedCountry){
	selectToUpdate.length = 0;//empty box
	addOption(selectToUpdate,'All','All');
	try
    	{
    	for (var x=0; x<countryList.length; x++) {
    		if (countryList[x].getAttribute("name") == selectedCountry){
    			project = countryList[x].getElementsByTagName("project")
    			for (var y=0; y<project.length; y++) {
    				projectName = project[y].childNodes[0].nodeValue;
    				addOption(selectToUpdate,projectName,projectName);
    				}
    			break;}
    	   	}
    	}
        catch(e){alert(e);
        }
}

function addOption(selectbox,text,value)//adds an option to a select list
{
	var optn = document.createElement("option");
	optn.text = text;
	optn.value = value;
	selectbox.options.add(optn);
}

function showArea(areaToShow){
	var showDiv = document.getElementById(areaToShow);
	showDiv.style.display = "block";
}

function hideArea(areaToHide){
	var hideDiv = document.getElementById(areaToHide);
	hideDiv.style.display = "none";
}
