function loadXMLDoc(url,data) {

	var request = null;
	var response = null;
	var section = null;
	var method = null;
	var replacementData = null;
	var field = null;
	var attribute = null;
	var cursor = null;
	var value = null;
	var element = null;
	var scroll = null;
	var t1 = null;
	var t2 = null;

  if (window.XMLHttpRequest) {
		request = new XMLHttpRequest();
		request.open("POST", url, false);
		request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
		request.send(data);
	} else if (window.ActiveXObject) {
		request = new ActiveXObject("Microsoft.XMLHTTP");
		if (request) {
			request.open("POST", url, false);
			request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
			request.send(data);
		}
	}

	if (request.readyState == 4) {
		if (request.status == 200) {
			response = request.responseXML.documentElement;
			section = response.getElementsByTagName('section');

			// Rewrite HTML content for something like a DIV or SPAN identified by an ID attribute.
			for (var i = 0; i < section.length; i++) {
				field = section[i].getElementsByTagName('id');
				if (field.length != 0) field = field[0].firstChild.data;
				attribute = section[i].getElementsByTagName('attribute');
				cursor = section[i].getElementsByTagName('cursor');
				value = section[i].getElementsByTagName('value');

				if (cursor.length != 0) {
					if (field.length != 0) {
						element = document.getElementById(field);
					} else {
						if (currentElementId != null && currentElementId != "")	{
							if (document.addEventListener) {
								// For anything not IE
								element = document.getElementById(currentElementId);
							} else {
								// IE is a *special* case :(
								currentElement = document.getElementById(currentElementId);
								if (currentElement.getAttribute('type') == 'text') {
									elements = currentElement.form.elements;
									match = false;
									for (x=0;x<elements.length;x++) {
										if (elements[x].id == currentElement.id) {
											match = true;
											continue;
										}
										if (match == true && elements[x].id != null && elements[x].id != "" && elements[x].focus) {
											currentElementId = elements[x].id;
											break;
										}
									}
								}
								element = document.getElementById(currentElementId);
							}
						}
					}
					if (element != null) {
						scroll = section[i].getElementsByTagName('scroll');
						if (scroll.length != 0) element.scrollIntoView(true);
						if (element.focus) element.focus();
						if (element.select) element.select();
					}
				}

				if (attribute.length != 0 && value.length != 0) {
					t1 = attribute[0].firstChild.data;
					t2 = value[0].firstChild.data;
					element = document.getElementById(field);
					element.style[t1] = t2;
				}
				
				replacementData = section[i].getElementsByTagName('content');
				if (replacementData.length != 0) {
					replacementData = replacementData[0].childNodes;
					scroll = section[i].getElementsByTagName('scroll');

					element = document.getElementById(field);
					html = '';

					for(var j=0; j<replacementData.length;j++) {
						if (window.XMLSerializer) {
							s = new XMLSerializer();
							html += s.serializeToString(replacementData.item(j));
						} else {
							html += replacementData.item(j).xml;
						}
					}
					element.innerHTML = html;
					if (scroll.length != 0) element.scrollIntoView(true);
				}
			}

		} else {
			alert("There was a problem retrieving the XML data:\n" + request.statusText);
		}
	}
	document.body.style.cursor = "default";
}
