var currentField;
var cancelHideTreeSelect = false;
var cancelShowTreeSelect = false;


var winX = 0, winY = 0;
var displayTreeSelect = true;
function getWinSize() {
	if (typeof(window.innerWidth) == 'number') { //Non-IE
    	winX = window.innerWidth;
	    winY = window.innerHeight;
	} else if( document.documentElement &&
		(document.documentElement.clientWidth || document.documentElement.clientHeight )) { //IE 6+ in 'standards compliant mode'
	    winX = document.documentElement.clientWidth;
    	winY = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { //IE 4 compatible
    	winX = document.body.clientWidth;
	    winY = document.body.clientHeight;
	}
}
function toggleTreeSelect(field, wizardid, versionid, questionid) {
	if (displayTreeSelect) {
		showTreeSelect(field, wizardid, versionid, questionid);
	} else {
		hideTreeSelect();
	}
}
var treeHeight = 200;
var treeWidth = 320;
function showTreeSelect(field, wizardid, versionid, questionid) {
	if (cancelShowTreeSelect) {
		cancelShowTreeSelect = false;
		return;
	}
	displayTreeSelect = false;
	currentField = field;
	
	if (document.getElementById) { // Level 1 DOM
		mobject = document.getElementById('treeselect');
		treemenu = document.getElementById('treeselectmenu');
	} else if (document.all) { // Old IE
		mobject = document.all.treeselect;
		treemenu = document.all.treeselectmenu;
	}

	mobject.frameBorder = 'no';
	mobject.scrolling = 'no';
	mobject.style.width = 0;
	mobject.style.height = 0;
	mobject.src = "selectanswer.jsp?wizardid=" + wizardid + "&versionid=" + versionid + "&questionid=" + questionid + "&languageid=" + currentLanguageId + "&orgunitid=" + currentResultsetOrgunitId;

	mobject.style.left = getAbsolutePosX(currentField);
	mobject.style.top = getAbsolutePosY(currentField) + 20;
	mobject.style.visibility = "visible";
	
	treemenu.frameBorder = 'no';
	treemenu.scrolling = 'no';
	treemenu.style.width = 0;
	treemenu.style.height = 0;
	treemenu.src = 'selectanswer_menu.jsp?wizardid=' + wizardid + "&versionid=" + versionid + "&languageid=" + currentLanguageId;
	
	treemenu.style.left = getAbsolutePosX(currentField);
	treemenu.style.top = getAbsolutePosY(currentField) + 20 + treeHeight;
	treemenu.style.visibility = "visible";
}
function setTreeSize(tree, treemenu) {
	tree.style.width = treeWidth;
	tree.style.height = treeHeight + 'px';
	treemenu.style.width = treeWidth + 'px';
	treemenu.style.height = '30px';
}
function hideTreeSelect() {
	if (!cancelHideTreeSelect) {
		displayTreeSelect = true;
		if (document.getElementById) { // Level 1 DOM
			mobject = document.getElementById('treeselect');
			treemenu = document.getElementById('treeselectmenu');
		} else if (document.all) { // Old IE
			mobject = document.all.treeselect;
			treemenu = document.all.treeselectmenu;
		}
		mobject.style.visibility = "hidden";
		mobject.style.width = 0;
		mobject.style.height = 0;
		mobject.style.left = 0;
		mobject.style.top = 0;
		
		treemenu.style.visibility = "hidden";
		treemenu.style.width = 0;
		treemenu.style.height = 0;
		treemenu.style.left = 0;
		treemenu.style.top = 0;
	} else {
		confirm("cancel hide tree select");
	}
}
function setFormValue(id, name) {
	if (currentField) {
		currentField.value = name;
		var currentFieldHiddenName = currentField.name;
		var displayIndex = currentFieldHiddenName.lastIndexOf('_display');
		currentFieldHiddenName = currentFieldHiddenName.substring(0, displayIndex);
		var currentFieldHidden = document.qform[currentFieldHiddenName];
		if (currentFieldHidden) {
			currentFieldHidden.value = id;
		} else {
			alert("currentFieldHiddenId=" + currentFieldHiddenId + " currentFieldId=" + currentField.name);
		}
		hideTreeSelect();
	} else {
		alert("Error: no currentField to set value in!");
	}
}

function getAbsolutePosX(field) {
	var xpos = field.offsetLeft;
	while (field.offsetParent) {
		field = field.offsetParent;
		if (field) xpos += field.offsetLeft;
	}
	return xpos;
}

function getAbsolutePosY(field) {
	var ypos = field.offsetTop;
	while (field.offsetParent) {
		field = field.offsetParent;
		if (field) ypos += field.offsetTop;
	}
	return ypos;
}

