function empty(txt_field)
{
	txt_field.value = trim(txt_field.value);

	if ( txt_field.value.length == 0 )
	{
	    txt_field.focus();
	    return (true);
	}
	else
	{
	   return (false);
	}
}

function isEmpty(val)
{
	return (trim(val).length == 0);
}

function checkempty(field)
{
	return ( trim(field.value).length == 0 );
}

function ltrim( value ) {

	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");

}

function rtrim( value ) {

	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");

}

function trim( value ) {

	return ltrim(rtrim(value));

}

function clear_spaces( value ) {

	return trim(value.replace(/\s*/g, ''));

}

function valuesize(field,maxlength) {
	empty(field);
	if (parseInt(field.value.length)<maxlength)
		return false;
	else
		return true;
}


function isInt(aValue)
{
	var i = aValue.value;

	var parsedVal = parseInt(i);
	return ( (parsedVal == i) && (!isNaN(parsedVal)) );
}

function isNumeral(aValue)
{
	var len = aValue.length-1;
	var i = len;

	while (i >= 0) {
		if ( (aValue.charAt(i) < "0") || (aValue.charAt(i) > "9") )
			return false;
		i--;
	}

	return true;
}


function checkPerc(aVal)
{
	var thisVal = aVal.replace(".", ",");
	var testInt = thisVal.replace(",", "");
    var len = thisVal.length-1;

    var i = thisVal.lastIndexOf(",");
	if (i == -1)
		return ( (thisVal.length <= 3) && (isNumeral(testInt)) );

	if ( ((len - i) == 2) || ((len - i) == 1) )
		if (i <= 3)
			return (isNumeral(testInt));

	return false;
}

function checkDecimal(aVal, scale, precision)
{
	if (aVal.length == 0)
		return true;

	var thisVal = aVal.replace(".", ",");
	var testInt = thisVal.replace(",", "");
    var len = thisVal.length-1;

    var i = thisVal.lastIndexOf(",");
	if (i == -1)
		return ( (thisVal.length <= scale) && (isNumeral(testInt)) );

	if ( ((len - i) <= precision) && ((len - i) != 0) )
		if (i <= scale)
			return (isNumeral(testInt));

	return false;
}


function isEmail(argvalue) {

  if (argvalue.indexOf(" ") != -1)
    return false;
  else if (argvalue.indexOf("@") == -1)
    return false;
  else if (argvalue.indexOf("@") == 0)
    return false;
  else if (argvalue.indexOf("@") == (argvalue.length-1))
    return false;

  var arrayString = argvalue.split("@");
  //var retSize = customSplit(argvalue, "@", "arrayString");

  if (arrayString[1].indexOf(".") == -1)
    return false;
  else if (arrayString[1].indexOf(".") == 0)
    return false;
  else if (arrayString[1].charAt(arrayString[1].length-1) == ".") {
    return false;
  }

  return true;

}
function isURL(argvalue) {

  if (argvalue.indexOf(" ") != -1)
    return false;
  else if (argvalue.indexOf("http://") == -1)
    return false;
  else if (argvalue == "http://")
    return false;
  else if (argvalue.indexOf("http://") > 0)
    return false;

  argvalue = argvalue.substring(7, argvalue.length);
  if (argvalue.indexOf(".") == -1)
    return false;
  else if (argvalue.indexOf(".") == 0)
    return false;
  else if (argvalue.charAt(argvalue.length - 1) == ".")
    return false;

  if (argvalue.indexOf("/") != -1) {
    argvalue = argvalue.substring(0, argvalue.indexOf("/"));
    if (argvalue.charAt(argvalue.length - 1) == ".")
      return false;
  }

  if (argvalue.indexOf(":") != -1) {
    if (argvalue.indexOf(":") == (argvalue.length - 1))
      return false;
    else if (argvalue.charAt(argvalue.indexOf(":") + 1) == ".")
      return false;
    argvalue = argvalue.substring(0, argvalue.indexOf(":"));
    if (argvalue.charAt(argvalue.length - 1) == ".")
      return false;
  }

  return true;

}

function customSplit(strvalue, separator, arrayName) {
  var n = 0;

  if (separator.length != 0) {
    while (strvalue.indexOf(separator) != -1) {
      eval("arr"+n+" = strvalue.substring(0, strvalue.indexOf(separator));");
      strvalue = strvalue.substring(strvalue.indexOf(separator)+separator.length,
          strvalue.length+1);
      n++;
    }
    eval("arr" + n + " = strvalue;");
    arraySize = n+1;
  }
  else {
    for (var x = 0; x < strvalue.length; x++) {
      eval("arr"+n+" = \"" + strvalue.substring(x, x+1) + "\";");
      n++;
    }
    arraySize = n;
  }

  eval(arrayName + " = new makeArray(arraySize);");

  for (var i = 0; i < arraySize; i++)
    eval(arrayName + "[" + i + "] = arr" + i + ";");

  return arraySize;
}

function Trim(sInString) {
  sInString = sInString.replace( /^\s+/g, "" );// strip leading
  return sInString.replace( /\s+$/g, "" );// strip trailing
}

