var eventMap = new Hashtable();

var button_True = "On";
var button_False = "Off";
var duringUpdate=false;

function registerSimple(eventTargetName, aFunction) {
	register(eventTargetName, eventTargetName, aFunction);
}
function register(eventName, targetName, aFunction) {
	var subDict = eventMap.get(eventName);
	if(subDict==undefined) {
		subDict = new Hashtable();
		eventMap.put(eventName, subDict);
	}
	subDict.put(targetName, aFunction);
}
function doButtonFunc(name, aValue) {
	doButtonTextFunc(name, aValue, button_True, button_False);
}
function doButtonTextFunc(name, aValue, trueText, falseText) {
	var aElement = dijit.byId(name);
	if(typeof aElement != 'undefined') {
		duringUpdate = true;
		try {
			aElement.setAttribute("checked", aValue);
			if(aValue==true) {
				aElement.setLabel(trueText);
			} else {
				aElement.setLabel(falseText);
			}
		} catch(e) {
			alert("Exception in SetButtonText " + name+ " => " + aValue);
		}
		duringUpdate = false;
	}
}

function doSliderFunc(name, aValue) {
	var aElement = dijit.byId(name);
	if(typeof aElement != 'undefined') {
		duringUpdate = true;
		aElement.setValue(aValue);
		duringUpdate = false;
	}
}
function doTextFunc(name, aValue) {
	doTextSuffixFunc(name, aValue, "","");
}
function doTextSuffixFunc(name, aValue, prefix, suffix) {
	try {
		var aElement = dijit.byId(name);
		if(typeof aElement != 'undefined') {
			duringUpdate = true;
			aElement.setValue(prefix + unescape(aValue) + suffix);
			duringUpdate = false;
			return;
		}

	} catch(e) {
	}
	aElement = document.getElementById(name);
	if(typeof aElement == 'undefined') {
		aElement = document.getElementsByName(name)[0];
	}
	if(typeof aElement != 'undefined') {
		duringUpdate = true;
		aElement.innerHTML = prefix + unescape(aValue) + suffix;
		duringUpdate = false;
		return;
	}
}

function doClicked(element, aBoolean) {
	if(duringUpdate) return;
	try {
		setBoolean(element.id, aBoolean);
	} catch(err) {
		alert(err);
	}
}
function doValueChanged(element, aValue) {
	if(duringUpdate) return;
	try {
		setInteger(element.id, aValue);
	} catch(err) {
		alert(err);
	}
}


function doEvent(name, aValue) {
	var subDict = eventMap.get(name);
	if(typeof subDict == 'undefined') return;
	subDict.moveFirst();
	while(subDict.next()) {
		var aFunction = subDict.getValue();
		aFunction(subDict.getKey(), aValue);
	}
}


