function createClosure(){
	var args = createClosure.arguments;
	if(args.length > 0){
		var argStrArr = new Array();
		for(var i=1; i<args.length; i++)
			argStrArr.push('args['+i+']');
		return function(){
				eval('args[0]('+argStrArr.join(',')+')');
			};
	}
	else{
		return function(){
				args[0]();
			};
	}
}

function li_OnClick(li, focusShield){
	if((new RegExp(" selectOpen\\b")).test(li.parentNode.className)){
		selectMe(li, focusShield);
	}
	else{
		focusShield.onclick();
		focusShield.style.display = 'block';
		li.parentNode.className += ' selectOpen';
	}
}

function selectReplacement(obj, focusShield) {
	//alert('selectReplacement(obj, focusShield)')
	obj.className += ' replaced';
	var ul = document.createElement('ul');

	var origOnClick = focusShield.onclick;
	focusShield.onclick = function(){
		if(origOnClick)
			origOnClick();
		focusShield.style.display = 'none';

		var lis = ul.childNodes;
		for(var i=0; i<lis.length; i++){
			if(lis[i].tagName && lis[i].tagName.toLowerCase() == 'li' && lis[i].className != 'selected'){
				//lis[i].className='';
			}
		}
		ul.className = ul.className.replace(new RegExp(" selectOpen\\b"), '');
	}

	ul.className = 'selectReplacement';
	var opts = obj.options;
	var selectedOpt = (!obj.selectedIndex) ? 0 : obj.selectedIndex;
	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 = i;
		li.selectID = obj.id;
		li.onclick = createClosure(li_OnClick, li, focusShield)
		if (i == selectedOpt)
			li.className = 'selected';

		if (window.attachEvent) {
			li.onmouseover = function() {
					//alert('annonymous:6')
					this.className += ' hover';
				};
			li.onmouseout = function() {
					//alert('annonymous:7')
					this.className = this.className.replace(new RegExp(" hover\\b"), '');
				};
		}
		ul.appendChild(li);
	}
	obj.parentNode.insertBefore(ul,obj);
}
function selectMe(obj, focusShield) {
	//alert('selectMe(obj, focusShield)');
	var lis = obj.parentNode.getElementsByTagName('li');
	for (var i=0; i<lis.length; i++) {
		if (lis[i] != obj) {
			lis[i].className='';
		 }
		 else {
			setVal(obj.selectID, obj.selIndex);
			obj.className='selected';
			focusShield.style.display = 'none';
			obj.parentNode.className = obj.parentNode.className.replace(new RegExp(" selectOpen\\b"), '');
		}
	}
}
function setVal(objID,val) {
	//alert('setVal(objID,val)');
	var obj = document.getElementById(objID);
	obj.selectedIndex = val;
}
function setForm() {
	//alert('setForm()')
	var focusShield = document.body.appendChild(document.createElement('div'));
	focusShield.style.position = 'fixed';
	focusShield.style.top = '0px';
	focusShield.style.right = '0px';
	focusShield.style.width = '100%';
	focusShield.style.height = '100%';
	focusShield.style.zIndex = '1';
	focusShield.style.display = 'none';
	var s = document.getElementsByTagName('select');
	for (var i=0; i<s.length; i++) {
		selectReplacement(s[i], focusShield);
	}
}
window.onload = function() {
	(document.all && !window.print) ? null : setForm();
};
