﻿var oAjaxSearch= null;

function search()
{
	//alert("search()");
	if (oAjaxSearch) oAjaxSearch.abort();
	
  oAjaxSearch= CreateAjaxRequest();
	oAjaxSearch.onreadystatechange= readSearchResult;
	document.getElementById("resultsWindow").style.display= "";
	document.getElementById("resultsTitle").innerHTML= "Searching";
	document.getElementById("results").innerHTML= "";
	
	var i;
	var counter= 0;
	var constraits= new Array();
	var orderBy= new Array();
	var orderByNum= document.getElementById("orderBy").selectedIndex;
	var groupAuthor= document.getElementById("groupAuthor").checked;
	
	// check class level constraints
	for (i=0; i<3; i++)
	{
		var classId= document.getElementById("classNum"+i).selectedIndex;
		if (classId > 0)
		{
			var minLevel= parseFloat(document.getElementById("classMin"+i).value);
			var maxLevel= parseFloat(document.getElementById("classMax"+i).value);
			constraits.push("c"+counter+"type=class");
			constraits.push("c"+counter+"class="+classId);
			if (minLevel != NaN) constraits.push("c"+counter+"min="+minLevel);
			if (maxLevel != NaN) constraits.push("c"+counter+"max="+maxLevel);
			counter++;
		}
	}
	
	// check class number constraints
	{
		var minNum= parseFloat(document.getElementById("classNumMin").value);
		var maxNum= parseFloat(document.getElementById("classNumMax").value);
		constraits.push("c"+counter+"type=numclasses");
		if (minNum > 1) constraits.push("c"+counter+"min="+minNum);
		if (maxNum < 3) constraits.push("c"+counter+"max="+maxNum);
		counter++;
	}
	
	oAjaxSearch.bbcode= document.getElementById("bbcode").checked;
	oAjaxSearch.groupAuthor= groupAuthor;
	
	counter= 0;
	if (groupAuthor) orderBy.push("&orderBy"+(counter++)+"=author");
	
	if (orderByNum == 0) orderBy.push("&orderBy"+counter+"=author");
	else if (orderByNum == 1) orderBy.push("&orderBy"+counter+"=name");
	else if (orderByNum == 2) orderBy.push("&orderBy"+counter+"=date");
	else if (orderByNum > 3) orderBy.push("&orderBy"+counter+"=class"+(orderByNum-3));
	
	oAjaxSearch.open("GET", "db.php?"+constraits.join("&")+orderBy.join(""), true);
	oAjaxSearch.send(null);
}

function readSearchResult()
{
	if(oAjaxSearch.readyState == 4)
	{
		var result= "";
		var data= "";
		var bbcode= oAjaxSearch.bbcode;
		var groupAuthor= oAjaxSearch.groupAuthor;
		var lastAuthor= null;
		
		try
		{
			data= eval(oAjaxSearch.responseText);
		}
		catch(e) {}
		
		if (typeof data == "object")
		{
			if (data.length == 0)
			{
				document.getElementById("resultsTitle").innerHTML= "Found no matches";
				return;
			}
			else
			{
				if (bbcode || groupAuthor) result += "<div class=\"field\">";
				for (var c in data)
				{
					if (bbcode)
					{
						if (groupAuthor)
						{
							if (lastAuthor != data[c]["author"])
							{
								if (lastAuthor != null) result += "<br />";
								result += " - " + data[c]["author"]+"<br />";
							}
							result += "[url="+data[c]["uri"]+"]"+data[c]["longname"]+"[/url]<br />";
						}
						else
						{
							result += "[url="+data[c]["uri"]+"]"+data[c]["longname"]+"[/url]<br />";
							result += "-- "+data[c]["author"]+"<br />";
						}
					}
					else
					{
						if (groupAuthor)
						{
							if (lastAuthor != data[c]["author"])
							{
								if (lastAuthor != null)
								{
									result += "</div>";
									result += "<div class=\"field\">";
								}
								result += " - " + data[c]["author"]+"<br />";
							}
							result += "<a href=\""+data[c]["uri"]+"\">"+data[c]["longname"]+"</a><br />";
						}
						else
						{
							result += "<div class=\"field\">";
							result += "<a href=\""+data[c]["uri"]+"\">"+data[c]["longname"]+"</a><br />";
							result += "-- "+data[c]["author"]+"<br />";
							result += "</div>";
						}
					}
					lastAuthor= data[c]["author"];
				}
				if (bbcode || groupAuthor) result += "</div>";
				
				document.getElementById("resultsTitle").innerHTML= "Found "+data.length+" matches";
			}
		}
		else
		{
			result= "<div class=\"field\">"+oAjaxSearch.responseText+"</div>";
			document.getElementById("resultsTitle").innerHTML= "Error";
		}
		document.getElementById("results").innerHTML= result;
		oAjaxSearch= null;
	}
}

