/////////////////////////////////////////////////////////////////////////////////////////////////////
// "List sheep" section with xmlHTTP stuff for callbacks and such
/////////////////////////////////////////////////////////////////////////////////////////////////////
var xmlHttp;
var WILDCARD = "%";

function setFocus(x) {
	document.getElementById(x).focus();
}

function searchSheep()
{
	var search_name;
	var search_type;
	var isavailable;
	var malesonly;
	var search_breed;
	var search_breedcategory;
	
	document.getElementById("results").innerHTML = '... Retrieving Data ...';
	
	search_name = document.getElementById("search_sheep").value;
	search_breed = document.getElementById("breed").value;
	search_breedcategory = document.getElementById("breedcategory").value;
	
	if(document.getElementById("isavailable").checked)
		isavailable = 'chkavail';
	
	if(document.getElementById("malesonly").checked)
		malesonly = 'malesonly';
		
	if(search_breed == "All")
		search_breed = WILDCARD;
	
	if(search_breedcategory == "All")
		search_breedcategory = WILDCARD;
	
	// translate an asterisk (*) to the appropriate wildcard
	if(search_name == "*")
		search_name = WILDCARD;

	if (search_name.length==0)
	{
		document.getElementById("results").innerHTML="";
		return;
	}
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null)
	{
		alert ("Browser does not support HTTP Request");
		return;
	} 

	var url = "code/db_sheep_catalog.php";
	url += "?search_name="+search_name;
	url += "&search_type=contains";
	url += "&isavailable="+isavailable;
	url += "&malesonly=" + malesonly;
	url += "&search_breed=" + search_breed;
	url += "&search_breedcategory=" + search_breedcategory;
	url += "&sid="+Math.random();
	
	xmlHttp.onreadystatechange=stateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
} 

function chkBlankNode(x) {
	return x?x.nodeValue:'';
}

function stateChanged() { 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{
		var txt1 = 'Error retrieving your data from the database. Error:' + xmlHttp.statusText;
		
		if ( xmlHttp.status==200 ){
			// response is ok - process it and stuff the div
			txt1='';
			var xml = xmlHttp.responseXML;
			
			var numsheep = xml.getElementsByTagName("numsheep")[0].firstChild.nodeValue;
			var sheepxml = xml.getElementsByTagName("sheep");
			txt1 = '<p>Number of Sheep:' + numsheep + '<br>';
			for( var i=0; i<sheepxml.length; i++){
				var sID = chkBlankNode(sheepxml[i].getElementsByTagName("idsheep")[0].firstChild);
				var srName = chkBlankNode(sheepxml[i].getElementsByTagName("regname")[0].firstChild);
				var ssName = chkBlankNode(sheepxml[i].getElementsByTagName("showname")[0].firstChild);
				var sImage = chkBlankNode(sheepxml[i].getElementsByTagName("sheepimage")[0].firstChild);
				var sRowClass = chkBlankNode(sheepxml[i].getElementsByTagName("rowclass")[0].firstChild);
				var sRegNum = chkBlankNode(sheepxml[i].getElementsByTagName("regnum")[0].firstChild);
				var sBreed = chkBlankNode(sheepxml[i].getElementsByTagName("breed")[0].firstChild);
				var sBreedCategory = chkBlankNode(sheepxml[i].getElementsByTagName("breedcategory")[0].firstChild);
				var sGenetics = chkBlankNode(sheepxml[i].getElementsByTagName("genetics")[0].firstChild);
				var sContact = chkBlankNode(sheepxml[i].getElementsByTagName("contactinfo")[0].firstChild);
				var sSire = chkBlankNode(sheepxml[i].getElementsByTagName("sire")[0].firstChild);
				var sDam = chkBlankNode(sheepxml[i].getElementsByTagName("dam")[0].firstChild);
				var sShowResults = chkBlankNode(sheepxml[i].getElementsByTagName("showresults")[0].firstChild);
				var sNotes = chkBlankNode(sheepxml[i].getElementsByTagName("notes")[0].firstChild);
				var sPricePerUnit = chkBlankNode(sheepxml[i].getElementsByTagName("priceperunit")[0].firstChild);

				txt1 += '<form id="sheep' + sID + '">';
				txt1 += '<table class="sheeptable">';
				txt1 += '<tr class="sheeprow" align="top" ><td class="sheepcellpicture"><a target="_blank" href="sheepbio.php?idsheep=' + sID + '">';
				txt1 += "<img class='sheeppicture' height=110 width=110 border=0 src='" + sImage + "'/>";
				txt1 += '</a></td>';
				txt1 += '<td class="sheepcelltext" align="top">' 
							+ srName + (ssName.length?" / "+ssName:'') + "<br>"
							+ sRegNum + "<br>"
							+ sBreed + (sBreedCategory!=''?" / " + sBreedCategory:'') + "<br>"
							+ sGenetics + "<br>"
							+ sContact + "<br>"
							+ "Sire:&nbsp;" + sSire + "&nbsp;/&nbsp;Dam:&nbsp;" + sDam
							+ "</td></tr>";
				txt1 += '</table>';
				txt1 += '</form>';
			}
		}
		document.getElementById("results").innerHTML = txt1;
 	}
}

// XMLHttpRequest wrapper
function GetXmlHttpObject(){
	var xmlHttp=null;
	try	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)	{
	 	// Internet Explorer
	 	try	{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
	 	catch (e)	{
			try	{
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e)	{
				alert("Failed to get xmlHttp object:\n" + e);
			}
		}
	}
	return xmlHttp;
}
