/*
 * This function creates an XMLHttpRequest object
 * and stores it in a global variable called request.
 * This method tries to create the object different ways
 * to support Mozilla-based and IE browsers
 */
function createXMLHttpRequest() {
	request = null;
	if (window.XMLHttpRequest) {        // Mozilla-Based Browsers
		request = new XMLHttpRequest();
	} else if (window.ActiveXObject) {  // newer IE browsers
		request = new ActiveXObject("Msxml2.XMLHTTP");
		if (request == null) {           // older IE Browsers
			request = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}

	//The request could still be null
	if (request == null) {
		alert("Your browser does not support AJAX");
	}
}

/*
 * This function will send the URL passed in as an AJAX call
 * using the HTTP GET method.
 */
function sendHttpGetRequest(theURL, callerID) {
	request.open('GET', theURL, true);
	request.onreadystatechange=function(){
		//alert("handle response, ready state = "+request.readyState);
		if (request.readyState == 4) {     // ReadyState of 4 means finished
			if (request.status == 200) {    // HTTP status of 200 means ALL OK
				ajaxResultText = request.responseText;
				displayResults(ajaxResultText, callerID);
			} else {
				alert("An error occurred: "+request.status + ":"+request.statusText);
			}
		}
	};
	request.send(null);
}

/*
 * This function will send the URL passed in as an AJAX call
 * using the HTTP POST method.
 * The postData variable should contain all the name=value
 * pairs to be sent to theURL.
 */
function sendHttpPostRequest(theURL, postData, callerID) {
	//alert("Sending POST to "+ theURL);
	request.onreadystatechange=function(){
		//alert("handle response, ready state = "+request.readyState);
		if (request.readyState == 4) {     // ReadyState of 4 means finished
			if (request.status == 200) {    // HTTP status of 200 means ALL OK
				ajaxResultText = request.responseText;
				displayResults(ajaxResultText,callerID);
			} else {
				alert("An error occurred: "+request.status + ":"+request.statusText);
			}
		}
	};
	request.open('POST', theURL, true);
	request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	request.send(postData);
}

/*
 * This function will send the URL passed in as an AJAX call
 * using the HTTP GET method.
 */
function sendHttpGetRequestOnTargetObject(theURL, callerID, targetOjbectID) {
	request.open('GET', theURL, true);
	request.onreadystatechange=function(){
		//alert("handle response, ready state = "+request.readyState);
		if (request.readyState == 4) {     // ReadyState of 4 means finished
			if (request.status == 200) {    // HTTP status of 200 means ALL OK
				ajaxResultText = request.responseText;
				displayResults(ajaxResultText, callerID, targetOjbectID);
			} else {
				alert("An error occurred: "+request.status + ":"+request.statusText);
			}
		}
	};
	request.send(null);
}

/*
 * This function will send the URL passed in as an AJAX call
 * using the HTTP POST method.
 * The postData variable should contain all the name=value
 * pairs to be sent to theURL.
 */
function sendHttpPostRequestOnTargetObject(theURL, postData, callerID, targetOjbectID) {
	//alert("Sending POST to "+ theURL);
	request.onreadystatechange=function(){
		//alert("handle response, ready state = "+request.readyState);
		if (request.readyState == 4) {     // ReadyState of 4 means finished
			if (request.status == 200) {    // HTTP status of 200 means ALL OK
				ajaxResultText = request.responseText;
				displayResults(ajaxResultText,callerID, targetOjbectID);
			} else {
				alert("An error occurred: "+request.status + ":"+request.statusText);
			}
		}
	};
	request.open('POST', theURL, true);
	request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	request.send(postData);
}

/*
* This function is to move items between two select boxes
*/
function moveItem(fromSelectBox, toSelectBox) {
	for(var selectedItem=0; selectedItem<fromSelectBox.length; selectedItem++) {
		if (fromSelectBox.options[selectedItem].selected == true) {
			var selectedText = fromSelectBox.options[selectedItem].text;
			var selectedValue = fromSelectBox.options[selectedItem].value;
			var toSelectBoxLength = toSelectBox.options.length;

			toSelectBox.options.length = toSelectBoxLength + 1;
			toSelectBox.options[toSelectBoxLength].text = selectedText;
			toSelectBox.options[toSelectBoxLength].value = selectedValue;

			fromSelectBox.options[selectedItem] = null;
			selectedItem--;
		}
	}
}

function moveAllItems(fromSelectBox, toSelectBox) {
	for(var selectedItem=0; selectedItem<fromSelectBox.length; selectedItem++) {
		var selectedText = fromSelectBox.options[selectedItem].text;
		var selectedValue = fromSelectBox.options[selectedItem].value;
		var toSelectBoxLength = toSelectBox.options.length;

		toSelectBox.options.length = toSelectBoxLength + 1;
		toSelectBox.options[toSelectBoxLength].text = selectedText;
		toSelectBox.options[toSelectBoxLength].value = selectedValue;

		fromSelectBox.options[selectedItem] = null;
		selectedItem--;
	}
}

function moveUpItem(selectBox) {
	for(var selectedItem=1; selectedItem<selectBox.length; selectedItem++) {
		if (selectBox.options[selectedItem].selected == true) {
			var selectedText = selectBox.options[selectedItem].text;
			var selectedValue = selectBox.options[selectedItem].value;

			selectBox.options[selectedItem].text = selectBox.options[selectedItem-1].text;
			selectBox.options[selectedItem].value = selectBox.options[selectedItem-1].value;
			selectBox.options[selectedItem-1].text = selectedText;
			selectBox.options[selectedItem-1].value = selectedValue;
			selectBox.options[selectedItem].selected = false;
			selectBox.options[selectedItem-1].selected = true;
		}
	}
}

function moveDownItem(selectBox) {
	for(var selectedItem=selectBox.length-2; selectedItem>-1; selectedItem--) {
		if (selectBox.options[selectedItem].selected == true) {
			var selectedText = selectBox.options[selectedItem].text;
			var selectedValue = selectBox.options[selectedItem].value;

			selectBox.options[selectedItem].text = selectBox.options[selectedItem+1].text;
			selectBox.options[selectedItem].value = selectBox.options[selectedItem+1].value;
			selectBox.options[selectedItem+1].text = selectedText;
			selectBox.options[selectedItem+1].value = selectedValue;
			selectBox.options[selectedItem].selected = false;
			selectBox.options[selectedItem+1].selected = true;
		}
	}
}

