// form validation function //
function validate(form, soort) {

	var voorletters = form.voorletters.value;
	var geslacht = form.geslacht.value;
	var naam = form.naam.value;
	
	if (soort == "verkoopbemiddeling") {
		var adres = form.adres.value;
		var huisnummer = form.huisnummer.value;
		var postcode = form.postcode.value;
		var plaats = form.plaats.value;
		
		var telefoon = form.telefoon.value;
		var auto = form.huidige_auto.value;
		var kmstand = form.kmstand.value;
		var kenteken1 = form.kenteken1.value;
		var kenteken2 = form.kenteken2.value;
		var kenteken3 = form.kenteken3.value;
		var bouwjaar = form.bouwjaar.value;
	}
	
	var email = form.email.value;
	var opmerking = form.opmerking.value;
	var security_code = form.security_code.value;
	var security_code_conf = form.security_code_conf.value;
	
	// Alleen nummers
	var numRegex = /^[0-9]/;
	
	// Nummers en letters
	
	var numletRegex = /[0-9a-zA-Z]/;
	
	// Namen
	var nameRegex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
	
	// Alleen letters en punten
	var voorletterRegex = /^(([a-zA-Z]*)[.]*)*$/;
	
	// Postcode
	var postcodeRegex = /^[0-9]+(([a-zA-Z ])?[a-zA-Z]*)*$/;
	
	// Alleen e-mailadressen
	var emailRegex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
	var messageRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);

  if(voorletters == "") {
    inlineMsg('voorletters','Uw voorletters moeten nog ingevuld worden.',2);
    return false;
  }
  if(!voorletters.match(voorletterRegex)) {
    inlineMsg('voorletters','Uw voorletters zijn niet juist ingevuld.',2);
    return false;
  }
  if(naam == "") {
    inlineMsg('naam','Uw naam moet nog ingevuld worden.',2);
    return false;
  }
  if(!naam.match(nameRegex)) {
    inlineMsg('naam','Uw naam is niet juist ingevuld.',2);
    return false;
  }
  
  if (soort == "verkoopbemiddeling") { // verkoopbemiddeling
  
  if(adres == "") {
    inlineMsg('adres','Uw straatnaam moet nog ingevuld worden.',2);
    return false;
  }
  if(!adres.match(nameRegex)) {
    inlineMsg('adres','Uw straatnaam is niet juist ingevuld.',2);
    return false;
  }
  if(huisnummer == "") {
    inlineMsg('huisnummer','Uw huisnummer moet nog ingevuld worden.',2);
    return false;
  }
  if(!huisnummer.match(numRegex)) {
    inlineMsg('huisnummer','Uw huisnummer is niet juist ingevuld.',2);
    return false;
  }
  if(postcode == "") {
    inlineMsg('postcode','Uw postcode moet nog ingevuld worden.',2);
    return false;
  }
  if(!postcode.match(postcodeRegex)) {
    inlineMsg('postcode','Uw postcode is niet juist ingevuld.',2);
    return false;
  }
  if(plaats == "") {
    inlineMsg('plaats','Uw woonplaats moet nog ingevuld worden.',2);
    return false;
  }
  if(!plaats.match(nameRegex)) {
    inlineMsg('plaats','Uw woonplaats is niet juist ingevuld.',2);
    return false;
  }
  
  } // Einde soort verkoopbemiddeling
  
  
  
  if(email == "") {
    inlineMsg('email','Uw e-mailadres moet nog ingevuld worden.',2);
    return false;
  }
  if(!email.match(emailRegex)) {
    inlineMsg('email','Uw e-mailadres is niet juist ingevuld.',2);
    return false;
  }
  
  
  if (soort == "verkoopbemiddeling") { // verkoopbemiddeling
  
  if(telefoon == "") {
    inlineMsg('telefoon','Uw telefoonnummer moet nog ingevuld worden.',2);
    return false;
  }
  if(!telefoon.match(numRegex)) {
    inlineMsg('telefoon','Uw telefoonnummer is niet juist ingevuld.',2);
    return false;
  }
  if(auto == "") {
    inlineMsg('huidige_auto','Uw auto moet nog ingevuld worden.',2);
    return false;
  }
  if(kmstand == "") {
    inlineMsg('kmstand','Uw kilometer-stand moet nog ingevuld worden.',2);
    return false;
  }
  if(!kmstand.match(numRegex)) {
    inlineMsg('kmstand','Uw kilometer-stand is niet juist ingevuld.',2);
    return false;
  }
  if(kenteken1 == "") {
    inlineMsg('kenteken1','Het eerste gedeelte van uw kenteken moet nog ingevuld worden.',2);
    return false;
  }
  if(!kenteken1.match(numletRegex)) {
    inlineMsg('kenteken1','Het eerste gedeelte van uw kenteken is niet juist ingevuld.',2);
    return false;
  }
  if(kenteken2 == "") {
    inlineMsg('kenteken2','Het tweede gedeelte van uw kenteken moet nog ingevuld worden.',2);
    return false;
  }
  if(!kenteken2.match(numletRegex)) {
    inlineMsg('kenteken2','Het tweede gedeelte van uw kenteken is niet juist ingevuld.',2);
    return false;
  }
  if(kenteken3 == "") {
    inlineMsg('kenteken3','Het derde gedeelte van uw kenteken moet nog ingevuld worden.',2);
    return false;
  }
  if(!kenteken3.match(numletRegex)) {
    inlineMsg('kenteken3','Het derde gedeelte van uw kenteken is niet juist ingevuld.',2);
    return false;
  }
  if(bouwjaar == "") {
    inlineMsg('bouwjaar_f','Het bouwjaar van uw auto moet nog ingevuld worden.',2);
    return false;
  }
  if(!bouwjaar.match(numRegex)) {
    inlineMsg('bouwjaar_f','Het bouwjaar van uw auto is niet juist ingevuld.',2);
    return false;
  }
  
  
  } // Einde soort verkoopbemiddeling
  
  
	if (soort == "contact") {
  
		if(opmerking == "") {
			inlineMsg('opmerking','Vul hier uw opmerking in.',2);
			return false;
		}
  
	}
  
  
  if(security_code == "") {
    inlineMsg('security_code','Uw veiligheidscode moet nog ingevuld worden.',2);
    return false;
  }
  if(security_code != security_code_conf) {
    inlineMsg('security_code','Uw veiligheidscode is niet juist ingevuld.',2);
    return false;
  }
  
  return true;
}

