

/*
	durgle.ajax.1.9.0.js
	version 1.9.0
	first created: 10/27/03
	last revised: 9/16/07
	http://www.durgle.com
	talk@durgle.com
*/


// -------- BEGIN AJAX -----------


// Debug?
debug = 0;


// Encode GET
// @@frm = Form Name
function GetParams(frm) {
	aForm = document.forms[frm];
	formLength = aForm.elements.length;
	Params = "";
	if (formLength > 0) {
		for (i = 0; i < formLength; i++) {
			formElementType = aForm.elements[i].type;
			formElementValue = aForm.elements[i].value;
			formElementName = aForm.elements[i].name;
			formElementID = aForm.elements[i].id;
			if (formElementType == "text" || formElementType == "password" || formElementType == "textarea" || formElementType == "select-one" || formElementType == "hidden") {
				if (i == 0) {
					Sym = "?";
				} else {
					Sym = "&";
				}
				Params += Sym + formElementName + "=" + formElementValue;
			}
		}
		return Params;
	} else {
		return "";
	}
}


// Get a browser independent XMLHTTP Object
function GetXMLHTTP() {
	var XMLHTTP = false;
	if (window.XMLHttpRequest) {
		XMLHTTP = new XMLHttpRequest()
  	} else if (window.ActiveXObject) {
		try {
			XMLHTTP = new ActiveXObject("Msxml2.XMLHTTP")
		} catch (e) { 
			try {
        			XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP")
      		} catch (E) {
        			XMLHTTP = false;
      		}
    		}
  	}
	return XMLHTTP;
};


// Pass a server side response as a javascript function
// @@ URL = PHP/Perl page to execute
// @@ frm = Form Name
function AJAXToFunction(URL, frm) {
	var XMLHTTP = new GetXMLHTTP();
	// Compatibility with IE 5.0
	// Send the Request
	Params = GetParams(frm);
	if (XMLHTTP) {
		XMLHTTP.onreadystatechange = function stateChange() {
			if (XMLHTTP && XMLHTTP.readyState == 4) {
				// Got something back..
				if (XMLHTTP.status == 200) {
					// Check to see if the response was good
					var response = XMLHTTP.responseText;
					if(debug) {
						alert(response);
					}
					eval(response);
				} else if(debug){
					document.write(XMLHTTP.responseText);
				}
			}
		}
		// open the page
		XMLHTTP.open("GET", URL+Params, true);
		// send the data
		XMLHTTP.send(null);
	}
}


// Pass a server side response as a javascript function, then
// change the innderHTML of a div or Object
// @@ URL = PHP/Perl page to execute
// @@ obj_id = object to have innerHTML changed
// @@ frm = Form Name
// @@ execAfterEval = Javascript to execute upon completion
function InnerFromAJAX(URL, obj_id, frm, execAfterEval) {
	var XMLHTTP = new GetXMLHTTP();
	Params = GetParams(frm);
	// Send the Request
	if (XMLHTTP) {
		XMLHTTP.onreadystatechange = function stateChange() {
			if (XMLHTTP && XMLHTTP.readyState == 4) {
				// Got something back..
				if (XMLHTTP.status == 200) {
					// Check to see if the response was good
					var response = XMLHTTP.responseText;
					if(debug) {
						alert(response);
					}
					document.getElementById(obj_id).innerHTML = response;
					if(debug) {
						alert(execAfterEval);
					}
					eval(execAfterEval);
				} else if(debug){
					document.write(XMLHTTP.responseText);
				}
			}
		}
	// open the page
	XMLHTTP.open("GET", URL+Params, true);
	// send the data
	XMLHTTP.send(null);
	}
}

// Instant AJAX (ie: Live Searching etc)
// @@ instantFile = PHP/Perl page to execute
// @@ instantDiv = object to have innerHTML updated live/instantly
// @@ instantIndicator = Div with animated gif or text indicator to display that the script is still loading/working
// @@ instantForm = Form Name
// @@ execAfterEval = Javascript to execute upon completion
function InstantAJAX(instantFile, instantDIV, instantIndicator, instantForm, execAfterEval) {
	document.getElementById(instantIndicator).style.display = "block";
	document.getElementById(instantDIV).style.display = "block";
	var XMLHTTP = new GetXMLHTTP();
	// Compatibility with IE 5.0
	Params = GetParams(instantForm);
	// Send the Request
	if (XMLHTTP) {
		XMLHTTP.onreadystatechange = function stateChange() {
			if (XMLHTTP && XMLHTTP.readyState == 4) {
				// Got something back..
				if (XMLHTTP.status == 200) {
					// Check to see if the response was good
					var response = XMLHTTP.responseText;
					if(debug) {
						alert(response);
					}
					document.getElementById(instantDIV).innerHTML = response;
					if(debug) {
						alert(execAfterEval);
					}
					eval(execAfterEval);
					document.getElementById(instantIndicator).style.display = "none";
					//document.getElementById(instantDIV).style.display = "none";
				} else if(debug){
					document.write(XMLHTTP.responseText);
				}
			}
		}
	// open the page
	XMLHTTP.open("GET", instantFile + Params, true);
	// send the data
	XMLHTTP.send(null);
	}
}


// -------- END AJAX -----------
