﻿/*
RunAjaxScripts takes care of a LOT of AJAX functionality
Adding,removing,updating,hiding and showing elements.
*/

var __pendingCallbacks = new Array();
var __synchronousCallBackIndex = -1;
var __nonMSDOMBrowser = (window.navigator.appName.toLowerCase().indexOf('explorer') == -1);
var g_strFormData = "";
var __theFormPostCollection = new Array();
var g_bNoForm = false; //if true only the querystring is sent.
var g_strUrl = '';
function getElementById2(strID) {	//ctl00_cphMain
	var elem = document.getElementById(strID);
	if (elem == null) {
		strID = strID.replace('ctl00_', 'ctl00_cphMain_');
		elem = document.getElementById(strID);
	}
	if (elem == null) {
		strID = 'ctl00_cphMain_' + strID;
		elem = document.getElementById(strID);
	}
	return elem;
}


function SelectSingleNode(xmlDoc, elementPath) {
	if (window.ActiveXObject) {
		return xmlDoc.selectSingleNode(elementPath);
	}
	else {
		var xpe = new XPathEvaluator();
		var nsResolver = xpe.createNSResolver(xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement);
		var results = xpe.evaluate(elementPath, xmlDoc, nsResolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
		return results.singleNodeValue;
	}
}

function FindNode(doc, tag) {
	var node = null;
	while (doc && doc.nextSibling) {
		doc = doc.nextSibling;
		if ((doc != null)
					&& (doc.nodeName.toLowerCase() == tag)
					) {
			return doc;
		}
		node = FindNode(doc, tag);
		if (node != null)
			return node;
	}
	if (doc == null)
		return null;
	var iCount = doc.childNodes.length;
	var iStep;
	for (iStep = 0; iStep < iCount; iStep++) {
		node = doc.childNodes[iStep];
		if ((node != null)
					&& (node.nodeName.toLowerCase() == tag)
					) {
			return node;
		}
		node = FindNode(node, tag);
		if (node != null)
			return node;
	}
	return null;
}


function MBForm_PostBackOptions(
    eventTarget,
    eventArgument,
    validation,
    validationGroup,
    actionUrl,
    trackFocus,
    clientSubmit
) {
	this.eventTarget = eventTarget;
	this.eventArgument = eventArgument;
	this.validation = validation;
	this.validationGroup = validationGroup;
	this.actionUrl = actionUrl;
	this.trackFocus = trackFocus;
	this.clientSubmit = clientSubmit;
}
function MBForm_DoPostBackWithOptions(options) {
	var validationResult = true;
	if (options.validation) {
		if (typeof (Page_ClientValidate) == 'function') {
			validationResult = Page_ClientValidate(options.validationGroup);
		}
	}
	if (validationResult) {
		if ((typeof (options.actionUrl) != "undefined") && (options.actionUrl != null) && (options.actionUrl.length > 0)) {
			theForm.action = options.actionUrl;
		}
		if (options.trackFocus) {
			var lastFocus = theForm.elements["__LASTFOCUS"];
			if ((typeof (lastFocus) != "undefined") && (lastFocus != null)) {
				if (typeof (document.activeElement) == "undefined") {
					lastFocus.value = options.eventTarget;
				}
				else {
					var active = document.activeElement;
					if ((typeof (active) != "undefined") && (active != null)) {
						if ((typeof (active.id) != "undefined") && (active.id != null) && (active.id.length > 0)) {
							lastFocus.value = active.id;
						}
						else if (typeof (active.name) != "undefined") {
							lastFocus.value = active.name;
						}
					}
				}
			}
		}
	}
	if (options.clientSubmit) {
		__doPostBack(options.eventTarget, options.eventArgument);
	}
}

function MBForm_DoCallback(
    eventTarget,
    eventArgument,
    eventCallback,
    context,
    errorCallback,
    useAsync
) {
	if (typeof theForm == "undefined") {
		//theForm=document.forms[0];
		theForm = document.getElementById("aspnetForm");
	}
	MBForm_InitCallback();
	var postData = g_strFormData +
                "__CALLBACKID=" + MBForm_EncodeCallback(eventTarget) +
                "&__CALLBACKPARAM=" + MBForm_EncodeCallback(eventArgument);
	if (theForm["__EVENTVALIDATION"]) {
		postData += "&__EVENTVALIDATION=" + MBForm_EncodeCallback(theForm["__EVENTVALIDATION"].value);
	}
	var xmlRequest, e;
	if (window.XMLHttpRequest)
		xmlRequest = new XMLHttpRequest();
	else {
		xmlRequest = new ActiveXObject("Msxml2.XMLHTTP");
		if (!xmlRequest)
			xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}

	var setRequestHeaderMethodExists = true;
	try {
		setRequestHeaderMethodExists = (xmlRequest && xmlRequest.setRequestHeader);
	}
	catch (e) { }
	//    debugger;
	var callback = new Object();
	var strUrl = theForm.action;
	if (g_strUrl != '')
		strUrl = g_strUrl;
	if (strUrl.indexOf("?") != -1)
		strUrl += '&';
	else
		strUrl += '?';
	strUrl += 'rnd=' + String(Math.random()).substr(2);
	callback.eventCallback = eventCallback;
	callback.context = context;
	callback.errorCallback = errorCallback;
	callback.async = useAsync;
	var callbackIndex = MBForm_FillFirstAvailableSlot(__pendingCallbacks, callback);
	if (!useAsync) {
		if (__synchronousCallBackIndex != -1) {
			__pendingCallbacks[__synchronousCallBackIndex] = null;
		}
		__synchronousCallBackIndex = callbackIndex;
	}
	if (setRequestHeaderMethodExists) {
		xmlRequest.onreadystatechange = MBForm_CallbackComplete;
		callback.xmlRequest = xmlRequest;

		xmlRequest.open("POST", strUrl, true);
		xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlRequest.send(postData);
		return xmlRequest;
	}
	callback.xmlRequest = new Object();
	var callbackFrameID = "__CALLBACKFRAME" + callbackIndex;
	var xmlRequestFrame = document.frames[callbackFrameID];
	if (!xmlRequestFrame) {
		xmlRequestFrame = document.createElement("IFRAME");
		xmlRequestFrame.width = "1";
		xmlRequestFrame.height = "1";
		xmlRequestFrame.frameBorder = "0";
		xmlRequestFrame.id = callbackFrameID;
		xmlRequestFrame.name = callbackFrameID;
		xmlRequestFrame.style.position = "absolute";
		xmlRequestFrame.style.top = "-100px"
		xmlRequestFrame.style.left = "-100px";
		try {
			if (callBackFrameUrl) {
				xmlRequestFrame.src = callBackFrameUrl;
			}
		}
		catch (e) { }
		document.body.appendChild(xmlRequestFrame);
	}
	var interval = window.setInterval(function() {
		xmlRequestFrame = document.frames[callbackFrameID];
		if (xmlRequestFrame && xmlRequestFrame.document) {
			window.clearInterval(interval);
			xmlRequestFrame.document.write("");
			xmlRequestFrame.document.close();
			xmlRequestFrame.document.write('<html><body><form method="post"><input type="hidden" name="__CALLBACKLOADSCRIPT" value="t"></form></body></html>');
			xmlRequestFrame.document.close();
			xmlRequestFrame.document.forms[0].action = theForm.action;
			var count = __theFormPostCollection.length;
			var element;
			for (var i_step = 0; i_step < count; i_step++) {
				element = __theFormPostCollection[i_step];
				if (element) {
					var fieldElement = xmlRequestFrame.document.createElement("INPUT");
					fieldElement.type = "hidden";
					fieldElement.name = element.name;
					fieldElement.value = element.value;
					xmlRequestFrame.document.forms[0].appendChild(fieldElement);
				}
			}
			var callbackIdFieldElement = xmlRequestFrame.document.createElement("INPUT");
			callbackIdFieldElement.type = "hidden";
			callbackIdFieldElement.name = "__CALLBACKID";
			callbackIdFieldElement.value = eventTarget;
			xmlRequestFrame.document.forms[0].appendChild(callbackIdFieldElement);
			var callbackParamFieldElement = xmlRequestFrame.document.createElement("INPUT");
			callbackParamFieldElement.type = "hidden";
			callbackParamFieldElement.name = "__CALLBACKPARAM";
			callbackParamFieldElement.value = eventArgument;
			xmlRequestFrame.document.forms[0].appendChild(callbackParamFieldElement);
			if (theForm["__EVENTVALIDATION"]) {
				var callbackValidationFieldElement = xmlRequestFrame.document.createElement("INPUT");
				callbackValidationFieldElement.type = "hidden";
				callbackValidationFieldElement.name = "__EVENTVALIDATION";
				callbackValidationFieldElement.value = theForm["__EVENTVALIDATION"].value;
				xmlRequestFrame.document.forms[0].appendChild(callbackValidationFieldElement);
			}
			var callbackIndexFieldElement = xmlRequestFrame.document.createElement("INPUT");
			callbackIndexFieldElement.type = "hidden";
			callbackIndexFieldElement.name = "__CALLBACKINDEX";
			callbackIndexFieldElement.value = callbackIndex;
			xmlRequestFrame.document.forms[0].appendChild(callbackIndexFieldElement);
			xmlRequestFrame.document.forms[0].submit();
		}
	}, 10);
}

//sets the __MBVIEWSTATE value if it changed. See MapViewState for details about this.
function CheckViewState(responseText) {
	var nLength = responseText.length;
	if (nLength > 31) {
		var strGuid = responseText.substr(nLength - 32, 32)
		if (strGuid == '336A233ACA0D4877BE7A381307F9E305') {
			var i = responseText.length - 32;
			while (responseText.charAt(i) != '*') i--;
			i++;
			var nViewStateLength = parseInt(responseText.substr(i, nLength - 32 - i));
			var nSep = i - nViewStateLength - 1;
			var strViewState = responseText.substr(nSep, nViewStateLength);
			responseText = responseText.substr(0, nSep);
			var view_state = document.getElementById('__MBVIEWSTATE');
			if (view_state != null) view_state.value = strViewState;
		}
	}
	return responseText;
}

function ExecuteDynamicScript(responseText) {
	if (responseText == null || responseText.length == 0) return;
	var oNode = document.createElement('script');
	oNode.setAttribute('language', 'javascript');
	oNode.text = responseText;
	document.body.appendChild(oNode);
	document.body.removeChild(oNode);
}

function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

//handy callback function that can be enough in most cases.
function CallbackReturn(responseText, context) {
	var strScript = null;
	var end = responseText.indexOf('*SCRIPT*');
	if (end > -1) {
		strScript = responseText.substr(end + 8);
		responseText = responseText.substr(0, end);
	}
	if (context != null)
		context.innerHTML = responseText;
	if (strScript != null)
		ExecuteDynamicScript(strScript);
}


function MBForm_CallbackComplete() {
	for (var i_step = 0; i_step < __pendingCallbacks.length; i_step++) {
		callbackObject = __pendingCallbacks[i_step];
		if (callbackObject && callbackObject.xmlRequest && (callbackObject.xmlRequest.readyState == 4)) {
			//						window.status='';
			MBForm_ExecuteCallback(callbackObject);
			if (!__pendingCallbacks[i_step].async) {
				__synchronousCallBackIndex = -1;
			}
			__pendingCallbacks[i_step] = null;
			var callbackFrameID = "__CALLBACKFRAME" + i_step;
			var xmlRequestFrame = document.getElementById(callbackFrameID);
			if (xmlRequestFrame) {
				xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
			}
		}
	}
}
function MBForm_ExecuteCallback(callbackObject) {
	var response = callbackObject.xmlRequest.responseText;
	var xmlObj = callbackObject.xmlRequest.responseXML;
	//    debugger;
	if ((xmlObj)
			&& (xmlObj.firstChild)
			) {
		callbackObject.eventCallback(xmlObj, callbackObject.context);
	}
	else if (response.indexOf("<html>") > -1) {
		callbackObject.errorCallback(response, callbackObject.context);
	}
	else if (response.charAt(0) == "s") {
		if ((typeof (callbackObject.eventCallback) != "undefined") && (callbackObject.eventCallback != null)) {
			callbackObject.eventCallback(response.substring(1), callbackObject.context);
		}
	}
	else if (response.charAt(0) == "e") {
		if ((typeof (callbackObject.errorCallback) != "undefined") && (callbackObject.errorCallback != null)) {
			callbackObject.errorCallback(response.substring(1), callbackObject.context);
		}
	}
	else if ((response.length > 5)
            && (response.substr(0, 5) == "AJAH:")
            ) {

		response = response.substr(5);
		if ((typeof (callbackObject.eventCallback) != "undefined") && (callbackObject.eventCallback != null)) {
			callbackObject.eventCallback(response, callbackObject.context);
		}
	}
	else {

		response = CheckViewState(response);
		var separatorIndex = response.indexOf("|");
		if (separatorIndex != -1) {
			var validationFieldLength = parseInt(response.substring(0, separatorIndex));
			if (!isNaN(validationFieldLength)) {
				var validationField = response.substring(separatorIndex + 1, separatorIndex + validationFieldLength + 1);
				if (validationField != "") {
					var validationFieldElement = theForm["__EVENTVALIDATION"];
					if (!validationFieldElement) {
						validationFieldElement = document.createElement("INPUT");
						validationFieldElement.type = "hidden";
						validationFieldElement.name = "__EVENTVALIDATION";
						theForm.appendChild(validationFieldElement);
					}
					validationFieldElement.value = validationField;
				}
				if ((typeof (callbackObject.eventCallback) != "undefined") && (callbackObject.eventCallback != null)) {
					callbackObject.eventCallback(response.substring(separatorIndex + validationFieldLength + 1), callbackObject.context);
				}
			}
		}
	}
}
function MBForm_FillFirstAvailableSlot(array, element) {
	var i_step;
	for (i_step = 0; i_step < array.length; i_step++) {
		if (!array[i_step]) break;
	}
	array[i_step] = element;
	return i_step;
}

function MBForm_InitCallback() {
	if (g_bNoForm)
		return;
	var count = theForm.elements.length;
	var element;
	g_strFormData = '';
	for (var i_step = 0; i_step < count; i_step++) {
		element = theForm.elements[i_step];
		var tagName = element.tagName.toLowerCase();
		if (tagName == "input") {
			var type = element.type;
			if ((type == "text" || type == "hidden" || type == "password" ||
                ((type == "checkbox" || type == "radio") && element.checked)) &&
                (element.id != "__EVENTVALIDATION")) {
				MBForm_InitCallbackAddField(element.name, element.value);
			}
		}
		else if (tagName == "select") {
			var selectCount = element.options.length;
			for (var j_step = 0; j_step < selectCount; j_step++) {
				var selectChild = element.options[j_step];
				if (selectChild.selected == true) {
					MBForm_InitCallbackAddField(element.name, element.value);
				}
			}
		}
		else if (tagName == "textarea") {
			MBForm_InitCallbackAddField(element.name, element.value);
		}
	}
}

function MBForm_InitCallbackAddField(name, value) {
	var nameValue = new Object();
	nameValue.name = name;
	nameValue.value = value;
	__theFormPostCollection[__theFormPostCollection.length] = nameValue;
	g_strFormData += name + "=" + MBForm_EncodeCallback(value) + "&";
}
function MBForm_EncodeCallback(parameter) {
	if (encodeURIComponent) {
		return encodeURIComponent(parameter);
	}
	else {
		return escape(parameter);
	}
}
var __disabledControlArray = new Array();
function MBForm_ReEnableControls() {
	if (typeof (__enabledControlArray) == 'undefined') {
		return false;
	}
	var disabledIndex = 0;
	for (var i_step = 0; i_step < __enabledControlArray.length; i_step++) {
		var c;
		if (__nonMSDOMBrowser) {
			c = document.getElementById(__enabledControlArray[i_step]);
		}
		else {
			c = document.all[__enabledControlArray[i_step]];
		}
		if ((typeof (c) != "undefined") && (c != null) && (c.disabled == true)) {
			c.disabled = false;
			__disabledControlArray[disabledIndex++] = c;
		}
	}
	setTimeout("MBForm_ReDisableControls()", 0);
	return true;
}
function MBForm_ReDisableControls() {
	for (var i_step = 0; i_step < __disabledControlArray.length; i_step++) {
		__disabledControlArray[i_step].disabled = true;
	}
}
var __defaultFired = false;
function MBForm_FireDefaultButton(event, target) {
	if (!__defaultFired && event.keyCode == 13 && !(event.srcElement && (event.srcElement.tagName.toLowerCase() == "textarea"))) {
		var defaultButton;
		if (__nonMSDOMBrowser) {
			defaultButton = document.getElementById(target);
		}
		else {
			defaultButton = document.all[target];
		}
		if (defaultButton && typeof (defaultButton.click) != "undefined") {
			__defaultFired = true;
			defaultButton.click();
			event.cancelBubble = true;
			if (event.stopPropagation) event.stopPropagation();
			return false;
		}
	}
	return true;
}
function MBForm_GetScrollX() {
	if (__nonMSDOMBrowser) {
		return window.pageXOffset;
	}
	else {
		if (document.documentElement && document.documentElement.scrollLeft) {
			return document.documentElement.scrollLeft;
		}
		else if (document.body) {
			return document.body.scrollLeft;
		}
	}
	return 0;
}
function MBForm_GetScrollY() {
	if (__nonMSDOMBrowser) {
		return window.pageYOffset;
	}
	else {
		if (document.documentElement && document.documentElement.scrollTop) {
			return document.documentElement.scrollTop;
		}
		else if (document.body) {
			return document.body.scrollTop;
		}
	}
	return 0;
}
function MBForm_SaveScrollPositionSubmit() {
	if (__nonMSDOMBrowser) {
		theForm.elements['__SCROLLPOSITIONY'].value = window.pageYOffset;
		theForm.elements['__SCROLLPOSITIONX'].value = window.pageXOffset;
	}
	else {
		theForm.__SCROLLPOSITIONX.value = MBForm_GetScrollX();
		theForm.__SCROLLPOSITIONY.value = MBForm_GetScrollY();
	}
	if ((typeof (this.oldSubmit) != "undefined") && (this.oldSubmit != null)) {
		return this.oldSubmit();
	}
	return true;
}
function MBForm_SaveScrollPositionOnSubmit() {
	theForm.__SCROLLPOSITIONX.value = MBForm_GetScrollX();
	theForm.__SCROLLPOSITIONY.value = MBForm_GetScrollY();
	if ((typeof (this.oldOnSubmit) != "undefined") && (this.oldOnSubmit != null)) {
		return this.oldOnSubmit();
	}
	return true;
}
function MBForm_RestoreScrollPosition() {
	if (__nonMSDOMBrowser) {
		window.scrollTo(theForm.elements['__SCROLLPOSITIONX'].value, theForm.elements['__SCROLLPOSITIONY'].value);
	}
	else {
		window.scrollTo(theForm.__SCROLLPOSITIONX.value, theForm.__SCROLLPOSITIONY.value);
	}
	if ((typeof (theForm.oldOnLoad) != "undefined") && (theForm.oldOnLoad != null)) {
		return theForm.oldOnLoad();
	}
	return true;
}
function MBForm_TextBoxKeyHandler(event) {
	if (event.keyCode == 13) {
		var target;
		if (__nonMSDOMBrowser) {
			target = event.target;
		}
		else {
			target = event.srcElement;
		}
		if ((typeof (target) != "undefined") && (target != null)) {
			if (typeof (target.onchange) != "undefined") {
				target.onchange();
				event.cancelBubble = true;
				if (event.stopPropagation) event.stopPropagation();
				return false;
			}
		}
	}
	return true;
}
function MBForm_AppendToClassName(element, className) {
	var current = element.className;
	if (current) {
		if (current.charAt(current.length - 1) != ' ') {
			current += ' ';
		}
		current += className;
	}
	else {
		current = className;
	}
	element.className = current;
}
function MBForm_RemoveClassName(element, className) {
	var current = element.className;
	if (current) {
		if (current.substring(current.length - className.length - 1, current.length) == ' ' + className) {
			element.className = current.substring(0, current.length - className.length - 1);
			return;
		}
		if (current == className) {
			element.className = "";
			return;
		}
		var index = current.indexOf(' ' + className + ' ');
		if (index != -1) {
			element.className = current.substring(0, index) + current.substring(index + className.length + 2, current.length);
			return;
		}
		if (current.substring(0, className.length) == className + ' ') {
			element.className = current.substring(className.length + 1, current.length);
		}
	}
}
function MBForm_GetElementById(elementId) {
	if (document.getElementById) {
		return document.getElementById(elementId);
	}
	else if (document.all) {
		return document.all[elementId];
	}
	else return null;
}
function MBForm_GetElementByTagName(element, tagName) {
	var elements = MBForm_GetElementsByTagName(element, tagName);
	if (elements && elements.length > 0) {
		return elements[0];
	}
	else return null;
}
function MBForm_GetElementsByTagName(element, tagName) {
	if (element && tagName) {
		if (element.getElementsByTagName) {
			return element.getElementsByTagName(tagName);
		}
		if (element.all && element.all.tags) {
			return element.all.tags(tagName);
		}
	}
	return null;
}
function MBForm_GetElementDir(element) {
	if (element) {
		if (element.dir) {
			return element.dir;
		}
		return MBForm_GetElementDir(element.parentNode);
	}
	return "ltr";
}
function MBForm_GetElementPosition(element) {
	var result = new Object();
	result.x = 0;
	result.y = 0;
	result.width = 0;
	result.height = 0;
	if (element.offsetParent) {
		result.x = element.offsetLeft;
		result.y = element.offsetTop;
		var parent = element.offsetParent;
		while (parent) {
			result.x += parent.offsetLeft;
			result.y += parent.offsetTop;
			var parentTagName = parent.tagName.toLowerCase();
			if (parentTagName != "table" &&
                parentTagName != "body" &&
                parentTagName != "html" &&
                parentTagName != "div" &&
                parent.clientTop &&
                parent.clientLeft) {
				result.x += parent.clientLeft;
				result.y += parent.clientTop;
			}
			parent = parent.offsetParent;
		}
	}
	else if (element.left && element.top) {
		result.x = element.left;
		result.y = element.top;
	}
	else {
		if (element.x) {
			result.x = element.x;
		}
		if (element.y) {
			result.y = element.y;
		}
	}
	if (element.offsetWidth && element.offsetHeight) {
		result.width = element.offsetWidth;
		result.height = element.offsetHeight;
	}
	else if (element.style && element.style.pixelWidth && element.style.pixelHeight) {
		result.width = element.style.pixelWidth;
		result.height = element.style.pixelHeight;
	}
	return result;
}
function MBForm_GetParentByTagName(element, tagName) {
	var parent = element.parentNode;
	var upperTagName = tagName.toUpperCase();
	while (parent && (parent.tagName.toUpperCase() != upperTagName)) {
		parent = parent.parentNode ? parent.parentNode : parent.parentElement;
	}
	return parent;
}
function MBForm_SetElementHeight(element, height) {
	if (element && element.style) {
		element.style.height = height + "px";
	}
}
function MBForm_SetElementWidth(element, width) {
	if (element && element.style) {
		element.style.width = width + "px";
	}
}
function MBForm_SetElementX(element, x) {
	if (element && element.style) {
		element.style.left = x + "px";
	}
}
function MBForm_SetElementY(element, y) {
	if (element && element.style) {
		element.style.top = y + "px";
	}
}

/*
Underneath developed by Mindbus - Frans Nagel
*/
function AddItems(saveddoc) {	//add items underneath <additems> node.
	var bOK = true;
	var node = null;
	var xml = null;
	var strHtml = '';
	if (bOK) {
		node = SelectSingleNode(saveddoc, '/xml/additems');
		bOK = ((node != null)
					&& (node.childNodes != null)
					&& (node.childNodes.length > 0)
					);

	}
	if (bOK) {
		var iCount = node.childNodes.length;
		var strID = '';
		var elem = null;
		var parent = null;
		var xml = null;
		var xmlnode = null;
		for (var i = 0; i < iCount; i++) {
			if (node.childNodes[i].childNodes.length < 2)
				continue;
			strID = node.childNodes[i].childNodes[0].firstChild.nodeValue;
			xmlnode = node.childNodes[i].childNodes[1].firstChild;
			xml = xmlnode.xml;
			if (xml == null) {
				var serializer = new XMLSerializer();
				xml = serializer.serializeToString(xmlnode);
			}
			elem = getElementById2(strID);
			if (elem != null) {
				var div = document.createElement('div');
				div.innerHTML = xml;
				var iLength = div.childNodes.length;
				for (var e = 0; e < iLength; e++) {
					elem.appendChild(div.childNodes[e]);
				}
			}
		}
	}
}

function RemoveItems(saveddoc) {	// look up the <hideitems> tag and delete found elements
	var bOK = true;
	var node = null;
	var xml = null;

	if (bOK) {
		node = SelectSingleNode(saveddoc, '/xml/removeitems');
		bOK = ((node != null)
					&& (node.childNodes != null)
					&& (node.childNodes.length > 0)
					);
	}
	if (bOK) {
		var iCount = node.childNodes.length;
		var strID = '';
		var elem = null;
		var parent = null;
		for (var i = 0; i < iCount; i++) {
			strID = node.childNodes[i].firstChild.nodeValue;
			elem = getElementById2(strID);
			if (elem != null) {
				parent = elem.parentNode ? elem.parentNode : elem.parentElement;
				parent.removeChild(elem);
			}
		}
	}
}

function HideItems(saveddoc) {	// look up the <hideitems> tag and hide found elements
	var bOK = true;
	var node = null;
	var xml = null;

	if (bOK) {
		node = SelectSingleNode(saveddoc, '/xml/hideitems');
		bOK = ((node != null)
					&& (node.childNodes != null)
					&& (node.childNodes.length > 0)
					);
	}
	if (bOK) {
		var iCount = node.childNodes.length;
		var strID = '';
		var elem = null;
		var parent = null;
		for (var i = 0; i < iCount; i++) {
			strID = node.childNodes[i].firstChild.nodeValue;
			elem = getElementById2(strID);
			if (elem != null) {
				elem.style.display = 'none';
			}
		}
	}
}

function ShowItems(saveddoc) {	// look up the <hideitems> tag and show found elements
	var bOK = true;
	var node = null;
	var xml = null;

	if (bOK) {
		node = SelectSingleNode(saveddoc, '/xml/showitems');
		bOK = ((node != null)
					&& (node.childNodes != null)
					&& (node.childNodes.length > 0)
					);
	}
	if (bOK) {
		var iCount = node.childNodes.length;
		var strID = '';
		var elem = null;
		var parent = null;
		for (var i = 0; i < iCount; i++) {
			strID = node.childNodes[i].firstChild.nodeValue;
			elem = getElementById2(strID);
			if (elem != null) {
				elem.style.display = '';
			}
		}
	}
}

function SetItemsHTML(saveddoc) {	// look up the <setitemshtml> tag and set the innerHTMl for these elements
	var bOK = true;
	var node = null;
	var xml = null;
	if (bOK) {
		node = SelectSingleNode(saveddoc, '/xml/setitemshtml');
		bOK = ((node != null)
					&& (node.childNodes != null)
					&& (node.childNodes.length > 0)
					);
	}
	if (bOK) {
		var iCount = node.childNodes.length;
		var strID = '';
		var elem = null;
		var parent = null;
		var xmlnode = null;
		for (var i = 0; i < iCount; i++) {
			if (node.childNodes[i].childNodes.length < 2)
				continue;
			strID = node.childNodes[i].childNodes[0].firstChild.nodeValue;
			xmlnode = node.childNodes[i].childNodes[1].firstChild;
			xml = xmlnode.xml;
			if (!xml) {
				var serializer = new XMLSerializer();
				xml = serializer.serializeToString(xmlnode);
			}
			elem = getElementById2(strID);
			if (elem != null) {
				elem.innerHTML = xml;
				if ((elem.style.display == 'none')
					  && (xml.length > 0)
					  ) {//unhide element automatically
					elem.style.display = '';
				}
				//alert('yo dude' + xml);
			}
		}
	}
}

function RunXmlScripts(saveddoc) {
	var bOK = true;
	var node = null;
	var xml = null;

	if (bOK) {
		node = SelectSingleNode(saveddoc, '/xml/scripts');
		bOK = ((node != null)
					&& (node.childNodes != null)
					&& (node.childNodes.length > 0)
					);
	}
	if (bOK) {
		node = node.firstChild;
		xml = node.xml;
	}
	if ((bOK)
			&& (xml == null)
			) {
		var serializer = new XMLSerializer();
		xml = serializer.serializeToString(node);
	}
	if (bOK) {
		bOK = (xml != null);
	}
	if ((bOK)
			&& (xml.length > 0)
			) {
		ExecuteDynamicScript(xml);
	}
}

function RunAJAXScripts(saveddoc) {
	AddItems(saveddoc);
	RemoveItems(saveddoc);
	ShowItems(saveddoc);
	HideItems(saveddoc);
	SetItemsHTML(saveddoc);
	RunXmlScripts(saveddoc);
}
/*
RunAjaxScripts takes care of a LOT of AJAX functionality
Adding,removing,updating,hiding and showing elements.
*/

//  Copyright 2008 mindbus.nl
//  Author Frans Nagel
function ProcessAjah(responseText, context) {
	var bOK = true;
	var iTotalLength = responseText.length;
	var iIndex = 1;
	var num = '';
	var strPart = '';
	//    alert(responseText);
	while (responseText.length > 0) {
		iIndex = responseText.indexOf('|');
		if (iIndex < 0)
			break;
		num = parseInt(responseText.substr(0, iIndex));
		responseText = responseText.substr(iIndex + 1);
		strPart = responseText.substr(0, num);
		ProcessAjahPart(strPart);
		responseText = responseText.substr(num);
	}
}

function RemoveAjahItem(strID) {
	var elem = getElementById2(strID);
	if (elem != null) {
		var parent = elem.parentNode ? elem.parentNode : elem.parentElement;
		if (parent)
			parent.removeChild(elem);
	}
}

function RunAjahScript(strValue) {
	ExecuteDynamicScript(strValue);
}
function SetAjahItemValue(strID, strHtml) {
	var elem = getElementById2(strID);
	if (elem != null) {
		elem.value = strHtml;
		if ((elem.style.display == 'none')
			  && (strHtml.length > 0)
			  ) {//unhide element automatically
			elem.style.display = '';
		}
		//alert('yo dude' + xml);
	}
}
function SetAjahItem(strID, strHtml) {
	var elem = getElementById2(strID);
	if (elem != null) {
		elem.innerHTML = strHtml;
		if ((elem.style.display == 'none')
			  && (strHtml.length > 0)
			  ) {//unhide element automatically
			elem.style.display = '';
		}
		//alert('yo dude' + xml);
	}
}
function HideAjahItem(strID) {
	var elem = getElementById2(strID);
	if (elem != null) {
		elem.style.display = 'none';
	}
}
function ShowAjahItem(strID) {
	var elem = getElementById2(strID);
	if (elem != null) {
		elem.style.display = '';
	}
}

function AddAjahItem(strID, strHtml) {
	var elem = getElementById2(strID);
	if (elem == null)
		elem = document;
	if (elem != null) {
		var div = document.createElement('div');
		div.innerHTML = strHtml;
		var iLength = div.childNodes.length;
		for (var e = 0; e < iLength; e++) {
			elem.appendChild(div.childNodes[e].cloneNode(true));
		}
	}
}

function ProcessAjahPart(strPart) {
	var iIndex = strPart.indexOf('|');
	var strFunction = strPart.substr(0, iIndex);
	var strHtml = '';
	var strValue = '';
	strPart = strPart.substr(iIndex + 1);
	iIndex = strPart.indexOf('|');
	strID = strPart.substr(0, iIndex);
	strValue = strPart.substr(iIndex + 1);

	switch (strFunction) {
		case 'AddItem':
			AddAjahItem(strID, strValue);
			break;
		case 'SetItemHTML':
			SetAjahItem(strID, strValue);
			break;
		case 'HideItem':
			HideAjahItem(strID);
			break;
		case 'ShowItem':
			ShowAjahItem(strID);
			break;
		case 'RemoveItem':
			RemoveAjahItem(strID);
			break;
		case 'SetItemValue':
			SetAjahItemValue(strID, strValue);
			break;
		case 'RunScript':
			RunAjahScript(strValue);
			break;
		default:
			break;
	}
}

