function setVar() {}
window.onload=initPage;
function initPage() {
	if (document.forms[0]!=undefined) {
		initFocus();
		if (document.forms[0]._errjs) {
			window.ISE.parse(document.forms[0]._errjs.value);
		}
	}
	self.scroll(0,0);
}
function initFocus() {
	if (document.forms[0]!=undefined) {
		var elist = document.forms[0].elements;
		var e;
		for (var i = 0; i < elist.length; i++) {
			e = elist[i];
			if (e.type != 'hidden' && e.style.visibility != 'hidden' && e.style.display != 'none' && e.disabled == false) {
				e.focus();
				break;
			}
		}
	}
}
// intellisurvey errors object constructor
window.ISE = {
	_intro: '',
	get_intro: function () { return '<table width=100% border=0 cellspacing=0 cellpadding=2><tr><td class=errmsg>'+this._intro+'</td></tr><tr><td class=errmsg><table width=100% border=0 cellspacing=0 cellpadding=2>' },
	flags: {
		_fAr:	new Array(),
		_x:		0,
		solo:	function() { return this._fAr[0] },
		next:	function() { return this._fAr[1][this._x++] },
		reset:  function() { this._x = 0 }
	},
	errs: {
		_e:		{},
		ise:	this,
		count:	function() { var i=0; for (var e in this._e) i++; return i },
		add:	function(errAr) {
			for (var e in errAr) this._e[errAr[e].qname] = errAr[e];
		},
		del: function (errAr) {
			for (var e in errAr) {
				if (this._e[errAr[e]]) {
					for (var d in this._e[errAr[e]].divs)
						this._cleardivs.push(this._e[errAr[e]].divs[d]);
					delete this._e[errAr[e]];
				}
			}
		},
		get: function() { return this._e },
		list: function() {
			var tmp = new Array();
			for (var e in this._e) tmp.push(this._e[e])
			tmp.sort(this._sorter);
			return tmp;
		},
		_sorter: function(a,b) {
			if (a.qname > b.qname) return 1;
			if (a.qname < b.qname) return -1;
			return 0;
		},
		_cleardivs: new Array()
	},
	parse: function (str) {
		var ero;
		eval("ero = " + str);
		if (!ero) return;
		this.laststatus = ero.status;
		if (ero.status == 'disperr') {
			this._intro = ero.intro;
			this.flags._fAr = ero.flags;
			this.errs.add(ero.errs);
		} else if (ero.status = 'ok') {
			this.errs.del(ero.qname);
		}
	},
	update: function () {
		var msg = '';
		var te = this.errs;
		var ec = te.count();
		if (ec!=0) {
			msg = this.get_intro();
			var flag,e,m,f,div;
			this.flags.reset();
			var ea = te.list();
			for (var i=0; i<ea.length; i++) {
				e = ea[i];
				m = (e && e.msg) ? e.msg : '';
				f = (ec==1)?this.flags.solo():this.flags.next();
				f = f + '';
				if (f.indexOf('/') == -1) f = '/svy/'+document.forms[0].appid.value+'/misc/'+f;
				flag = '<img src="'+f+'" alt="'+m+'" title="'+m+'">&nbsp;';
				m = m.replace("$icon",flag);
				msg += '<tr class=errmsg><td class=errrow valign=top width=25 height=20>'+flag+'</td><td class=errrow>'+m+'</td></tr>';
				for (var d in e.divs) {
					div = document.getElementById(e.divs[d]);
					if (div) div.innerHTML = flag;
				}
			}
			msg += '</td></tr></table></td></tr></table>';
		}
		var div = document.getElementById('status');
		if (div) div.innerHTML = msg;
		while(te._cleardivs.length > 0) {
			var div = document.getElementById(te._cleardivs.shift());
			if (div) div.innerHTML = null;
		}
	}
}
function goBackBtn() {
	var f = document.forms[0];
	f.backBtn.value = 1;
	f.submit();
}
function register(qname,instant) {
	var ques = document.forms[0][qname];
	if (!ques) return;
	if (ques._registered)
		return;
	if (isCRA(ques)) {
		for (var i=0; i<ques.length; i++) {
			addEvent(ques[i], 'click', _updateMulti);
		}
	}
	else if (ques.type == 'checkbox' || ques.type == 'radio') {
		addEvent(ques, 'click', _updateSingle)
	}

	if (instant) {
		addEvent(ques, 'keyup', _rrho);
	} else {
		addEvent(ques, 'change', _rrho);
	}
	ques._registered=1;
}
function registerMulti(e) {
	for(var i=0; i<arguments.length; i++) register(arguments[i]);
}
function _updateMulti(e) {
	var ques = document.forms[0][this.name];
	e.t1 = (this.value) ? this.value : null;
	if (ques._updating==1) return;
	ques._updating=1;
	if (this._updated!=1) {
		this._updated=1;
	}
	for (var i=0; i<ques.length; i++) {
		if (ques[i]._updated!=1) {
			ques[i]._updated=1;
			runChangeEvent(ques[i],e);
			ques[i]._updated=0;
		}
	}
	if (this._updated == 1) runChangeEvent(ques,e);

	this._updated=0;
	ques._updating=0;
}
function _updateSingle (e) {
	var ques = document.forms[0][this.name];
	e.t1 = (this.value) ? this.value : null;
	if (this._updating==1) return;

	this._updating=1;
	runChangeEvent(this,e);
	this._updating=0;
}
function addEvent( obj, type, fn ) {
	if (obj.addEventListener)
		obj.addEventListener( type, fn, false );
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
	}
	if (type=='change') {
		if (isCRA(obj)) {
			var subobj = obj[0];
			if (subobj.masterOnChangeList == undefined) {
				subobj.masterOnChangeList = new Array;
			}
			subobj.masterOnChangeList.push(fn);
		}
		else {
			if (obj.onChangeList == undefined) {
				obj.onChangeList = new Array;
			}
			obj.onChangeList.push(fn);
		}
	}
}
function removeEvent( obj, type, fn ) {
	if (obj.removeEventListener)
		obj.removeEventListener( type, fn, false );
	else if (obj.detachEvent) {
		obj.detachEvent( "on"+type, obj[type+fn] );
		obj[type+fn] = null;
		obj["e"+type+fn] = null;
	}
	if (obj.onChangeList != undefined) {
		var newList = new Array;
		for (var i=0; i < obj.onChangeList.length; i++) {
			if (obj.onChangeList[i] != fn) {
				newList.push(obj.onChangeList[i]);
			}
		}
		obj.onChangeList = newList;
	}
}
function runEvent(obj, evType) {
	if (document.createEvent) {
		var evt;
		if (evType.match(/click|mousedown|mousemove|mouseout|mouseover|mouseup/)) {
			evt = document.createEvent("MouseEvents");
			evt.initMouseEvent(evType,true,true,window,1,0,0,0,0,false,false,false,false,0,obj);
		} else {
			evt = document.createEvent("Events");
			evt.initEvent(evType, true, true);
		}
		evt.t2=obj;
		obj.dispatchEvent(evt);
	} else if (obj.fireEvent) {
		obj.fireEvent("on" + evType);
	}
}
function runChangeEvent(form_elem, e) {
	var ocArray = (isCRA(form_elem)) ? form_elem[0].masterOnChangeList : form_elem.onChangeList;
	if (ocArray != undefined) {
		var evt;
		if (document.createEvent) {
			evt = document.createEvent("HTMLEvents");
			evt.initEvent("change", true, true);
		}
		else if (document.createEventObject) {
			evt = document.createEventObject(e);
		}
		evt.t2=form_elem;
		if (e && e.t1) evt.t1 = e.t1;
		for (var i=0; i < ocArray.length; i++)
			ocArray[i](evt);
	}
}
function stopEvent(e) {
	if (!e) var e = window.event;
	if (e) e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
}
function addSeparators(num, sep) {
	num += '';
	if (typeof(sep) == 'undefined') {sep = ',';}
	var rgx = /(\d)(\d{3})\b/;
	while (rgx.test(num)) {
		num = num.replace(rgx, '$1' + sep + '$2');
	}
	return num;
}
function getQues(qname) {
	var ques = document.forms[0][qname];
        if (!ques) return 0;
	return ((ques.value || ques.value=='') && ! isCRS(ques)) ? ques.value : ques;
}
function countChecked(ques) {
	if (! ques) return 0;
	var reAr = new Array();
	var re;
	for (var i=1; i < arguments.length; i++) {
		reAr.push(arguments[i]);
		var res = '^(' + reAr.join('|') + ')$';
		re = new RegExp(res);
	}
	if (isCheckboxArray(ques)) {
		var c = 0;
		for (var i = 0; i < ques.length; i++)
			if (ques[i].checked && (!re || ques[i].value.match(re))) c++;
		return c;
	}
	else if (isRadioArray(ques)) {
		for (var i = 0; i < ques.length; i++)
			if (ques[i].checked && (!re || ques[i].value.match(re))) return 1;
		return 0;
	}
	else if (isCheckbox(ques))
		return (ques.checked && (!re || ques.value.match(re))) ? 1 : 0
	else if (isSelect(ques))
		return (ques.selectedIndex && (!re || ques[ques.selectedIndex].value.match(re))) ? 1 : 0
	return 0;
}
function anyChecked(ques) {
	var vals;
	if (typeof ques=="object" && (ques.tagName=="INPUT" || (ques[0] && ques[0].tagName=="INPUT"))) {
		vals = getFieldValue(ques);
	} else {
		vals = ques;
	}
	if (!(vals instanceof Array)) {vals = [vals];}
	for (var i=0; i<vals.length; i++) {
		for (var j=1; j<arguments.length; j++) {
			if (vals[i]==arguments[j]) {
				return true;
			}
		}
	}
	return false;
}
var isChecked = anyChecked;
function noneChecked() {return !anyChecked.apply(this, arguments);}
// getFieldValue
// takes input form element and returns its value.  By default no value for an element
// will return 0, unless the second input is true, in which case it'll return an empty string.
function getFieldValue(el, bString) {
	var val = bString ? '' : 0;
	if (typeof el != 'undefined') {
		if (isCheckboxArray(el)) {
			var checked_vals = [];
			for (var i=0; i < el.length; i++) {
				if (el[i].checked) checked_vals.push(el[i].value);
			}
			return checked_vals;
		} else if (isCheckbox(el)) {
			if (el.checked)
				val = [el.value];
		} else if (isRadioArray(el)) {
			for (var i=0; i < el.length; i++) {
				if (el[i].checked) {
					val = el[i].value;
					break;
				}
			}
		} else if (el.type == 'select-one') {
			val = (el.selectedIndex>=0) ? el.options[el.selectedIndex].value : '';
		} else if (typeof el.value != 'undefined') {
			val = el.value;
		}
	}
	if ((typeof val == 'object') || isNaN(Number(val))) {
		return val;
	} else {
		return bString ? val : Number(val);
	}
}
function getFieldText(el) {
	var val;
	if (typeof el == 'undefined') {
		val = '';
	} else if (isCheckboxArray(el)) {
		var checked_vals = new Array();
		for (var i=0; i < el.length; i++) {
			if (el[i].checked) {
				val = _merge_text(el[i]);
				if (val && val != '') checked_vals.push(val);
			}
		}
		return checked_vals;
	} else if (isCheckbox(el)) {
		if (el.checked) {
			return _merge_text(el);
		}
	} else if (isRadioArray(el)) {
		var tie;
		for (var i=0; i < el.length; i++) {
			if (el[i].checked) {
				return _merge_text(el[i]);
			}
		}
	} else if (el.type == 'select-one') {
		return el.options[el.selectedIndex].text;
	} else if (typeof el.value != 'undefined') {
		return el.value;
	}
	return '';
}
function _merge_text(elt) {
	var tie = getAtt(elt, 'otxt') || getAtt(elt, 'tie');
	var ties = tie.split(',');
	var str = '';
	for (var i=0; i<ties.length; i++) {
		if (ties[i].substr(0,2) == '$!') {
			str += getFieldText(document.forms[0][ties[i].substr(2)]);
		}
		else {
			var el = document.getElementById(ties[i]);
			if (el) str += el.innerHTML;
		}
	}
	return str;
}

