var menuOpen = false;
var menuLi;
function selectReplacement(obj) {
	obj.className += ' replaced';
	var ul = document.createElement('ul');
	ul.className =  'selectReplacement';
	var opts = obj.options;
	for (var i=0; i<opts.length; i++) {
		var selectedOpt;
		if (opts[i].selected) {
			selectedOpt = i;
			break;
		} else {
			selectedOpt = 0;
		}
	}
	for (var i=0; i<opts.length; i++) {
		var li = document.createElement('li');
		var txt = document.createTextNode(opts[i].text);
		li.appendChild(txt);
		li.selIndex = opts[i].index;
		if(i == opts.length-1){
			li.id += 'selectLast';
		}
		else if(i == 1){
			li.id += 'selectFirst';
		}
		li.selectID = obj.id;
		if(opts[i].value != -1){
			li.onclick = function(e) {
				//alert(this.selIndex);
				menuLi = li;
				menuOpen = false;
				//alert("1 - Select");
				selectMe(this);
			}
		}
		if (i == selectedOpt) {
			menuLi = li;
			li.className = 'selected';
			li.onclick = function(e) {
				//alert("2 - Open");
				this.parentNode.className += ' selectOpen';	
				
				this.onclick = function(e) {
					//alert("3 - Close");
					menuOpen = false;
					menuLi = this;
					selectMe(this);
				}
				popBubble(e);
				menuOpen = true;
			}
		}
		if (window.attachEvent) {
			li.onmouseover = function() {
				this.className += ' hover';
			}
			li.onmouseout = function() {
				this.className = 
				this.className.replace(new RegExp(" hover\\b"), '');
			}
		}
		ul.appendChild(li);
	}
	// add the input and the ul
	obj.parentNode.appendChild(ul);
}
function selectMe(obj) {
	var lis = obj.parentNode.getElementsByTagName('li');
	for (var i=0; i<lis.length; i++) {
		if (lis[i] != obj) { // not the selected list item
			lis[i].className='';
			objList = document.getElementById(obj.selectID);
			if(objList.options[i].value != -1){
				lis[i].onclick = function(e) {
						//alert("4 - Select");
						menuLi = this;
						menuOpen = false;
						selectMe(this);
				}
			}
		} else {
			setVal(obj.selectID, obj.selIndex);
			obj.className='selected';
			obj.parentNode.className = 
				obj.parentNode.className.replace(new RegExp(" selectOpen\\b"), '');
			obj.onclick = function(e) {
				//alert("5 - Open");
				menuLi = obj;
				obj.parentNode.className += ' selectOpen';
				this.onclick = function(e) {
					//alert("6 - Close");
					menuLi = this;
					menuOpen = false;					
					selectMe(this);
				}
				popBubble(e);
				menuOpen = true;
			}
		}
	}
}
function setVal(objID, selIndex) {
	var obj = document.getElementById(objID);

	if(obj.options[selIndex].value != -1){
		obj.selectedIndex = selIndex;
		obj.onchange()
	}
	else{
		newLi = menuLi.parentNode.getElementsByTagName('li');
		newLi = newLi[1];
		closeSel(newLi);
	}

}
function setForm() {
	var s = document.getElementById('JumpToMenu');
	selectReplacement(s);
	
	document.onclick = function(){
		if(menuOpen == true){
			//alert("BODY");
			closeSel(menuLi);
		}
	}
}
function closeSel(obj) {
	if(obj.parentNode.className){
		obj.parentNode.className =	obj.parentNode.className.replace(new RegExp(" selectOpen\\b"), '');
		selectMe(obj);
	}
}
//Stops events from "bubbling up" to document-level
function popBubble(e) {
	if (!e){
		var e = window.event;
		e.cancelBubble = true;
	}
	if (e.stopPropagation)
		e.stopPropagation();
}
