var ERR_NAN = ' waarde is niet numeriek!';
var ERR_EMPTY = ' dit veld is verplicht!';
var ERR_SLASH = ' paden moeten met een slash eindigen!';
var ERR_PWMATCH = ' wachtwoorden zijn niet gelijk!';
var ERR_COUNT = ' veld moet tussen %min en %max karakters lang zijn';
var ERR_NUMERIC = ' Geef a.u.b. een nummer in vanaf ';
var ERR_NONE = '';

function form_submit(fields) {
  submit = true;
  for (i=0; i<fields.length; i++) {
    if (document.getElementById(fields[i])) {
      obj = document.getElementById(fields[i]);
      if (obj.onblur) {
        //this function should be IN this file! (Usually the validate function)
        func=obj.onblur;
        s=func.apply(obj);
        submit=(s==false)?false:submit;
      }
    }
  }
  return submit;
}

function validate(obj, required, numeric, min, max, regexp, regexp_error) {
  //alert("validate: "+obj+'=>'+str+'=>'+required+', '+numeric+', '+min+', '+max+', '+regexp+', '+regexp_error);
  if (!document.getElementById) { return false; }
  str = '';
  if (obj.value){str=obj.value;}
  else if (obj.text){str=obj.text;}
  str=trim(str);
  var err_id = 'err_' + obj.id;
//alert('str:"'+str.length+'" => \n"'+str+'"');
  if (required==true && str.length==0) { 
//alert('empty err => '+err_id);
    document.getElementById(err_id).innerHTML=ERR_EMPTY;
    return false;
  }
  else if (required==false && str.length==0) { 
    return true;
  }
  if (numeric==true) {
    error=validate_numeric(str, min, max);
    if (error!='') { 
      document.getElementById(err_id).innerHTML=error;
      return false;
    }
  }
  else {
    error=validate_text(str, min, max, regexp, regexp_error);
    if (error!='') {
      document.getElementById(err_id).innerHTML=error;
      return false;
    }
  }
  document.getElementById(err_id).innerHTML=ERR_NONE;
  return true;
}

function validate_by_id(id, required, numeric, min, max, regexp, regexp_error) {
  if (!document.getElementById) { return false; }
  obj=document.getElementById(id);
  str = '';
  if (obj.text){str=obj.text;}
  else if (obj.value){str=obj.value;}
  err_id='err_'+id;
  if (required==true && str.length==0) { 
    document.getElementById(err_id).innerHTML=ERR_EMPTY;
    return false;
  }
  if (numeric==true) {
    error=validate_numeric(str, min, max);
    if (error!='') { 
      document.getElementById(err_id).innerHTML=error;
      return false;
    }
  }
  else {
    error=validate_text(str, min, max, regexp, regexp_error);
    if (error!='') {
      document.getElementById(err_id).innerHTML=error;
      return false;
    }
  }
  document.getElementById(err_id).innerHTML=ERR_NONE;
  return true;
}

function validate_size(value, min, max) {
  if (value.length<min || value.length>max) {
	error = ERR_COUNT.replace("%min",min);
	return error.replace("%max",max);
  }
  return '';
}

function validate_numeric(value, min, max) {
  if (isNaN(value)){return ERR_NAN;}
  if (value<min || value>max) {
	error = ERR_NUMERIC.replace("%min",min);
	return ERR_NUMERIC + ' ' + min + ' - ' + max;
  }
  return '';
}

function validate_regexp(value, regexp, error) {
//  if (value.search(regexp)<0) { return error; }
//  return '';
  var re = new RegExp(regexp);
  if (value.match(re)) {
    return '';
  } else {
    return error;
  }
}

function validate_text(value, min, max, regexp, error) {
  temp=validate_size(value,min,max);
  if (temp!=''){return temp;}
  else {
    temp=validate_regexp(value,regexp,error);
    if (temp!=''){return temp;}
  }
  return '';
}

/**
*
*  Javascript trim, ltrim, rtrim
*  http://www.webtoolkit.info/
*
**/
 
function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