function addUpdateEvent(form_elem, fn) {
	if (isCRA(form_elem)) {
		 // for radio and checkbox ques, want 'click' event on all members
		for (var i=0; i < form_elem.length; i++) {
			addEvent(form_elem[i], 'click', fn);
		}
	}
	else if (isCheckbox(form_elem)) {
		addEvent(form_elem, 'click', fn);
	}
	// other types just add a regular change event
	else {
		addEvent(form_elem, 'change', fn);
	}
}
function resetFormElement(form_elem) {
	if (form_elem.type == 'select_one') {
		form_elem.selectedIndex = 0;
	} else if (isCRA(form_elem)) {
		for (var i=0; i < form_elem.length; i++) {
			form_elem[i].checked = false;
		}
	} else {
		form_elem.value = '';
	}
}
function isCheckboxArray(el) {
	if ((typeof el != 'undefined') && (typeof el.length == 'number') &&
			(el[0] && el[0].type == 'checkbox')) return true;
}
function isRadioArray(el) {
	if ((typeof el != 'undefined') && (typeof el.length == 'number') &&
			(el[0] && el[0].type == 'radio')) return true;
}
function isCheckbox(el) {
	if ((typeof el != 'undefined') && (el.type == 'checkbox')) return true;
}
function isRadio(el) {
	if ((typeof el != 'undefined') && (el.type == 'radio')) return true;
}
function isCRS(el) {
	if ((typeof el != 'undefined') && ((el.type == 'radio')||(el.type == 'checkbox')||(el.type == 'select-one'))) return true;
}
function isCRA(el) {
	if ((typeof el != 'undefined') && (typeof el.length == 'number' && el[0]) && ((el[0].type == 'radio')||(el[0].type == 'checkbox'))) return true;
}
function isSelect(el) {
	if ((typeof el != 'undefined') && (el.type == 'select-one')) return true;
}
function isSelectMultiple(el) {
	if ((typeof el != 'undefined') && (el.type == 'select-multiple')) return true;
}
function unformatInt(int_str) {
	if (typeof int_str == 'string') {
		int_str = int_str.replace(/^\$/, '');
		int_str = int_str.replace(/%$/, '');
		int_str = int_str.replace(/,(\d\d\d)/g, "$1");
		int_str = int_str.replace(/\.(\d\d\d)/g, "$1");
	}
	var val = Number(int_str);
	return isNaN(val) ? 0 : val;
}
function getValue(str) {
	return str.match(/^\d*(\.\d+)?$/) ? Number(str) : str;
}
function getNumber(qname) {
	var ques = document.forms[0][qname];
	if (isCRA(ques))
		return ques;
	return (ques) ? unformatInt(ques.value) : 0;
}
function getEls(name) {
	if (!name) return;
	var da = new Array();
	var el = document.getElementById(name);
	var i = 1;
	while (el && el != undefined) {
		da.push( el );
		el = document.getElementById(name + ':' + i++);
	}
	return da;
}
function getAtt (el,att) {
	var as = el.getAttribute(att);
	if (!as) {
		var oa = el.attributes[att];
		if (oa) as = oa.value;
	}
	return (as) ? as : "";
}
// registerHandlerObject
function registerHandlerObject (oq, ob, key) {
	if (isCRA(oq)) {
		if (!oq[0]._ho) oq[0]._ho = { _list : {} };
		if (!oq[0]._ho._list[key]) oq[0]._ho._list[key] = new Array();
		oq[0]._ho._list[key].push(ob)
	}
	else {
		if (!oq._ho) oq._ho = { _list : {} };
		if (!oq._ho._list[key]) oq._ho._list[key] = new Array();
		oq._ho._list[key].push(ob)
	}
}
// runRegisteredHandlerObject
function _rrho (e) {
	var name = this.name;
	if (!name) {
		if (!e) e=window.event;
		var t = e.t2;
		if (t && e.type) {
			if (t.name)
				name = t.name
			else if (t[0] && t[0].name)
				name = t[0].name;
		}
	}
	if (!name) return;
	var ques = document.forms[0][name];
	if (!ques) return;

	var ho = (ques[0] && ques[0]._ho) ? ques[0]._ho : ques._ho;
	if (!ho || !ho._list) return;

	for (var key=1; key<=5; key++) {
		if (ho._list[key]) {
			for (var i in ho._list[key]) {
				if (isNaN(Number(i))) { continue }
				ho._list[key][i].run(e);
			}
		}
	}
}
// runHandlerObjectSet
function _rhos (e, el, key) {
	var ho = (el[0] && el[0]._ho) ? el[0]._ho : el._ho;
	if (!ho || !ho._list) return;
	if (key && key > 0) {
		for (var i in ho._list[key]) ho._list[key][i].run(e);
	}
	else {
		for (key=1; key<=5; key++) {
			if (ho._list[key]) {
				for (var i in ho._list[key]) ho._list[key][i].run(e);
			}
		}
	}
}
function clearFormElement(elem,e) {
	var nm = elem.name;
	var f = document.forms[0];
	if (f[nm].length && (isRadio(elem) || isCheckbox(elem))) {
			for (var i=0;i<f[nm].length;i++) {
				f[nm][i].checked=false;
			}
	} else if (isRadio(elem) || isCheckbox(elem)) {
			f[nm].checked=false;
	} else if (isSelect(elem) || isSelectMultiple(elem)) {
		resetFormElement(elem);
	} else {
		f[nm].value='';
	}
	runChangeEvent(elem,e);
}
