/**************************************************
 * General Form Validation Functions, version 0.10
 * Copyright 2007 Ivengi BV. Benelux
 **************************************************/
 
function RequiredTextFieldHighLight(Field, Message) 
{
 if (Field.value.length < 1) {
    Field.style.border = "1px solid #c30";
    Field.focus();
    alert(Message);
    return false;
  }
  Field.style.border = "1px solid #fff";
  return true;
}

function ValidatePostalCode(value)
{
	var RegExpPostalCode = /^[0-9]{4}[ ]?[a-zA-Z]{2}$/m;
	if(RegExpPostalCode.test(value)) {
		return true;
	} else {
		return false;
	}
}

function ValidateDutchBankAccount(Field, Message)
{
  var BankNumber = Field.value;
  if(BankNumber.length > 7) {
    BankNumber = BankNumber.replace(/[^0-9]/mg, ''); 
    
    while(BankNumber.length < 10) { 
      BankNumber = '0' + BankNumber;
    } 
    
    var TotalCount = 0;                      
    for(var i = 0; i < BankNumber.length; i++) {
      TotalCount += BankNumber.charAt(i) * (i + 1);
    } 
    if((TotalCount > 0) && ((TotalCount%11) != 0)) {
      alert(Message);
      Field.focus();
      return false;
    } 
  }
  return true;
}


function RequiredTextField(Field, Message) 
{
 if (Field.value.length < 1) {
    alert(Message);
    Field.focus();
    return false;
  }
  return true;
}

function RequiredCheckBox(Field, Message)
{
  if (!Field.checked) {
    Field.focus();
    alert(Message);
    return false;
  }
  return true;
}

function ValidateEmail(Field, Message)
{
  var regex = /^[\w\.+-]+@[\w\.-]+\.[a-zA-Z]{2,4}$/;
  if (!regex.test(Field.value)) {
    Field.focus();
    alert(Message);
    return false;
  }
  return true;
}

function ValidateDate(Field, Message) {
	var validformat=/^\d{2}?-\d{2}?-\d{4}?$/ //Basic check for format validity
	
	if (!validformat.test(Field.value)) {
		alert(Message);
		Field.focus();
		return false;
	} else { //Detailed check for valid date ranges
		var day   = Field.value.split("-")[0];
		var month = Field.value.split("-")[1];
		var year  = Field.value.split("-")[2];
    
		var dayobj = new Date(year, month-1, day)
		if (((dayobj.getMonth()+1) != month) || (dayobj.getDate() != day) || (dayobj.getFullYear()!=year)) {
			alert(Message);
			Field.focus();
			return false;
		}
	}
	
	return true;
}

function ValidateDatePeriod(FieldMin, FieldMax, Message) {
  var validformat=/^\d{2}?-\d{2}?-\d{4}?$/ //Basic check for format validity
  
  if (!validformat.test(FieldMin.value) || !validformat.test(FieldMax.value)) {
    alert(Message);
    Field.focus();
    return false;
  } else { //Detailed check for valid date ranges
    var daymin   = FieldMin.value.split("-")[0];
    var monthmin = FieldMin.value.split("-")[1];
    var yearmin  = FieldMin.value.split("-")[2];
    
    var daymax   = FieldMax.value.split("-")[0];
    var monthmax = FieldMax.value.split("-")[1];
    var yearmax  = FieldMax.value.split("-")[2];
    
    var dayobjmin = new Date(yearmin, monthmin-1, daymin);
    var dayobjmax = new Date(yearmax, monthmax-1, daymax);
    
    if( (((dayobjmin.getMonth()+1) != monthmin) || (dayobjmin.getDate() != daymin) || (dayobjmin.getFullYear()!=yearmin)) ||
        (((dayobjmax.getMonth()+1) != monthmax) || (dayobjmax.getDate() != daymax) || (dayobjmax.getFullYear()!=yearmax)) ||
        (dayobjmin.getTime() > dayobjmax.getTime()) ) {
      alert(Message);
      Field.focus();
      return false;
    }
  }
  
  return true;
}


function ValidateTextFieldNumeric(Field, Message, MinValue, MaxValue)
{
	if(!RequiredTextField(Field, Message)) {
		return false;
	}
	
	var IntValue = parseInt(Field.value);
	if(isNaN(IntValue)) {
		alert(Message);
		Field.focus();
		return false;
	}
  
  if(typeof(MinValue) !== 'undefined') {
    if(IntValue < MinValue) {
      alert(Message);
      Field.focus();
      return false;
    }
  }
	
  if(typeof(MaxValue) !== 'undefined') {
    if(IntValue > MaxValue) {
      alert(Message);
      Field.focus();
      return false;
    }
  }
  
  return true;
}

function ValidateTextarea(Field, MaxChars, Message)
{
  if (Field.value.length < 1) {
    Field.focus();
    alert(Message);
    return false;
  } else {
    if (Field.value.replace(/\r\n/g,'x').length > MaxChars) {
      Field.focus();
      alert(Message);
      return false; 
    }
  }
  return true;
}

