
function captureEvent() {
	var args = captureEvent.arguments;
	var len = args.length;
	var component = getElement(args[0]);

	if (component) {
		if (component.type == "text" || component.type == "textarea") {
			add_event_listener_al(component, 'change', eval(args[1]));
			add_event_listener_al(component, 'keyup', eval(args[1]));
		} else if (component.type == "checkbox" || component.type == "radio") {
			var components = document.getElementsByName(args[0]);

			if (components.length >= 1) {
				for ( var u = 0; u < components.length; u++) {
					add_event_listener_al(components[u], 'click', eval(args[1]));
				}
			}
		} else if (component.type == "select-multiple") {
			// add_event_listener_al(component, 'click', eval(args[1]));
			add_event_listener_al(component, 'change', eval(args[1]));
		} else {
			add_event_listener_al(component, 'change', eval(args[1]));
		}
	}
}

function getElement(element_id) {
	var element = null;

	if (document.getElementById && document.getElementById(element_id)) {
		element = document.getElementById(element_id);
	} else {
		var elements = document.getElementsByName(element_id);
		if (elements != null && elements.length > 0) {
			element = elements[0];
		}
	}
	return element;
}

function getValue(qasetId) {

	var element_id = 'q' + qasetId;
	var qsid = getElement(element_id);

	if (qsid != null) {
		var scqaid = qsid.value;

		var answer = getElement(scqaid);

		if (answer) {
			if (answer.type == "checkbox") {
				var an = document.getElementsByName(scqaid);

				if (an.length >= 1) {
					var names = new Array();
					var j = 0;
					for ( var i = 0; i < an.length; i++) {
						if (an[i].checked) {
							names[j] = an[i].value;
							j++;
						}
					}
					return names;
				}
				return 'null';
			} else if (answer.type == "radio") {
				var an = document.getElementsByName(scqaid);
				if (an.length >= 1) {
					for ( var i = 0; i < an.length; i++) {
						if (an[i].checked) {
							return an[i].value;

						}
					}
				}
				return 'null'
			} else if (answer.type == "select-multiple") {

				if (answer.selectedIndex != -1) {
					var names = new Array();
					var j = 0;
					for ( var i = 0; i < answer.options.length; i++) {
						if (answer.options[i].selected) {
							names[j] = answer.options[i].value;
							j++;
						}
					}
					return names;
				}
				return 'null';
			} else if (answer.type == "select-one") {
				return getAnswer(answer.value, '_NA');
			} else {
				return getAnswer(answer.value, '');
			}
		}
	}
}

function getAnswer(answer, regExp) {
	var ans = trim(answer);
	if (ans == regExp)
		return 'null';
	else
		return ans;
}

function show_al() {
	var args = show_al.arguments;
	var len = args.length;

	for ( var i = 0; i < len; i++) {
		var component = document.getElementsByName(args[i]);
		if (component != null) {
			if (component.length >= 1) {
				for ( var u = 0; u < component.length; u++) {
					component[u].style.display = document
							.getElementById('buttonRow').style.display;
					enable(args[i]);
				}
			}
		}
	}
}

function hide_and_disable_al() {
	var args = hide_and_disable_al.arguments;
	var len = args.length;

	for ( var i = 0; i < len; i++) {
		var component = document.getElementsByName(args[i]);
		if (component != null) {
			if (component.length >= 1) {
				for ( var u = 0; u < component.length; u++) {
					component[u].style.display = 'none';
					disable(args[i]);
				}
			}
		}
	}
}

function disable_al() {
	var args = disable_al.arguments;
	var len = args.length;
	for ( var i = 0; i < len; i++) {
		var component = document.getElementsByName(args[i]);
		if (component != null) {
			if (component.length >= 1) {
				for ( var u = 0; u < component.length; u++) {
					disable(args[i]);
				}
			}
		}
	}

}

function updateNode(node, flag) {
	var thisChild = node.firstChild;

	while (thisChild != null) {
		if (thisChild.nodeType == 1 && thisChild.type != null && thisChild.getAttribute('type') != 'hidden') {
			thisChild.disabled = flag;
		}
		updateNode(thisChild, flag);
		thisChild = thisChild.nextSibling;
	}
}

function disable(qasetId) {
	var parents = document.getElementsByName(qasetId);
	if (parents != null) {
		for ( var u = 0; u < parents.length; u++) {
			updateNode(parents[u], true);
		}
	}
}

function enable(qasetId) {
	var parents = document.getElementsByName(qasetId);
	if (parents != null) {
		for ( var u = 0; u < parents.length; u++) {
			updateNode(parents[u], false);
		}
	}
}

// broswer, os, version detecting code
var detect = navigator.userAgent.toLowerCase();
var OS, browser, version, total, thestring;

if (checkIt('konqueror')) {
	browser = "Konqueror";
	OS = "Linux";
} else if (checkIt('safari'))
	browser = "Safari"
else if (checkIt('omniweb'))
	browser = "OmniWeb"
else if (checkIt('opera'))
	browser = "Opera"
else if (checkIt('webtv'))
	browser = "WebTV";
else if (checkIt('icab'))
	browser = "iCab"
else if (checkIt('msie'))
	browser = "Internet Explorer"
else if (!checkIt('compatible')) {
	browser = "Netscape Navigator"
	version = detect.charAt(8);
} else
	browser = "An unknown browser";

if (!version)
	version = detect.charAt(place + thestring.length);

if (!OS) {
	if (checkIt('linux'))
		OS = "Linux";
	else if (checkIt('x11'))
		OS = "Unix";
	else if (checkIt('mac'))
		OS = "Mac"
	else if (checkIt('win'))
		OS = "Windows"
	else
		OS = "an unknown operating system";
}

function checkIt(string) {
	place = detect.indexOf(string) + 1;
	thestring = string;
	return place;
}

var isIE = (browser == "Internet Explorer");

/**
 * Adds an event listner
 */
function add_event_listener_al(element, eventType, listner) {
	if (isIE) {
		element.attachEvent('on' + eventType, listner);
	} else {
		element.addEventListener(eventType, listner, false);
	}
}


function iE(lhs, rhs) {
	// for checkboxes,list it is arrya,for others it is string
	if (lhs instanceof Array) {
		if (lhs.length > 0) {
			for ( var i = 0; i < lhs.length; i++) {
				if (lhs[i].toUpperCase() == rhs.toUpperCase())
					return true;
			}
		}
		return false;
	}
	return (lhs.toUpperCase() == rhs.toUpperCase());
}
function iNE(lhs, rhs) {
	return (!iE(lhs, rhs));
}

function ltrim(s) {
	if (s != null && s.length > 0)
		return s.replace(/^\s*/, "")
	else
		return "";
}

function rtrim(s) {
	if (s != null && s.length > 0)
		return s.replace(/\s*$/, "");
	else
		return "";
}

function trim(s) {
	return rtrim(ltrim(s));
}



