var re = /\w/;

var xmlhttp;
function processRequest(url) {
	if (window.XMLHttpRequest) {
		xmlhttp = new XMLHttpRequest();
		xmlhttp.onreadystatechange = xmlhttpChange;
		xmlhttp.open("GET", url, true);
		xmlhttp.send(null);
	}
	else if (window.ActiveXObject) {
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		if (xmlhttp) {
			xmlhttp.onreadystatechange = xmlhttpChange;
			xmlhttp.open("GET", url, true);
			xmlhttp.send();
		}
	}
}

var workingTimeout;
function xmlhttpChange() {
	// if xmlhttp shows "loaded"
	try {
		if (xmlhttp.readyState == 4) {
			// if "OK"
			if (xmlhttp.status == 200) {
				// handle response data
				if (xmlhttp.responseText.toString().indexOf("recordCount") != -1) {
					if (document.getElementById("results")) {
						var dataArray = xmlhttp.responseText.split("&recordCount=");
						var innerHTML = dataArray[0];
						var total = dataArray[1];
						document.getElementById("results").innerHTML = innerHTML;
						document.getElementById("recordCount").value = total;
						//document.getElementById("working").style.display = "none";
					}
				} else {
					var responseString = "parsed=1" + xmlhttp.responseText.toString()
					// responseString format: "parsed=1&var=something&var=something&var=something"
					if (re.test(responseString)) {
						// array format: "parsed=1,var=something,var=something,var=something
						var nameValueArray = responseString.split('&')		// split the name/value pairs and store in Array
						var success = nameValueArray[1].split('=')[1];
						var action = nameValueArray[2].split('=')[1];
						var returnid = nameValueArray[3].split('=')[1];
						var dataStr = nameValueArray[4].split('=')[1];
						
						switch (action) {
							case "get_dept":
								if (success == 1) {
									var deptdata = dataStr.split('|');
									var acronym = '';
									if (re.test(deptdata[5])) acronym = " (" + decodeURI(deptdata[5]) + ')';
									document.getElementById("deptname").innerHTML = decodeURI(deptdata[0]).replace(/\%26/g, "&amp;") + acronym;
									document.getElementById("deptname").innerHTML = decodeURI(deptdata[0]).replace(/\%2F/g, '/');
									document.getElementById("deptlocation").innerHTML = decodeURI(deptdata[1]).replace(/\%2C/g, ',');
									document.getElementById("deptcontact").innerHTML = decodeURI(deptdata[2]).replace(/\%2C/g, ',');
									document.getElementById("deptphone").innerHTML = decodeURI(deptdata[3]);
									document.getElementById("deptemail").innerHTML = decodeURI(deptdata[4]).replace(/\%40/, '@');
									document.getElementById("deptid").value = returnid;
								}
								break;
							case "get_item":
								if (success == 1) {
									var itemdata = dataStr.split('|');
									document.getElementById("itemname").innerHTML = decodeURI(itemdata[0]).replace(/\%26/g, "&amp;");
									document.getElementById("itemname").innerHTML = decodeURI(itemdata[0]).replace(/\%2F/g, '/');
									document.getElementById("itemlocation").innerHTML = decodeURI(itemdata[1]).replace(/\%2C/g, ',');
									document.getElementById("itemid").value = returnid;
								}
								break;
							case "get_room":
								if(success == 1) {
									var roomdata = dataStr.split('|');
									document.getElementById("roomname").innerHTML = decodeURI(roomdata[0]).replace(/\%2C/g, ',');
									document.getElementById("roomNumber").innerHTML = decodeURI(roomdata[1]);
									document.getElementById("floorNumber").innerHTML = decodeURI(roomdata[2]);
									document.getElementById("floorLocation").innerHTML = decodeURI(roomdata[3]);
									document.getElementById("roomid").value = returnid;
								}
									break;
							default:
								break;
						}
					}
				} // if indexOf recordCount else
			}
			else {
				//alert("An XML data error has occurred.");
			}
			//clearTimeout(workingTimeout);
			document.getElementById("div_working").style.display = "none";
		}
		else {
			/* while readyState != 4 ===> this else clause occurs repeatedly until readyState = 4 (complete).
				So, while data is loading, display the "working" message
			*/
			document.getElementById("div_working").style.display = "block";
		}
	}
	catch(e) {
		void(0);	
	}
}


function getResults() {
	var rc = document.getElementById("results_container");
	var SearchValue = document.getElementById("SearchValue");
	if (SearchValue.value.length >= 2) {
		processRequest("./process_search.cfm?action=process&kw=" + SearchValue.value);
		if (rc.offsetHeight <= 0) res.toggle();	
	}
}

function oneFound() {
	//alert("one found!");
	if (document.getElementById("onlyid")) var onlyid = document.getElementById("onlyid").value; else var onlyid = '';
	if (document.getElementById("onlydept")) var onlydept = document.getElementById("onlydept").value; else var onlydept = '';
	if (document.getElementById("onlyitem")) var onlyitem = document.getElementById("onlyitem").value; else var onlyitem = '';
	
	var re = /\w/;
	var theLocation = "index.cfm?buildingid=" + onlyid;
	if (re.test(onlydept)) theLocation += "&DepartmentID=" + onlydept;
	if (re.test(onlyitem)) theLocation += "&ItemID=" + onlyitem;
	top.location = theLocation;
}

function showDept(deptid) {
	var prevdeptid = document.getElementById("deptid");
	var deptview = document.getElementById("deptview");
	if (deptview.offsetHeight <= 0) deptdisp.toggle();
	if (prevdeptid.value == deptid) deptdisp.toggle(); else getdept(deptid);
}
function showItem(itemid) {
	var previtemid = document.getElementById("itemid");
	var itemview = document.getElementById("itemview");
	if (itemview.offsetHeight <= 0) itemdisp.toggle();
	if (previtemid.value == itemid) itemdisp.toggle(); else getitem(itemid);
}

function showRoom(roomid) {
		var prevroomid = document.getElementById("roomid");
		var roomview = document.getElementById("roomview");
		if(roomview.offsetHeight <= 0) roomdisp.toggle();
		if(prevroomid.value == roomid) roomdisp.toggle(); else getroom(roomid);
}

function getdept(deptid) {
	processRequest("process.cfm?action=get_dept&deptid=" + deptid);
}

function getitem(itemid) {
	processRequest("process.cfm?action=get_item&itemid=" + itemid);
}

function getroom(roomid) {
	processRequest("process.cfm?action=get_room&roomid=" + roomid);
}
