function field2num (fieldname) {
	var i;
	var n = fields.length;

	for (i=0; i<n; i++)
		if (fields[i] == fieldname)
			return i;
	return -1;
}

function jumpdown (e, fieldname) {
	if (window.event || !e.which)
		k = e.keyCode;
	else if (e)
		k = e.which;

	if (k == 8) {
		fieldnum = field2num (fieldname);
		if (fieldnum == -1)
			return;

		numfields = fields.length;

		cur = document.getElementById ( fields[fieldnum]);
		v = cur.value;
		if (v == '') {
			if (fieldnum > 0) {
				prev = document.getElementById ( fields[fieldnum - 1]);
				prev.focus();
				w = prev.value;
				//var r = prev.createTextRange();
				//r.moveStart("character", w.length);
				prev.select();
			}
		}
	}
}

function jumpup (e, fieldname) {
	if (window.event || !e.which)
		k = e.keyCode;
	else if (e)
		k = e.which;

	if ((k >= 37) && (k <= 40))
		return;
	if (k == 45)
		return;


	fieldnum = field2num (fieldname);
	if (fieldnum == -1)
		return;

	numfields = fields.length;

	if (k == 189) {
		cur = document.getElementById ( fields[fieldnum]);
		v = cur.value;
		if (v == '-')
			cur.value = '';
	}

	if (k >= 32) {
		cur = document.getElementById ( fields[fieldnum]);
		v = cur.value;

		if (v.length >= maxlengths[fieldnum]) {
			if (fieldnum < (numfields - 1)) {
				next = document.getElementById ( fields[fieldnum + 1]);
				w = next.value;
				next.focus();
				if (w.length < maxlengths[fieldnum + 1])
					next.value = v.substr(maxlengths[fieldnum], maxlengths[fieldnum + 1]) + next.value;
				w = next.value;
				if (w.length == maxlengths[fieldnum + 1]) {
					//var r = next.createTextRange();
					//r.moveStart("character", 0);
					//r.moveEnd("character", w.length);
					next.select();
				} else {
					//var r = next.createTextRange();
					//r.moveStart("character", w.length);
					next.select();
				}
			}
		}
		if (v.length > maxlengths[fieldnum])
			cur.value = v.substr(0,maxlengths[fieldnum]);
	}
}

