var
	httpRequestSetData = false;
	lastHttpRequestSetData = false;
	prevDisabled = '';
	prevEnabled = '';
	nextDisabled = '';
	nextEnabled = '';

/**
 * Creates the Ajax request the setData request.
 */
function setData(field, row) {
	httpRequestSetData = false;
	httpRequestSetData = createXMLHttpRequest();
	if (!httpRequestSetData) {
		if (showMessage) showMessage('error.xmlhttp.data');
		return false;
	}

	httpRequestSetData.onreadystatechange = setDataCallback;
	httpRequestSetData.open('POST', 'setdata', false);
	httpRequestSetData.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	fieldValue = escape(field.value);
	fieldValue = fieldValue.replace('%u20AC', '%26euro%3B'); // Replacing euro sign with &euro;
	var sendStr = 'form=' + currentForm.toUpperCase() + '&bean=' + bean + '&field=' + field.name + '&value=' + fieldValue + 
		'&row=' + row + '&focus=' + field.focusField;
	lastHttpRequestSetData = false;
	httpRequestSetData.send(sendStr);
	// In FireFox we must explicit call the callback function
	// if we're using the XMLHttpRequest synchronously.
	if (window.XMLHttpRequest) {
		setDataCallback();
	}
}

/**
 * The Ajax callback for the setData request
 */
function setDataCallback() {
	if (httpRequestSetData.readyState == 4) {
		if (httpRequestSetData.status == 200) {
			if (lastHttpRequestSetData == httpRequestSetData.responseText) return;
			lastHttpRequestSetData = httpRequestSetData.responseText;

			var xmldoc = httpRequestSetData.responseXML;
			
			if (checkForTimeout(xmldoc))
				return;
			
			updateAttributes(xmldoc);
			
			var msg = xmldoc.getElementsByTagName('msg');
			if (msg.length == 1) {
				var text = msg.item(0).getAttribute('text');
				var action = msg.item(0).getAttribute('action');
				if (action != '') {
					text = text + '\n\n' + getActionText() + '\n' + action;
				}
				//if (showMessage) showMessage(text);
				alert(text); // TODO?
			}
									
			var qpages = xmldoc.getElementsByTagName('qpages');
			if (qpages.length >= 1) {
				var isFirstQPage = qpages.item(0).getAttribute('isfirstqpage') == 'true';
				var isLastQPage = qpages.item(0).getAttribute('islastqpage') == 'true';
				var status = new NavigationButtonStatusInfo(isFirstQPage, isLastQPage);
	 			navigationButtonStatusEvent.updateStatus.fire(status);
	 			
	 			var obj = eval('(' + qpages.item(0).getAttribute('pagecaptionlist') + ')');
	 			pageListChangedEvent.pageListChanged.fire(obj.pageList);

	 			var pageNavigation = document.getElementById('page_navigation');
 				if (pageNavigation != null) {
	 				document.getElementById('next').innerHTML = isLastQPage ? nextDisabled : nextEnabled;
					document.getElementById('prev').innerHTML = isFirstQPage ? prevDisabled : prevEnabled;
 				}
			}
			
			var focus = xmldoc.getElementsByTagName('focus');
			if (focus.length == 1) {
				var field = focus.item(0).getAttribute('field');
				if (focus.item(0).getAttribute('direction') == 'next')
					focusNextField(document.getElementById(field));
				else
					focusPrevField(document.getElementById(field));
			}
		} else {
			if (showMessage) showMessage('error.request.data', httpRequestSetData.status);
		}
	}
}