function radioValue(radioButton) {
    var radioRef = radioButton 
    if (typeof radioRef.length != 'number') radioRef = Array(radioRef); 
	for (i=0;i<radioRef.length;i++)
	{
		if (radioRef[i].checked)
			return radioRef[i].value;
	}
	return -1;
}

function checkDate (day,month,year)
{
  //alert( day + month+ year);
	if (empty(year) || year.value < 1920 || year.value > 2020)
		return "Jaar moet tussen 1920 en 2020 liggen";
  var maxday = 0;
	var monthName = "";

	switch (month.value) {
		case "1":
			monthName = "januari";
			break;
		case "2":
			monthName = "februari";
			break;
		case "3":
			monthName = "maart";
			break;
		case "4":
			monthName = "april";
			break;
		case "5":
			monthName = "mei";
			break;
		case "6":
			monthName = "juni";
			break;
		case "7":
			monthName = "juli";
			break;
		case "8":
			monthName = "augustus";
			break;
		case "9":
			monthName = "september";
			break;
		case "10":
			monthName = "oktober";
			break;
		case "11":
			monthName = "november";
			break;
		case "12":
			monthName = "december";
			break;
	}


	switch (month.value) {
		case "1":
		case "3":
		case "5":
		case "7":
		case "8":
		case "10":
		case "12":
			maxday = 31;
			break;
		case "2":
			if (LeapYear(year.value))
				maxday = 29
			else
				maxday = 28;
			break;
		case "4":
		case "6":
		case "9":
		case "11":
			maxday = 30;
			break;
	}
	
    if (day.value == "")
    {
        return "Vul een dag in.";
    }
    if (isNaN(day.value))
    {
        return "'" + day.value + "'" + " is geen geldige dag.";   
    }
	if ((maxday < day.value) || (day.value < 1))
	{
		if (maxday < 30)
		{
		  return ("De maand " + monthName + " heeft maar " + maxday + " dagen in " + year + ".");
		}
		else
		  return ("De maand " + monthName + " heeft maar " + maxday + " dagen" + ".");
	}
	return "";
}

function LeapYear(intYear)
{
	if (intYear % 100 == 0)
	{
		if (intYear % 400 == 0) { return true; }
	}
	else
	{
		if ((intYear % 4) == 0) { return true;	}
	}
	return false;
}

function CheckDateControl( name )
{
    return checkDate( getFirstElementByName( name + "_day" ),
                      getFirstElementByName( name + "_month" ), 
                      getFirstElementByName( name + "_year" ) ); 
}


function is_postcode(postcode)
{
	var postcode_str = postcode.value;

	postcode_str = postcode_str.replace(' ','');

	if (postcode_str.length!=6)
	{
		return false;
	}

	var digit = postcode_str.substring(0,4);
	var alpha = postcode_str.substring(4,6);

	if (!(/^[0-9]*$/i.test(digit)))
	{
		return false;
	}

	if (!(/^[A-Z]*$/i.test(alpha)))
	{
		return false;
	}

	postcode.value = digit + ' ' + alpha.toUpperCase();

	return true;
}

function is_postcode_value(postcode)
{
	var postcode_str = postcode.value;

	postcode_str = postcode_str.replace(' ','');

	if (postcode_str.length!=6)
	{
		return false;
	}

	postcode.value = reformat_postcode(postcode_str);

	return true;
}

function reformat_postcode(postcode_str)
{
	var digit = postcode_str.substring(0,4);
	var alpha = postcode_str.substring(4,6);

	if (!(/^[0-9]*$/i.test(digit)))
	{
		return false;
	}

	if (!(/^[A-Z]*$/i.test(alpha)))
	{
		return false;
	}

	return digit + ' ' + alpha.toUpperCase();	
}

function check_postcode_huisnummer(postcode,huisnummer)
{
	if (empty(postcode) || empty(huisnummer))
	{
		if (empty(postcode) && empty(huisnummer))
		{
			alert('Vul zowel een postcode als een huisnummer in.');
			postcode.focus();
		}
		else if (empty(postcode))
		{
			alert('Vul een postcode in.');
			postcode.focus();
		}
		else
		{
			alert('Vul een huisnummer in.');
			huisnummer.focus();
		}

		return false;
	}
	else
	{
		// controller of er wel een correcte postcode is ingevoerd
		if (!is_postcode(postcode))
		{
			alert(postcode.value + " is een ongeldige postcode.");
			postcode.focus();
			return false;
		}
		else
		{
			//controller of er wel een juiste huisnummer is ingevoerd
			if (!(/^[0-9]*$/i.test(huisnummer.value)))
			{
				alert(huisnummer.value + " is een ongeldig huisnummer.");
				huisnummer.focus();
				return false;
			}
		}
	}

	return true;

}

function getFirstElementByName(name)
{
	var ctrls = document.getElementsByName(name);
	if (ctrls != null && ctrls.length > 0)
	{
		return ctrls[0];
	}
	
	return null;
}


