ui = window['ui'] || {};
ui.DecisionTree = function(parentElement) {

	var parent = parentElement || document.getElementsByTagName('body')[0];
	var instance = 0;
	var maindiv;

	this.dispose = function() {
		if(!maindiv) return;
		parent.removeChild(maindiv);
	}
	this.question = function() {
	
		var conf = arguments[0] || {};
		var questionText = conf['questionText'] || 'question text';
		var options = conf['options'] || [];
		var parentInstance = arguments[1];
		
		instance++;
		
		parent.appendChild(['div', {'id' : 'QuestionDiv'+instance}].parseJsonML(function(el) {
		
			maindiv = el;
			
			el.appendChild(['div'].parseJsonML(function(el) {
				el.innerHTML = questionText;
				return el;
			}));
			
			el.appendChild(['p'].parseJsonML(function(el) {
				for(var i=0; i < options.length; i++) {
					if(!options[i]) continue;
					el.appendChild(['label', {'for' : 'Qanswer'+i+''+instance}].parseJsonML(function(el) {
						el.innerHTML = '<input type="radio" name="answer" id="Qanswer'+i+''+instance+'"/>'+options[i]['optionText'];
						return el;
					}));
				}
				return el;
			}));
			
			if(!parentInstance) return el;
			
			el.appendChild(['p'].parseJsonML(function(linkdiv) {
				linkdiv.appendChild(['a', {'href' : '#'}, '<< back'].parseJsonML(function(link) {
					link.onclick = function() {
						parent.removeChild(el);
						$('QuestionDiv'+parentInstance).style.display = 'block';
						return false;
					}
					return link;
				}));
				return linkdiv;
			}));
			
			return el;
			
		}));
		
		for(var i=0; i < options.length; i++) {
			if(!options[i]) continue;
			(function(i, inst, env, opts) {
				$('Qanswer'+i+''+instance).onclick = function() {
					$('QuestionDiv'+inst).style.display = 'none';
					for(var j=0; j < opts.length; j++) {
						if(!opts[j]) continue;
						$('Qanswer'+j+''+inst).checked = false;
					}
					env.question(options[i]['ifselected'], inst);
				}
			})(i, instance, this, options);
		}
		
	}
}
