/***
*
* Credit to http://old.easy-designs.net/articles/replaceSelect2/ for the inspiration for this
*
***/
var countReplacements=0;
var onChangeHandlers = new Array();
var currentSelection=0;
function selectReplacement(obj) {
	onChangeHandlers[obj.id]= obj.onchange;
	obj.className += ' replaced';
	var div = document.createElement('div');
	div.className = 'selectReplacement';
	div.style.zIndex = 100-countReplacements;
	countReplacements++;
	var ul = document.createElement('ul');
	ul.className = 'selectReplacement';
	var opts = obj.options;
	var selectedOpt = (!obj.selectedIndex) ? 0 : obj.selectedIndex;
	currentSelection = selectedOpt;
	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 = function() {
			selectMe(this);
		};
		if (i==0){
			li.id="first";
		}
		if (i == selectedOpt) {
			if (i==0){
				li.id="selectedfirst";
			}
			li.className = 'selected';
			li.onclick = function() {
				this.parentNode.className += ' selectOpen';
				this.onclick = function() {
					selectMe(this);
				};
			};
		}
		if (window.attachEvent) {
			li.onmouseover = function() {
				this.className += ' hover';
			};
			li.onmouseout = function() {
				this.className =
				this.className.replace(new RegExp(" hover\\b"), '');
			};
		}
		ul.appendChild(li);
	}
	obj.onfocus = function() {
		ul.className += ' selectFocused';
	};
	obj.onblur = function() {
		ul.className = 'selectReplacement';
	};
	obj.onchange = function() {
		var idx = this.selectedIndex;
		selectMe(ul.childNodes[idx]);
	};
	obj.onkeypress = obj.onchange;
	div.appendChild(ul);
	obj.parentNode.insertBefore(div,obj);
}
function selectMe(obj) {
	// Do not allow selecting of label
	if (obj.selIndex==0){
		obj.parentNode.className = obj.parentNode.className.replace(new RegExp(" selectOpen\\b"), '');
		var lis = obj.parentNode.getElementsByTagName('li');
		for (var i=0; i<lis.length; i++) {
			if (i==0){
				lis[i].id="first";
				lis[i].onclick = function() {
					selectMe(this);
				};
			} else if (i==currentSelection){
				lis[i].onclick = function() {
					obj.parentNode.className += ' selectOpen';
				};				
			} else {
				//lis[i].className='';
				obj.onclick = function() {
					this.onclick = function() {
						selectMe(this);
					};
				};
			}
		}
		return;
	}
	currentSelection = obj.selIndex;
	var lis = obj.parentNode.getElementsByTagName('li');
	for (var i=0; i<lis.length; i++) {
		if (lis[i] != obj) {
			if (i==0){
				lis[i].id="first";
			}
			lis[i].className='';
			lis[i].onclick = function() {
				selectMe(this);
			};
		} else {
			if (i==0){
				lis[i].id="selectedfirst";
			}
			setVal(obj.selectID, obj.selIndex);
			obj.className='selected';

			obj.parentNode.className = obj.parentNode.className.replace(new RegExp(" selectOpen\\b"), '');
			obj.onclick = function() {
				obj.parentNode.className += ' selectOpen';
				this.onclick = function() {
					selectMe(this);
				};
			};
		}
	}
}
function setVal(objID,val) {
	var obj = document.getElementById(objID);
	obj.selectedIndex = val;
	try {
		onChangeHandlers[objID]();
	}
	catch (e){
	};
}

var thingsSetup=false;
function setForm(target) {
	var container = document.getElementById(target);
	if (!thingsSetup && container){
		thingsSetup = true;
		var s = container.getElementsByTagName('select');
		for (var i=0; i<s.length; i++) {
			selectReplacement(s[i]);
		}
	}
}

function setupThings(){
	if (typeof ignoreThings =="function"){
		ignoreThings();
	}
	else {
		if (document.all && !window.print){
		}
		else {
			setForm('jflanguageselection');
		}
	}
}

if (window.attachEvent) window.attachEvent("onload", setupThings);
else if (window.addEventListener) window.addEventListener("load",setupThings,false);
else window.onload=setupThings;


