
var __fauxSelect_oldDocumentOnMouseDown;
var __fauxSelect_currentSelect;
var __fauxSelect_currentSelected;

function openFauxSelect(e){

	var evt = new Event(e);
	var oSelectedElement = evt.target.tagName == 'LI' ? evt.target : evt.target.parentNode;
	var oSelectedVis = document.createElement('DIV');
	oSelectedElement.parentNode.className = 'visible';
	__fauxSelect_currentSelect = oSelectedElement.parentNode.parentNode;
	__fauxSelect_currentSelected = oSelectedElement;
	oSelectedElement.onmousedown = null;

	oSelectedVis.id = '__fauxSelectVis';
	oSelectedVis.innerHTML = oSelectedElement.innerHTML.replace(/<[^>]*>/gi, '');
	oSelectedVis.className = 'selectedVis';

	__fauxSelect_oldDocumentOnMouseDown = document.onmousedown;
	document.onmousedown = function(e){
		var evt = new Event(e);
		if(
			evt.target.id == '__fauxSelectVis' || evt.target.tagName == 'HTML' || evt.target.tagName == 'BODY' || 
			(
				evt.target.parentNode.id.indexOf('fauxSelect') == -1 && 
				evt.target.parentNode.parentNode.id.indexOf('fauxSelect') == -1 && 
				evt.target.parentNode.parentNode.parentNode.id.indexOf('fauxSelect') == -1 && 
				evt.target.parentNode.parentNode.parentNode.parentNode.id.indexOf('fauxSelect') == -1
			)
		){
			__fauxSelect_currentSelect.getElementsByTagName('ul')[0].className = '';
			__fauxSelect_currentSelect.removeChild(document.getElementById('__fauxSelectVis'));
			__fauxSelect_currentSelected.onmousedown = openFauxSelect;
			document.onmousedown = __fauxSelect_oldDocumentOnMouseDown;
		}
	}

	oSelectedElement.parentNode.parentNode.insertBefore(oSelectedVis, oSelectedElement.parentNode);
	oSelectedElement.parentNode.style.left = oSelectedVis.offsetLeft + 'px';
	oSelectedElement.parentNode.style.top = oSelectedVis.offsetTop + oSelectedVis.offsetHeight - 1 + 'px';
}

initFauxSelect = function(){
	if(document.getElementById){
		var oTags = document.getElementsByTagName('*');
		var oListItems;
		for(var i = 0; i < oTags.length; i++){
			if(oTags[i].className.indexOf('fauxSelect') != -1){
				oListItems = oTags[i].getElementsByTagName('li');
				for(var ii = 0; ii < oListItems.length; ii++){
					if(oListItems[ii].className.indexOf('selected') != -1){
						oListItems[ii].onmousedown = openFauxSelect;
						break;
					}
				}
			}
		}
	}
}

addLoadEvent(initFauxSelect);
