var
	httpRequestButton = false;
	lastHttpRequestButton = false;
	buttonPressed = false;

/**
 * Creates the Ajax request for buttons.
 */
function onButtonClick(button) {
	buttonPressed = true;
	httpRequestButton = false;
	httpRequestButton = createXMLHttpRequest();
	if (!httpRequestButton) {
		if (showMessage) showMessage('error.xmlhttp.button');
		return false;
	}

	httpRequestButton.onreadystatechange = buttonCallback;
	httpRequestButton.open('POST', 'buttonpressed', false);
	httpRequestButton.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	lastHttpRequestButton = false;
	httpRequestButton.send('bean=' + bean + '&name=' + button.id);
	if (window.XMLHttpRequest) {
		buttonCallback();
	}
}

/**
 * The Ajax callback for the button request.
 */
function buttonCallback() {
	if (httpRequestButton.readyState == 4) {
		if (httpRequestButton.status == 200) {
			if (lastHttpRequestButton == httpRequestButton.responseText) return;
			lastHttpRequestButton = httpRequestButton.responseText;
			
			var xmldoc = httpRequestButton.responseXML;

			if (checkForTimeout(xmldoc))
				return;
					
			var gotopage = xmldoc.getElementsByTagName('gotopage');
			if (gotopage.length == 1) {
				var form = gotopage.item(0).firstChild.data;
				var page = gotopage.item(0).getAttribute('page');
				if (gotopage.item(0).getAttribute('modal') == 'true') {
					showForm(form, page, 'modal_holder', callbackModalLoad);
				} else {
					showForm(form, page);
				}
			}
			
			var command = xmldoc.getElementsByTagName('command');
			if (command.length == 1) {
				if (command.item(0).firstChild.data == 'close') {
					modalDialogEvent.hideModal.fire();
				}
			}
			
			var info = xmldoc.getElementsByTagName('info');
			if (info.length == 1) {
				var section = info.item(0).firstChild.data;
				infoTabEvent.openInfoTab.fire(section);
			}
		} else {
			if (showMessage) showMessage('error.request.button', httpRequestButton.status);
		}
	}
}

/**
 * The mouse over event for bit buttons.
 */
function onBitButtonMouseOver(field) {
	field.style.borderStyle = 'outset';
	field.style.borderWidth = 'thin';
}

/**
 * The mouse out event for bit buttons.
 */
function onBitButtonMouseOut(field) {
	field.style.borderStyle = 'none';
}

