var
	httpDropdownClick = false;
	combo_generic = 'combo_generic';
	div_combo_generic = 'div_combo_generic';
	fActiveMenu = false;
	oOverMenu = false;

/**
 * Used by the selection list
 */ 
function mouseSelect(e) {
var browserName=navigator.appName; 

	if (fActiveMenu) {

if (browserName != "Microsoft Internet Explorer")
{ 
 

  if (e.srcElement)
  {
    if (e.srcElement.tagName == 'OPTION')
    {
      e.srcElement.selected = true;
    }
  } 
}

		if (oOverMenu == false) {
			oOverMenu = false;
			document.getElementById(fActiveMenu).style.display = "none";
			fActiveMenu = false;
			return false;
		}
		return false;
	}
	return true;
}

/**
 * Used by the selection list.
 */ 
function onSelectClick(field_name, row) {
	var field = document.getElementById(field_name);
	httpDropdownClick = createXMLHttpRequest();
	if (!httpDropdownClick) {
		if (showMessage) showMessage('error.xmlhttp.listbox');
		return false;
	}
	
	httpDropdownClick.onreadystatechange = listBoxCallback;
	httpDropdownClick.open('GET', 'listboxclicked?bean=' + bean + '&field=' + field.name + '&action=click', false);
	httpDropdownClick.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	httpDropdownClick.send(null);
	if (window.XMLHttpRequest) {
		listBoxCallback();
	}
}

/**
 * Used by the selection list.
 */ 
function listBoxCallback() {
	if (httpDropdownClick.readyState == 4) {
		if (httpDropdownClick.status == 200) {
			var xmldoc = httpDropdownClick.responseXML;
			
			if (checkForTimeout(xmldoc))
				return;
			
			var field_name = xmldoc.getElementsByTagName('field');
	 	  	field = document.getElementById(combo_generic);
			if (field) {			
				field.options.length = 0;
				var options = xmldoc.getElementsByTagName('option');
				for (var i = 0; i < options.length; i++) {
					if (options[i].hasChildNodes()) {
						var new_option = new Option(options[i].firstChild.data,"");
						field[field.options.length] = new_option;
					}
				}
			}
		} else {
			if (showMessage) showMessage('error.request.listbox', httpDropdownClick.status);
		}
	}
}

/**
 * Used by the selection list.
 */ 
function menuActivate(idEdit, row, button) {
	if (fActiveMenu) return mouseSelect(0);
	var oSel = document.getElementById(combo_generic);
	var oMenu = document.getElementById(div_combo_generic);
	var oButtons = document.getElementsByName('button_' + idEdit);
	var index = 0;
	while (oButtons[index] != button) index++;
	var oEdit = document.getElementsByName(idEdit).item(index);//row == -1 ? 0 : row);
	//Need to add px for firefox to work
	oMenu.style.width = oEdit.offsetWidth+ "px";
	oSel.style.width = oEdit.offsetWidth + "px";
	//used to set values to correct field
	oSel.setAttribute('currentField', idEdit);
	oSel.setAttribute('currentRow', row);
	var nTop = oEdit.offsetHeight;
	var nLeft = 0;
	while (oEdit) {		
		nTop += oEdit.offsetTop- oEdit.scrollTop;
		nLeft += oEdit.offsetLeft;		
		oEdit = oEdit.offsetParent;
		if (!oEdit
		 || oEdit.id == 'form_holder'
		 || oEdit.id == 'modal_holder'
		 || oEdit.id == 'modal-dlg')
			break;
	}
	oMenu.style.left = nLeft + "px";
	oMenu.style.top = nTop + "px";
	oMenu.style.display = "";
	fActiveMenu = div_combo_generic;
	oSel.focus();
	return false;
}

/**
 * Used by the selection list.
 */ 
function textSet(idSel) {
	var field;
	var row = idSel.getAttribute('currentRow');
	field = document.getElementsByName(idSel.getAttribute('currentField')).item(row == -1 ? 0 : row);
	//TODO: Should we blank value if no items is in the list? Now we keep the old value
	if (idSel.selectedIndex != -1)
		field.value = idSel.options[idSel.selectedIndex].text;
	oOverMenu = false;
	mouseSelect(0);		
	field.focus();
	//The onchange event is not fired when data is written with javascript	
	setData(field, row);
}

/**
 * Used by the selection list.
 */ 
function comboKey(idSel, event) {
	var keyCode = event.which ? event.which : event.keyCode;

	if (keyCode == 13 || keyCode == 32) {
		textSet(idSel);
	} else if (keyCode == 27) {
		mouseSelect(0);
		document.getElementById(idSel.getAttribute('currentField')).focus();		
	}
}
document.onmousedown = mouseSelect;

