	var pendingChanges = false;

	function handle(method,refID,refIDTwo,r3,r4,r5,r6){
		switch(method){
			case "pageQuit":
				saveChanges = false;
				if(pendingChanges){
					saveChanges = confirm("You haven't saved your changes. Would you like to save them now?");
					if(saveChanges){
						/* save the changes now */
						pendingChanges = false;
						saveChanges = false;
						alert("Changes Saved!");
					}
				}
				break;
			case "accountInfoPostBack":
				var submit = ""; // to hold the post buffer
				var submitIDs = new Array(); // to hold the id values of the submit items
				if(refIDTwo != null){ // we are trying to post back just one field. encode it and submit it
					submitIDs.push(refID);
				}else{ // we are trying to post back the entire form. encode and submit all fields in the form
					var elements = document.getElementById('accountinfoform').elements;
					for(i=0;i<elements.length;i++){
						if(elements[i].id != '')
							submitIDs.push(elements[i].id);
						if(elements[i].type == "checkbox"){
							if(elements[i].checked)
								elements[i].value = "1";
							else
								elements[i].value = "0";
						}
					}
				}
				submit = createPostBuffer(submitIDs); // create the text post buffer out of the ids for submittal
				url = "/ajax/generalAJAX.php?do=accountInfoPostBack&user="+refID;
				results = doAJAXRequest(url,submit,"application/x-www-form-urlencoded");
				if(results.indexOf('error') != -1)
					alert(results.substring(7));
				else
					alert("Your account information has been saved!");
				break;
			case "contactForm":
				var submit = ""; // to hold the post buffer
				var submitIDs = new Array(); // to hold the id values of the submit items
				// we are trying to post back the entire form. encode and submit all fields in the form
				var elements = document.getElementById('contactForm').elements;
				for(i=0;i<elements.length;i++){
					submitIDs.push(elements[i].id);
				}
				submit = createPostBuffer(submitIDs); // create the text post buffer out of the ids for submittal
				url = "/ajax/generalAJAX.php?do=contactForm";
				results = doAJAXRequest(url,submit,"application/x-www-form-urlencoded");
				if(results.indexOf('error') != -1)
					alert(results.substring(7));
				else
					window.document.location = "/aboutus/contactusreceived";
				break;
			case "accountRegistration":
				var submit = "";
				var submitIDs = new Array(); // to hold the id values of the submit items
				// we are trying to post back the entire form. encode and submit all fields in the form
				var elements = document.getElementById('registrationForm').elements;
					for(i=0;i<elements.length;i++){
						submitIDs.push(elements[i].id);
					}
				submit = createPostBuffer(submitIDs); // create the text post buffer out of the ids for submittal
				url = "/ajax/generalAJAX.php?do=accountRegistration";
				results = doAJAXRequest(url,submit,"application/x-www-form-urlencoded");
				if(results.indexOf('error') != -1)
					alert(results.substring(7));
				else
					checkLogin("/home/registrationcomplete");
				break;
			case "bondRetrieval":
				var submit = ""; // to hold the post buffer
				var submitIDs = new Array(); // to hold the id values of the submit items
				// we are trying to post back the entire form. encode and submit all fields in the form
				var elements = document.getElementById('bondRetrievalForm').elements;
				for(i=0;i<elements.length;i++){
					submitIDs.push(elements[i].id);
				}
				submit = createPostBuffer(submitIDs); // create the text post buffer out of the ids for submittal
				url = "/ajax/generalAJAX.php?do=bondRetrieval";
				results = doAJAXRequest(url,submit,"application/x-www-form-urlencoded");
				if(results.indexOf('error') != -1)
					alert(results.substring(7));
				else
					window.document.location = "/accountregistration/bondretrievalsent";
				break;
			case "surveySetup":
				var submitIDs = new Array('surveyname-NEW');
				if(refID == "NEW"){
					url = "/ajax/generalAJAX.php?do=surveySetup&surveyID="+refID;
					results = doAJAXRequest(url,createPostBuffer(submitIDs),"application/x-www-form-urlencoded");
					if(results.indexOf('error') != -1)
						alert(results.substring(7));
					else
						window.location.reload();
				}
				break;
			case "surveyPostBack":
				var submit = ""; // to hold the post buffer
				var submitIDs = new Array(); // to hold the id values of the submit items
				// we are trying to post back the entire form. encode and submit all fields in the form
				var elements = document.getElementById('survey').elements;
				for(i=0;i<elements.length;i++){
					submitIDs.push(elements[i].id);
				}
				submit = createPostBuffer(submitIDs); // create the text post buffer out of the ids for submittal
				url = "/ajax/generalAJAX.php?do=surveyPostBack&surveyID="+refID+"&oneShotUserString="+refIDTwo;
				results = doAJAXRequest(url,submit,"application/x-www-form-urlencoded");
				if(results.indexOf('error') != -1)
					alert(results.substring(7));
				else{ //re-direct the user to the survey thank-you page
					if(refIDTwo == "")
						window.document.location = "/myaccount/surveys/"+refID+"&complete=true";
					else
						window.document.location = "/myaccount/surveys/"+refIDTwo+"&complete=true";
				}
				break;
			case "addCalendarEvent":
				//this function will add a calendar event, then refresh the page to show the new event
				var submit = "";
				var submitIDs = new Array(); // to hold the id values of the submit items
				// we are trying to post back the entire form. encode and submit all fields in the form
				var elements = document.getElementById(refID).elements;
					for(i=0;i<elements.length;i++){
						submitIDs.push(elements[i].id);
					}
				submit = createPostBuffer(submitIDs); // create the text post buffer out of the ids for submittal
				url = "/ajax/generalAJAX.php?do=addCalendarEvent";
				results = doAJAXRequest(url,submit,"application/x-www-form-urlencoded");
				if(results.indexOf('error') != -1)
					alert(results.substring(7));
				//else
					//window.location.reload();
				break;
			case "expandMember":
				var parent = document.getElementById('familyRow-'+refID);
				parent.insertBefore(document.createTextNode("adsf"));
				break;
			case "adaptiveSearch:lastname":
				nameBox = document.getElementById("lastname");
				nameBox.autoComplete = "off";
				if(nameBox.value == "" || nameBox.value.length < 2)
					return;
				url = "/ajax/getGateKeeperTypeAhead.php?name=" + nameBox.value;
				results = doAJAXRequest(url,null,"text/xml");
				var data = "<ul>\n";
				var xmlDoc = results.documentElement;
				var members = xmlDoc.getElementsByTagName("member");
				for(i=0;i<members.length;i++){
					data += "<li onClick=\"javascript:handle('adaptiveSearch:clicked','"+ members[i].getAttribute("bond") +"','"+ members[i].getAttribute("name") +"');\">";
					data += "<a href=\"javascript:handle('adaptiveSearch:clicked','"+ members[i].getAttribute("bond") +"','"+ members[i].getAttribute("name") +"');\" class=\"option\">" + members[i].getAttribute("name") + "</a>";
					data += "<div class=\"bondNo\">" + members[i].getAttribute("bond") + "</div></li>\n";
				}
				container = document.getElementById("resultsContainer");
				container.style.visibility = "visible";
				data += "<li class=\"closeMe\"><a href=\"javascript:handle('adaptiveSearch:hideResults');\">Close</a></li>\n";
				container.innerHTML = data + "</ul>\n";
				break;
			case "adaptiveSearch:guestname":
				nameBox = document.getElementById("guestname");
				nameBox.autoComplete = "off";
				if(nameBox.value == "" || nameBox.value.length < 2)
					return;
				url = "/ajax/getGateKeeperTypeAhead.php?guest=" + nameBox.value;
				results = doAJAXRequest(url,null,"text/xml");
				var data = "<ul>\n";
				var xmlDoc = results.documentElement;
				var members = xmlDoc.getElementsByTagName("guest");
				if(members.length == 0 || (members.length == 1 && (members[0].getAttribute("name") == nameBox.value))){
					handle('adaptiveSearch:hideResults');
					return;
				}
				for(i=0;i<members.length;i++){
					data += "<li onclick=\"javascript:handle('adaptiveSearch:setGuestName','"+ members[i].getAttribute("name") +"');\">";
					data += "<a href=\"javascript:handle('adaptiveSearch:setGuestName','"+ members[i].getAttribute("name") +"');\" class=\"option\">" + members[i].getAttribute("name") + "</a>";
					if(members[i].getAttribute("visits") >= 6)
						data += "<div class=\"bondNo\" style=\"color: red;font-weight: bold;\">(" + members[i].getAttribute("visits") + " vists)</div></li>\n";
					else
						data += "<div class=\"bondNo\">(" + members[i].getAttribute("visits") + " vists)</div></li>\n";
					data += "</li>\n";
				}
				if(members.length > 0){
					container = document.getElementById("resultsContainer");
					container.style.visibility = "visible";
					data += "<li class=\"closeMe\"><a href=\"javascript:handle('adaptiveSearch:hideResults');\">Close</a></li>\n";
					container.innerHTML = data + "</ul>\n";
				}
				break;
			case "adaptiveSearch:hideResults":
				container = document.getElementById("resultsContainer");
				container.innerHTML = "";
				container.style.visibility = "hidden";
				break;
			case "adaptiveSearch:clicked":
				document.getElementById('bondno').value = refID;
				//document.getElementById('lastname').value = refIDTwo;
				//handle('adaptiveSearch:hideResults');
				handle('gateKeeper','2');
				//handle('adaptiveSearch:hideResults');
				break;
			case "adaptiveSearch:setGuestName":
				document.getElementById('guestname').value = refID;
				handle('adaptiveSearch:hideResults');
				break;
			case "bodyMouseDown":
				/* enter the name of the results container here */
				var rCName = "resultsContainer";
				var rC = document.getElementById("resultsContainer");
				if(!rC)
					break;
				var hideMe = true;
				var e = refID || window.event;
				var tgt = e.target || e.srcElement;
				if(rC.style.visibility != "hidden"){
					var hasNodes = true;
					var parent = tgt;
					while(hasNodes){
						if(!parent.getAttribute)
							break;
						if(parent.getAttribute("id") == rCName)
							hideMe = false;
						parent = parent.parentNode;
						if(parent.nodeType != 1)
								hasNodes = false;
					}
					if(hideMe)
						rC.style.visibility = "hidden";
				}
				break;
			case "gateKeeper":
				if(refID == 1){
					url = "/ajax/getGateKeeperStep.php?step=1";
					results = doAJAXRequest(url,null,"text");
					document.getElementById('textArea').innerHTML = results;
					//if(refIDTwo == "success")
						//setError("success","The "+r3+" family is checked in.");
				}else if(refID == 2 || refID == 10){
					url = "/ajax/getGateKeeperStep.php?step=" + refID + "&bond=" + document.getElementById('bondno').value;
					results = doAJAXRequest(url,null,"text");
					document.getElementById('textArea').innerHTML = results;
				}else if(refID == 3){
					url = "/ajax/getGateKeeperStep.php?step=" + refID + "&bond=" + refIDTwo
					results = doAJAXRequest(url,null,"text");
					document.getElementById('textArea').innerHTML = results;
				}else if(refID == 4){
					/* figure out which of the check boxes is checked, so that we know which family members are here */
					var members = "";
					boxes = document.getElementsByTagName("input");
					for(i=0;i<boxes.length;i++){
						if(boxes[i].getAttribute("id").indexOf('familymember') != -1 && boxes[i].checked == true && boxes[i].getAttribute("disabled") != 'true')
							members += boxes[i].getAttribute("id").substring(13) + ":";
					}
					//if(members == ""){
						//alert("You must select at least one family member.\n\nMaybe all of the family members are already checked in today.");
						//return;
					//}
					url = "/ajax/getGateKeeperStep.php?step=" + refID + "&bond=" + refIDTwo + "&familyMembersIDs=" + members;
					results = doAJAXRequest(url,null,"text");
					document.getElementById('textArea').innerHTML = results;
				}else if(refID == 5){
					var members = r3;
					boxes = document.getElementsByTagName("input");
					for(i=0;i<boxes.length;i++){
						if(boxes[i].getAttribute("id").indexOf('caregiver') != -1 && boxes[i].checked == true)
							members += boxes[i].getAttribute("id").substring(10) + ":";
					}
					url = "/ajax/getGateKeeperStep.php?step=" + refID + "&bond=" + refIDTwo + "&familyMembersIDs=" +members;
					results = doAJAXRequest(url,null,"text");
					document.getElementById('textArea').innerHTML = results;
				}else if(refID == 6){
					url = "/ajax/getGateKeeperStep.php?step=" + refID + "&bond=" + refIDTwo + "&familyMembersIDs=" + r3;
					results = doAJAXRequest(url,null,"text");
					document.getElementById('textArea').innerHTML = results;
				}else if(refID == 7){ // post guest name to be added to or selected from the database, add gID to the members string, prompt for more guests.
					var guestName = document.getElementById('guestname').value;	
					if (guestName == "") {
						alert("Guest name can't be blank! Duh!");
						return;
					}				
					/* perform the ajax request to get an id number out of this guest */
					url = "/ajax/getGateKeeperGuestInfo.php?bond=" + refIDTwo + "&guestname=" + guestName;
					results = doAJAXRequest(url,null,"text/xml");
					var xmlDoc = results.documentElement;
					var payment = document.getElementById('payment');
					var method = payment[payment.selectedIndex].value;
					var members = xmlDoc.getElementsByTagName("guest");
					guestID = members[0].getAttribute("id");
					/* end guest id verification */
					r3 = r3 + "g"+guestID + "-" + method + ":";
					url = "/ajax/getGateKeeperStep.php?step=" + refID + "&bond=" + refIDTwo + "&familyMembersIDs=" + r3;
					results = doAJAXRequest(url,null,"text");
					document.getElementById('textArea').innerHTML = results;
				}else if(refID == 8){
					url = "/ajax/getGateKeeperStep.php?step=" + refID + "&bond=" + refIDTwo + "&familyMembersIDs=" + r3;
					results = doAJAXRequest(url,null,"text");
					document.getElementById('textArea').innerHTML = results;
				}else if(refID == 9){
					//print the statistics for today
					url = "/ajax/getGateKeeperStep.php?step=" + refID;
					results = doAJAXRequest(url,null,"text");
					document.getElementById('textArea').innerHTML = results;
				}
				break;
			case "hiddenDiv:close":
				document.getElementById('light').style.display = "none";
				document.getElementById('fade').style.display = "none";
			case "hiddenDiv:album:options":
				document.getElementById('fade').style.display = "block";
				document.getElementById('light').style.display = "block";
				document.getElementById('light').innerHTML = "<br><br><br><center>Please wait...</center>";
				url = "ajax/generalAJAX.php?do=getAlbumOptionsPage&type=options&albumID="+refID;
				ajaxResponse = doAJAXRequest(url,null,"text");
				document.getElementById('light').innerHTML = ajaxResponse;
		}
	}
