/**
 * Accessible select
 * based on: http://themaninblue.com/writing/perspective/2004/10/19/
 * adaption by Peppered
 * @note needs some rework (make it jquery style/plugin)
 * 
 */

function initSelect(sSelectId) {
	var theSelect = document.getElementById(sSelectId);
	if (theSelect === null) {
		return false;
	}
	theSelect.changed = false;
	theSelect.onfocus = selectFocussed;
	theSelect.onchange = selectChanged;
	theSelect.onkeydown = selectKeyed;
	theSelect.onclick = selectClicked;
	
	return true;
}

function selectChanged(theElement) {
	var theSelect;
	
	if (theElement && theElement.value) {
		theSelect = theElement;
	}
	else {
		theSelect = this;
	}
	
	if (!theSelect.changed)	{
		return false;
	}
	
	this.form.submit();
	return true;
}

function selectClicked() {
	this.changed = true;
}

function selectFocussed() {
	this.initValue = this.value;	
	return true;
}

function selectKeyed(e) {
	var theEvent;
	var keyCodeTab = "9";
	var keyCodeEnter = "13";
	var keyCodeEsc = "27";
	
	if (e) {
		theEvent = e;
	}
	else {
		theEvent = event;
	}

	if ((theEvent.keyCode == keyCodeEnter || theEvent.keyCode == keyCodeTab) && this.value != this.initValue) {
		this.changed = true;
		selectChanged(this);
	}
	else if (theEvent.keyCode == keyCodeEsc) {
		this.value = this.initValue;
	}
	else {
		this.changed = false;
	}
	
	return true;
}
