function XmlSubmit(txtSubmitHref, txtRedirectURL) {
	DisplayOverlay('Loading');
	oLoadingCurrentProcess = document.getElementById("LoadingCurrentProcess");
	oLoadingCurrentProcess.innerHTML = "Parsing HTML for XmlTags";
	var Stack=new Array();
	var StackIndex = -1;
	var intTagOpen;
	var appendXml;
	var insertAfter = -1;
	oForms = document.getElementsByTagName("form");
	intMainForm = -1;
	if (oForms.length == 0) {
		alert("There are no forms to parse.");
		return
	}
	for(intCurrentForm=0; intCurrentForm<oForms.length; intCurrentForm++) {
		if (oForms[intCurrentForm].getAttribute("MainForm") == 1) {
			intMainForm = intCurrentForm;
			break;
		}
	}
	if (intMainForm == -1) {
		alert("I am unable to parse any forms on this page.");
		return
	}
	var oXml = new XmlBuilder();
	oXml.Push(oForms[intCurrentForm].getAttribute("XmlTag"), "");
	oSearchTags = "input,textarea".split(",");
	for (intCurrentSearchTag=0; intCurrentSearchTag<oSearchTags.length; intCurrentSearchTag++) {
		oInputTags = oForms[intMainForm].getElementsByTagName(oSearchTags[intCurrentSearchTag]);
		for (intCurrentInput=0; intCurrentInput<oInputTags.length; intCurrentInput++) {
			if (oInputTags[intCurrentInput].getAttribute("XmlTag") != null) {
				oXmlTags = (oInputTags[intCurrentInput].getAttribute("XmlTag")+"-").split("-");
				for (intCurrentTag=0; intCurrentTag<oXmlTags.length-1; intCurrentTag++) {
					if (intCurrentTag == oXmlTags.length-2) {
						if (oInputTags[intCurrentInput].type == "checkbox") {
							if (oInputTags[intCurrentInput].checked) {
								txtValue = "true";
							} else {
								txtValue = "false";
							}
						} else {
							txtValue = oInputTags[intCurrentInput].value;
						}
						
						if (insertAfter > 44) {
							oXml.AppendXml(oXmlTags[intCurrentTag], txtValue, insertAfter);
							insertAfter = 0;
						} else {
							oXml.AddElement(oXmlTags[intCurrentTag], txtValue, "", 1);
							if (intTagOpen == true) {
								oXml.Pop(Stack[StackIndex], "");
								StackIndex -= 1;
								intTagOpen = false;
							}
						}
					} else {
						txtLink = oInputTags[intCurrentInput].getAttribute("XmlLink");
						if (txtLink != "undefined") {
							Attributes = "XmlLink='" + txtLink + "'";
						} else {
							Attributes = "";
						}
						
						insertAfter = oXml.GetXml().indexOf("<" + oXmlTags[intCurrentTag] + " " + Attributes + ">") + 42;
						if (insertAfter == 41) {
							oXml.Push(oXmlTags[intCurrentTag], Attributes);
							Stack[StackIndex]=oXmlTags[intCurrentTag];
							intTagOpen = true;
						}
					}
				}
			}
		}
	}
	oXml.Xml = XmlSubmitExtra(oXml.Xml);
	oXml.Pop(oForms[intCurrentForm].getAttribute("XmlTag"));
	oLoadingCurrentProcess.innerHTML = "Sending Request";
	oXml.SendXmlReq(txtSubmitHref, txtRedirectURL);
}