﻿var xrequest = CreateRequestObject();
var currSearches = new Array();
var selectedIds = new Array();
var lastSearch;
var _messageTimeout;

function CountKeys(assocArray)
{
	var count = 0;
	for (var key in assocArray)
		count++;
	return count;
}

function FormSearchUrl()
{
	var url = "presearch.php?";
	var search = new Array();
	var order = "";
	for (var key in currSearches)
	{
		order += key;
		search[search.length] = key+"="+currSearches[key];
	}
	
	return url + search.join("&")+"&order="+order;
}

function SetSelected()
{
	for (var key in selectedIds)
	{
		var elem = document.getElementsByName(key)[0];
		if (!elem)
		{
		    alert(key);
		    continue;
		}
		for (var i=0; i < elem.options.length; i++)
		{
			if (elem.options[i].value == selectedIds[key])
				elem.options[i].selected = true;
		}
	}
}

function DisableControls(exempt, disable)
{
	if (exempt != "Country_id" && exempt != "Country")
		document.getElementsByName("Country_id")[0].disabled = disable;
		
	if (exempt != "TargetPopulation_id" && exempt != "TargetPopulation")
		document.getElementsByName("TargetPopulation_id")[0].disabled = disable;
		
	if (exempt != "Topic_id" && exempt != "Topic")
		document.getElementsByName("Topic_id")[0].disabled = disable;
		
	if (exempt != "IntendedAudience_id" && exempt != "IntendedAudience")
		document.getElementsByName("IntendedAudience_id")[0].disabled = disable;
		
	if (exempt != "Keyword_id" && exempt != "Keyword")
		document.getElementsByName("Keyword_id")[0].disabled = disable;
		
	if (exempt != "TypeOfResource_id" && exempt != "TypeOfResource")
		document.getElementsByName("TypeOfResource_id")[0].disabled = disable;

	if (exempt != "Language_id" && exempt != "Language")
		document.getElementsByName("Language_id")[0].disabled = disable;
}
function ResetControls()
{
    currSearches = new Array();
    selectedIds = {"Country_id":"","TargetPopulation_id":"","Topic_id":"", "IntendedAudience_id":"", "Keyword_id":"", "TypeOfResource_id":"", "Language_id":""};
    
	xrequest = CreateRequestObject();
	xrequest.onreadystatechange=PresearchResultsReceived;
	xrequest.open("GET","presearch.php?action=reset",true);
	xrequest.send(null);
}

function OnNoRecordsFound()
{
	var msg = document.getElementById("status_message");
	msg.innerHTML = "No records found matching given criteria.";
	msg.style.display = "";
}

function GetNullOption(field)
{
	switch (field)
	{
		case "Country":
			return new Option("Any/All Project Locations", "", true);
		case "TargetPopulation":
			return new Option("Any/All Sex or Age Groups", "", true);
		case "Topic":
			return new Option("Any/All Topics", "", true);
		case "IntendedAudience":
			return new Option("Any/All Audiences", "", true);
		case "Keyword":
			return new Option("Any/All Keywords", "", true);
		case "TypeOfResource":
			return new Option("Any/All Resource Types", "", true);
		case "Language":
			return new Option("Any/All Languages", "", true);
		default:
			return new Option("Any/All Items", "", true);
	}
}

function DropDownChanged(selectElem)
{	

	lastSearch = selectElem.name.substring(0, selectElem.name.length-3);
	selectedIds[selectElem.name] = selectElem.value;
	
	var msg = document.getElementById("status_message");
	msg.innerHTML = "Updating...";
	msg.style.display = "";
	
	var searchKey = "";
	switch (lastSearch)
	{
		case "Country":
		    searchKey = "c";
			break;
		case "TargetPopulation":
			searchKey = "p";
			break;
		case "Topic":
			searchKey = "t";
			break;
		case "IntendedAudience":
			searchKey = "a";
			break;
		case "Keyword":
			searchKey = "k";
			break;
		case "TypeOfResource":
			searchKey = "r";
			break;
		case "Language":
			searchKey = "l";
			break;
	}
	
	if (selectElem.value == "")
	    delete currSearches[searchKey];
	else currSearches[searchKey] = selectElem.value;
	
	var url = ((CountKeys(currSearches) == 0) ? "presearch.php?action=reset" : FormSearchUrl())
	
	DisableControls(lastSearch, true);
	
	xrequest = CreateRequestObject();
	xrequest.onreadystatechange=PresearchResultsReceived;
	xrequest.open("GET",url,true);
	xrequest.send(null);
}

function PresearchResultsReceived()
{
	var msg = document.getElementById("status_message");
	if (xrequest.readyState==4)
	{
		if (xrequest.status==200)
		{
			//document.getElementById('messageBox').innerHTML = xrequest.responseText;
			var rqdata = eval("("+xrequest.responseText+")");
			
			if (rqdata['status'] == 0)
			{
			    alert(rqdata['msg']);
			    return;
			}
			
			var data = rqdata['cdata'];
			var count = rqdata['count'];
			var countMsg = "";
			if (count == 0)
				countMsg = "all records...";
			else if (count == 1)
				countMsg = "1 Resource available."
			else countMsg = count+" Resources available.";
			
			document.getElementById("record_message").innerHTML = countMsg;
			
			for (var key in data)
			{
				var elems = document.getElementsByName(key+"_id");
				if (elems.length > 0)
				{
					elems[0].innerHTML = "";
					elems[0].options[elems[0].options.length] = GetNullOption(key);
					
					var nkeys = CountKeys(data[key]);
					if (nkeys > 0)
					{
						document.getElementById("row_"+key).style.display = "";
						for (var id in data[key])
							elems[0].options[elems[0].options.length] = new Option(data[key][id], id, false);
					}
					else
					{
						document.getElementById("row_"+key).style.display = "none";
					}
				}
			}
			if (count==0) 
				OnNoRecordsFound();
			else
			{
				msg.innerHTML = "Updating...";
				clearTimeout(_messageTimeout);
				_messageTimeout = setTimeout('document.getElementById("status_message").style.display = "none";', 250);
			}
			DisableControls(lastSearch, false);
			SetSelected();
		}
		else { alert("Problem retrieving data") }
	}
}

