/*--------------------------------------------------------------------------*/
// functions for submitting asynchronous requests
/*--------------------------------------------------------------------------*/
// create the appropriate request object
function createRequestObject() {
	// required to use the functions in this file
	var ro;
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer"){
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
		ro = new XMLHttpRequest();
	}
	return ro;
}

/*--------------------------------------------------------------------------*/
// submit requests and return results to a page element on the calling page
/*--------------------------------------------------------------------------*/
function sendRequest(where,parms,target) {
	// send a request to 'where' and put the results in 'target' (ususally a div) on the calling page
	pagetarget	= target;	// the id of the page element where the results are to be placed

	request	= where+parms;
	http.open('get', request);

	// MS needs special help as usual
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer"){
		http.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
	}

	// submit and handle the result
	http.onreadystatechange = requestResponse;
	http.send(null);
}


/*--------------------------------------------------------------------------*/
function requestResponse() {
	// called by sendRequest(where,parms,target)
	// readyState 4 indicates the operation has been completed and results are ready
	if(http.readyState == 4){
		var response = http.responseText;
		if (response.length > 1) {
			//alert('Got response\n\n'+response);
			document.getElementById(pagetarget).innerHTML = response;
		}
	}
}


/*--------------------------------------------------------------------------*/
// submit a data requests and return results to the calling script
/*--------------------------------------------------------------------------*/
var requestresult;
function sendDataRequest(where,parms) {
	request	= where+parms;
	http.open('get', request);

	//alert(request);
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer"){
		http.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
	}
	// submit and handle the result
	http.onreadystatechange = requestDataResponse;
	http.send(null);
}

/*--------------------------------------------------------------------------*/
function requestDataResponse() {
	// called by sendDataRequest(where,parms)
	if(http.readyState == 4){
		var response = http.responseText;
		if (response.length > 1) {
			requestresult = response; // results are put in the 'requestresult' var
		}
	}
}

/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
// development functions

/*--------------------------------------------------------------------------*/
function sendRequestTEST(where,parms,target) {

	pagetarget	= target;

	request	= where+parms;
	http.open('get', request);

	alert(request);
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer"){
		http.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
	}

	http.onreadystatechange = requestResponseTEST;
	http.send(null);
}


/*--------------------------------------------------------------------------*/
function requestResponseTEST() {
//alert(http.readyState);

	if(http.readyState == 4){
		var response = http.responseText;
		if (response.length > 1) {
			alert('Got response\n\n'+response);
			document.getElementById(pagetarget).innerHTML = response;
		}
	}
}

/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*
 * Copyright 2005 Matthew Eernisse (mde@fleegix.org)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * Original code by Matthew Eernisse (mde@fleegix.org)
 * Additional bugfixes by Mark Pruett (mark.pruett@comcast.net)
 *
*/
// The var docForm should be a reference to a <form>
/*--------------------------------------------------------------------------*/
function formData2QueryString(docForm) {
	var submitContent = '';
	var formElem;
	var lastElemName = '';

	for (i = 0; i < docForm.elements.length; i++) {
		formElem = docForm.elements[i];
		switch (formElem.type) {
			// Text fields, hidden form elements
			case 'text':
			case 'hidden':
			case 'password':
			case 'textarea':
			case 'select-one':
			submitContent += formElem.name + '=' + escape(formElem.value) + '&'
			break;

			// Radio buttons
			case 'radio':
			if (formElem.checked) {
			submitContent += formElem.name + '=' + escape(formElem.value) + '&'
			}
			break;

			// Checkboxes
			case 'checkbox':
			if (formElem.checked) {
				// Continuing multiple, same-name checkboxes
				if (formElem.name == lastElemName) {
					// Strip of end ampersand if there is one
					if (submitContent.lastIndexOf('&') == submitContent.length-1) {
						submitContent = submitContent.substr(0, submitContent.length - 1);
					}
					// Append value as comma-delimited string
					submitContent += ',' + escape(formElem.value);
				} else {
					submitContent += formElem.name + '=' + escape(formElem.value);
				}
				submitContent += '&';
				lastElemName = formElem.name;
			}
			break;

		}
	}

	// Remove trailing separator
	submitContent = submitContent.substr(0, submitContent.length - 1);
	return submitContent;
}


/*--------------------------------------------------------------------------*/
// submit functions that call functions on return

var targetfunction;
/*--------------------------------------------------------------------------*/
function submitRequestTEST(where,parms,target) {

	// specify the target function to call when the server responds
	targetfunction	= target;

	request	= where+parms;
	http.open('get', request);

	//alert(request);
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer"){
		http.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
	}

	http.onreadystatechange = processResponseTEST;
	http.send(null);
}

/*--------------------------------------------------------------------------*/
function processResponseTEST() {
//alert(http.readyState);

	if(http.readyState == 4){
		var response = http.responseText;
		//alert('Got response\n\n'+response);
		eval(targetfunction + '(http.responseText);');
		//eval(alert + '(xmlHttpReq.responseText);');

	}
}



