function toMaxSize(field, size) {
    return !forms_truncate(field, size);
}

function forms_truncate(field, size) {
    if (field.value.length > size) {
	field.value = field.value.substring(0, size);
	return true;
    }
    return false;
}

function forms_clearSelect(field) {
  var count = field.length;
  while (count-- > 0) {
    field.options[0] = null;
  }
}

function forms_fillSelect(field, values, selected) {
  forms_clearSelect(field);
  forms_appendSelect(field, values, selected);
}

function forms_nextSelected(field, start) {
  var opts = field.options;
  for (;start < opts.length; start++) {
    if (opts[start].selected) {
      return start;
    }
  }
  return -1;
}

function forms_appendSelect(field, values, selected) {
  var len = field.length;
  var selectedIndex = -1;

  var i;
  for (i = 0; i < values.length; i += 2, len++) {
    var o = new Option(values[i], values[i+1]);
    if (o.value == selected) {
	selectedIndex = len;

	// last.value = "***";
    }
    field.options[field.length] = o;
  }

  if (selectedIndex >= 0) {
    field.selectedIndex=selectedIndex;
  }
}

function forms_fillSelectMulti(field, values, selectedList) {
  forms_clearSelect(field);
  forms_appendSelectMulti(field, values, selectedList);
}

function forms_selectFromArray(field, selectedList) {
  var i;
  var j;
  var opt;
  for (i=0, j=0; i < field.options.length && j < selectedList.length; i++) {
    opt = field.options[i];
    if (opt.value == selectedList[j]) {
      opt.selected = true;
      j++;
    }
  }
}

function forms_appendSelectMulti(field, values, selectedList) {
  var selIndex = 0;
  var sel;
  var i;
  for (i = 0; i < values.length; i += 2) {
    var o = new Option(values[i], values[i+1]);
    if (selectedList && (selIndex < selectedList.length)) {
	sel = selectedList[selIndex];
	if (sel == o.value) {
	    o.selected = true;
	    selIndex++;
	}
    }
    field.options[field.length] = o;
  }
}

function forms_selectedValue(field) {
    var i = field.selectedIndex;
    if (i < 0) {
	return null;
    } else {
	return field.options[i].value;
    }
}

function forms_selectedCount(field) {
  var i;
  var count;
  for (i=0, count=0; i < field.length; i++) {
    if (field[i].selected) { count++; }
  }
  return count;
}

function forms_selectedRadio(fieldArray) {
  var i;

  if (!fieldArray.length) {
    if (!fieldArray.checked) {
      return null;
    } else {
      return fieldArray;
    }
  }
 
  for (i = 0; i < fieldArray.length; i++) {
    if (fieldArray[i].checked) {
      return fieldArray[i];
    }
  }
  return null;
}


