//In deze file worden alle forms op de site gecontroleerd en wanneer nodig gesubmit
//velden met in  de alt propertie de juiste value, e.g alt="r,email"
//wanneer er alleen 'r' word ingevuld wordt het veld verder net meer gecontroleerd. alleen op invulling
//mogelijke waarden: email, phone, postal, name



//De hoofdfunctie. Hiervandaan wordt de rest aangesproken.
function checkForm(myForm)
{
	if(checkRequiredFields(myForm))
	{
		if(checkFieldFormats(myForm, 'email,phone,postal,name'))
		{
			myForm.submit();
		}
	}
}


//Functie om de velden met een 'r' in de alt te controleren op invulling
function checkRequiredFields(myForm)
{
	var myArray = new Array();
	var error = false;

	for(var i=0;i<myForm.length;i++)
	{
		if(!myForm[i].alt)
		{
			myAlt = "";
		}else{
			myAlt = myForm[i].alt;
		}
			
		
		
		mySplit = myAlt.split(",");
		if(mySplit[0] == "r")
		{
			myArray.push(myForm[myForm[i].name]);	
		}
	}
		
	for(var i=0; i<myArray.length; i++)
	{
		if(myArray[i].value == "")
		{
			myArray[i].style.background = "red";
			error = true;
		}else{
			myArray[i].style.background = "white";
		}
	}
	
	if(error)
	{
		alert('Not all required fields are specified!\nPlease fill in the red marked fields.');
		return false;
	}else{
		return true;
	}
}


//Functie om de ingevulde waarden te contoleren op basis van meegegven parameter in de alt
function checkFieldFormats(myForm, myParams)
{
	var error = false;
	var msg = "Please change the following error(s):\n\n";
	var err_mail = false;
	var err_phone = false;
	var err_postal = false;
	var err_name = false;

	
	myParams = myParams.split(",");
	
	for(var j=0; j<myParams.length;j++)
	{
		switch(myParams[j])
		{
			case "email": 
					
				for(var i=0;i<myForm.length;i++)
				{
					if(!myForm[i].alt)
					{
						myAlt = "";
					}else{
						myAlt = myForm[i].alt;
					}
					
					mySplit = myAlt.split(",");
				
				
					
					if(mySplit[1] == "email")
					{
					
						if(!checkMail(myForm[i].value))
						{
							error = true;
							myForm[i].style.background = "green";
							
							if(!err_mail)
							{
								msg = msg + "- incorrect e-mail address\n";
								err_mail = true;					
							}
						}
					}
				}
				
			
			case "phone": 
				
				for(var i=0;i<myForm.length;i++)
				{
					if(!myForm[i].alt)
					{
						myAlt = "";
					}else{
						myAlt = myForm[i].alt;
					}
					
					mySplit = myAlt.split(",");
				
					if(mySplit[1] == "phone")
					{
						if(!checkPhone(myForm[i].value))
						{
							error = true;
							myForm[i].style.background = "green";
							if(!err_phone)
							{
								msg = msg + "- incorrect phone number\n";
								err_phone = true;
							}
						}
					}
				}
				
				
				case "postal": 
				
				for(var i=0;i<myForm.length;i++)
				{
					if(!myForm[i].alt)
					{
						myAlt = "";
					}else{
						myAlt = myForm[i].alt;
					}
					
					mySplit = myAlt.split(",");
				
					if(mySplit[1] == "postal")
					{
						if(!checkPostal(myForm[i].value))
						{
							error = true;
							myForm[i].style.background = "green";
							if(!err_postal)
							{
								msg = msg + "- incorrect postal code\n";
								err_postal = true;
							}
						}
					}
				}
				
				case "name": 
				
				for(var i=0;i<myForm.length;i++)
				{
					if(!myForm[i].alt)
					{
						myAlt = "";
					}else{
						myAlt = myForm[i].alt;
					}
					
					mySplit = myAlt.split(",");
				
					if(mySplit[1] == "name")
					{
						if(IsNumeric(myForm[i].value))
						{
							error = true;
							myForm[i].style.background = "green";
							if(!err_name)
							{
								msg = msg + "- incorrect name value\n";
								err_name = true;
							}
						}
					}
				}
				
				
		}
	}
		
	if(error)
	{
		alert(msg);		
		return false;
	}else{
		return true;
	}
}



//Functie ter controle van e-mail adressen (iemand@provider.nl)
function checkMail(str)
{
	  var at="@"
	  var dot="."
	  var lat=str.indexOf(at)
	  var lstr=str.length
	  var ldot=str.indexOf(dot)
	  
	  if (str.indexOf(at)==-1)
	  {
	    return false;
	  }
	
	  if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr)
	  {
	   	return false;
	  }
	
	  if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr)
	  {
	    return false;
	  }
	
	  if (str.indexOf(at,(lat+1))!=-1)
	  {
	    return false;
	  }
	
	  if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot)
	  {
	    return false;
	  }
	
	  if (str.indexOf(dot,(lat+2))==-1)
	  {
	    return false;
	  }
	  
	  if (str.indexOf(" ")!=-1)
	  {
	    return false;
	  }
	  
	  return true;           
}



//Functie ter controle van telefoonnummers (0227-552744 of 06-123458445)
function checkPhone(str)
{
		str = str.split("-");
		if(str.length !== 2 )
		{
			return false;
		}
		
		if(!IsNumeric(str[0]))
		{
			return false;
		}
		
		if(!IsNumeric(str[1]))
		{
			return false;
		}
		
		return true;
}



//Functie om een waarde op het numeriek zijn ervan te kunnen controleren
function IsNumeric(sText)
{
  var ValidChars = "0123456789";
  var IsNumber=true;
  var Char;

  for (i = 0; i < sText.length && IsNumber == true; i++) 
  { 
    Char = sText.charAt(i); 
    if (ValidChars.indexOf(Char) == -1) 
    {
      IsNumber = false;
    }
   }
   
   return IsNumber;
}


//Functie om een postcode te controleren (1515 AB)
function checkPostal(str)
{
	str = str.split(" ");
	
	if(str.length !== 2)
	{
		return false;
	}
	
	if(!IsNumeric(str[0]))
	{
		return false;
	}
	
	if(IsNumeric(str[1]))
	{
		return false;
	}
	
	if(str[0].length > 4 || str[1].length > 2 || str[0].length < 4 || str[1].length < 2)
	{
		return false;
	}
	
	return true;
}






















//=======================================================================================//
//===============Hieronder losse form check functies=====================================//

function check_assSearchForm()
{
	var formulier = document.assSearchForm;
	var experience = formulier.experience.value;
	var sstring = formulier.sstring.value;
	
	if(experience !== "x" || sstring !== "")
	{
		formulier.submit();
	}else{
		alert('You need to select at least an experience or fill in a searchtext');
	}
}


function exeSearchForm()
{
	var formulier = document.searchform;
	var dropdown = formulier.specialisme.value;
	var myString = formulier.searchstring.value;
	
	if(dropdown !== "x")
	{
		if(dropdown == "1" && myString == "")
		{
			alert('Please fill in a searchtext!');
		}else{
			formulier.submit();
		}
			
	}else{
		alert('Please select a category!');
	}
}