// START OF MESSAGE SCRIPT //

var MSGTIMER = 20;
var MSGSPEED = 5;
var MSGOFFSET = 3;
var MSGHIDE = 3;

// build out the divs, set attributes and call the fade function //
function inlineMsg(target,string,autohide) {
  var msg;
  var msgcontent;
  if(!document.getElementById('msg')) {
    msg = document.createElement('div');
    msg.id = 'msg';
    msgcontent = document.createElement('div');
    msgcontent.id = 'msgcontent';
    document.body.appendChild(msg);
    msg.appendChild(msgcontent);
    msg.style.filter = 'alpha(opacity=0)';
    msg.style.opacity = 0;
    msg.alpha = 0;
  } else {
    msg = document.getElementById('msg');
    msgcontent = document.getElementById('msgcontent');
  }
  msgcontent.innerHTML = string;
  msg.style.display = 'block';
  var msgheight = msg.offsetHeight;
  var targetdiv = document.getElementById(target);
  targetdiv.focus();
  var targetheight = targetdiv.offsetHeight;
  var targetwidth = targetdiv.offsetWidth;
  var topposition = topPosition(targetdiv) - ((msgheight - targetheight) / 2);
  var leftposition = leftPosition(targetdiv) + targetwidth + MSGOFFSET;
  msg.style.top = topposition + 'px';
  msg.style.left = leftposition + 'px';
  clearInterval(msg.timer);
  msg.timer = setInterval("fadeMsg(1)", MSGTIMER);
  if(!autohide) {
    autohide = MSGHIDE;  
  }
  window.setTimeout("hideMsg()", (autohide * 1000));
}

// hide the form alert //
function hideMsg(msg) {
  var msg = document.getElementById('msg');
  if(!msg.timer) {
    msg.timer = setInterval("fadeMsg(0)", MSGTIMER);
  }
}

// face the message box //
function fadeMsg(flag) {
  if(flag == null) {
    flag = 1;
  }
  var msg = document.getElementById('msg');
  var value;
  if(flag == 1) {
    value = msg.alpha + MSGSPEED;
  } else {
    value = msg.alpha - MSGSPEED;
  }
  msg.alpha = value;
  msg.style.opacity = (value / 100);
  msg.style.filter = 'alpha(opacity=' + value + ')';
  if(value >= 99) {
    clearInterval(msg.timer);
    msg.timer = null;
  } else if(value <= 1) {
    msg.style.display = "none";
    clearInterval(msg.timer);
  }
}

// calculate the position of the element in relation to the left of the browser //
function leftPosition(target) {
  var left = 0;
  if(target.offsetParent) {
    while(1) {
      left += target.offsetLeft;
      if(!target.offsetParent) {
        break;
      }
      target = target.offsetParent;
    }
  } else if(target.x) {
    left += target.x;
  }
  return left;
}

// calculate the position of the element in relation to the top of the browser window //
function topPosition(target) {
  var top = 0;
  if(target.offsetParent) {
    while(1) {
      top += target.offsetTop;
      if(!target.offsetParent) {
        break;
      }
      target = target.offsetParent;
    }
  } else if(target.y) {
    top += target.y;
  }
  return top;
}

// preload the arrow //
if(document.images) {
  arrow = new Image(7,80); 
  arrow.src = "images/msg_arrow.gif"; 
}
