﻿/*
	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.

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];
		}
		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 (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;
    }
    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);
}

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;	
	 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]);
			}
		}
} 

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;
  } 
}
