
//-----------------------------------------------
function initSelect(elementId, callMe)
{
	var theSelect = document.getElementById(elementId);	
	theSelect.changed 	= false;
	theSelect.onfocus 	= selectFocussed;
	theSelect.onchange 	= selectChanged;
	theSelect.onkeydown = selectKeyed;
	theSelect.onclick 	= selectClicked;
	theSelect.onblur  	= selectChanged;	
	theSelect.callMe    = callMe;
}

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

	theSelect.callMe(theSelect);
	
	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;
}
