/* include utils.js before */

function js_validate(fieldId,fieldType,additionalData,alertText,selectField) {
  var field = elid(fieldId);
  if (!field) {
    alert('Validate: no field with id ['+fieldId+']');
    return false;
  }
  if (fieldType == 'text') {
    if (!js_validate_value_regex(field.value,additionalData,alertText)) {
      if (selectField) {
        field.focus();
        field.select();
      }
      return false;
    }
    return true;
  }
  if (alertText) alert('Unknown validation mode '+fieldType);
  return false;
}

function js_validate_value_regex(theValue,regex,alertText) {
  if (theValue.match(regex)) return true;
  if (alertText) alert(alertText);
  return false;
}

var jsv_date_yymmdd_re = /^(\d{2,2})(\d{2,2})(\d{2,2})$/;

function js_validate_value_date_yymmdd(theValue,alertText) {
  var m = safe_match(jsv_date_yymmdd_re,theValue);

  if (m) {
    var yy = date_from_short_format(m[1]);
    var mm = m[2];
    var dd = m[3];
    if (date_verify(yy,mm,dd)) return true;
  }
  if (alertText) alert(alertText);
  return false;
}

function js_validate_value_date_yymmdd_future(theValue,alertText,alertTextF) {
  var m = safe_match(jsv_date_yymmdd_re,theValue);

  if (m) {
    var yy = date_from_short_format(m[1]);
    var mm = m[2]; 
    var dd = m[3]; 
    if (!date_verify(yy,mm,dd)) { 
      if (alertText) alert(alertText);
      return false;
    }
  }
  else {
    if (alertText) alert(alertText);
    return false;
  }
	if (!date_verify_future(yy,mm,dd)) {
		if ((!alertTextF) || (!confirm(alertTextF))) return false;
	}
  return true;
}
