function checkField(fieldObj)
{
	var required;
	if(fieldObj.getAttribute('isRequired') == 'true')
	{
		required = true;
	}
	else
	{
		required = false;
	}
	
	if(required && fieldObj.value == '')
	{
		errorField(fieldObj, true, required);
	}
	else if(required && fieldObj.value.split(' ').join('') == '')
	{
		errorField(fieldObj, true, required);
	}
	else if(!required && fieldObj.value.split(' ').join('') == '')
	{
		errorField(fieldObj, false, required);
	}
	else if(!checkFieldType(fieldObj))
	{
		errorField(fieldObj, true,required);
	}
	else
	{
		errorField(fieldObj, false,true);
	}
}

function errorField(fieldObj, isError, required, changeBG)
{
	if(changeBG == null)
	{
		changeBG = false;
	}
	var imgObj = document.getElementById('img' + fieldObj.name);
	if(isError)
	{
		if(changeBG)
		{
			fieldObj.style.background = '#FF3F18';
		}
		if(!required)
		{
			imgObj.style.visibility = "visible";
		}
		imgObj.src = shopLocation + 'icon/validation_false.png';
	}
	else
	{
		fieldObj.style.background = '#FFFFFF';
		imgObj.src = shopLocation + 'icon/validation_true.png';
		if(!required)
		{
			imgObj.style.visibility = "hidden";
		}
		else
		{
			imgObj.style.visibility = "visible";
		}
	}
}

function inputControl( form )
{
	var allFields = form.elements;
	var returnValue = true;
	var invallidField = null;
	for(var i = 0; i < allFields.length; i++)
	{
		field = allFields[i];
		if(field.type == 'text')
		{			
			if(field.getAttribute('isRequired') == 'true')
			{
				if(field.value == '')
				{
					errorField(field, true,true,true);
					returnValue = false;
					if(invallidField == null)
					{
						invallidField = field;
					}
				}
				else if(!checkFieldType(field)) 
				{
					errorField(field, true,true,true);
					returnValue = false;
					if(invallidField == null)
					{
						invallidField = field;
					}
				}
			}
			else
			{
				if(field.value != '')
				{
					if(field.getAttribute('controltype') != '')
					{
						if(!checkFieldType(field)) 
						{
							errorField(field, true,false,true);
							returnValue = false;
							if(invallidField == null)
							{
								invallidField = field;
							}
						}
					}
				}
			}
		}
		else if(field.type == 'select')
		{
			if(field.getAttribute('isRequired') == 'true')
			{
				if(field.value == '')
				{
					errorField(field, true,true,true);
					returnValue = false;
					if(invallidField == null)
					{
						invallidField = field;
					}
				}
			}
		}
		else if(field.type == 'textarea')
		{
			if(field.getAttribute('isRequired') == 'true')
			{
				if(field.value == '')
				{
					errorField(field, true,true,true);
					returnValue = false;
					if(invallidField == null)
					{
						invallidField = field;
					}
				}
			}
		}
	}
	if(invallidField != null)
	{
		alert('Wij verzoeken u om de gegevens in de gemarkeerde velden na te kijken.');
		invallidField.select();
		invallidField.focus();
	}
	return returnValue;
}

function checkFieldType( fieldObj ){
	switch (fieldObj.getAttribute('controlType')){
		case 'text':
			return true;
			break;
		case 'numeriek':
			if( isNaN( veld.value ) == true )
			{
				return false;
			}
			else
			{
				return true;
			}
			break;
		case 'decimaal1':
			if( isNaN( fieldObj.value ) == true )
			{
				return false;
			}
			else
			{
				veld.value = round( fieldObj.value, 1 );
				return true;
			}
			break;
		case 'decimaal2':
			if( isNaN( fieldObj.value ) == true )
			{
				return false;
			}
			else
			{
				fieldObj.value = round( veld.value, 2 );
				return true;
			}
			break;
		case 'telefoon':
			if( isTelefoon(fieldObj.value) == false )
			{
				return false;
			}
			else
			{
				return true;
			}
			break;
		case 'email':
			if(isEmail(fieldObj.value) == false){
				return false;
			}
			else
			{
				return true;
			}
			break;
		case 'emailcheck':
			if(fieldObj.value != document.getElementById(fieldObj.name.substring(0,(fieldObj.name.length-5))).value){
				return false;
			}
			else
			{
				return true;
			}
			break;
		case 'postcode':
			if(isPostcode(fieldObj.value) == false){
				return false;
			}
			else
			{
				fieldObj.value = fieldObj.value.toUpperCase();
				return true;
			}
			break;
		case 'hoofdletters':
			fieldObj.value = fieldObj.value.toUpperCase();
			return true;
			break;
		case 'kleineletters':
			fieldObj.value = fieldObj.value.toLowerCase();
			return true;
			break;
	}
}

function isEmail( email )
{
	var at="@"
	var dot="."
	var lat=email.indexOf(at)
	var lemail=email.length
	var ldot=email.indexOf(dot)

	if( email.indexOf( at ) == -1 )
	{
	    return false;
	}

	if( email.indexOf( at ) == -1 || email.indexOf( at ) == 0 || email.indexOf( at ) == lemail )
	{
		return false;
	}

	if( email.indexOf( dot ) == -1 || email.indexOf( dot ) == 0 || email.indexOf( dot ) == lemail )
	{
		return false;
	}

	if( email.indexOf( at, ( lat + 1 ) ) != -1 )
	{
		return false;
	}

 	if( email.substring( lat - 1, lat ) == dot || email.substring( lat + 1, lat + 2 ) == dot )
	{
	    return false;
	}

	if( email.indexOf( dot, ( lat + 2 ) ) == -1 )
	{
	   	return false;
	}

 	if( email.indexOf( " " ) != -1 ) 
	{
 	  	return false;
 	}

 	return true;
}

function isPostcode( postcode )
{	
	if( postcode != '' && postcode.length == 6 )
	{
		valid = "01234567890";
		if( valid.indexOf( postcode.charAt( 0 ) ) == -1 ||  valid.indexOf( postcode.charAt( 1 ) ) == -1 || valid.indexOf( postcode.charAt( 2 ) ) == -1 || valid.indexOf( postcode.charAt( 3 ) ) == -1 )
		{
			return false;
		}

		valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		if( valid.indexOf( postcode.charAt( 4 ) ) == -1 ||  valid.indexOf( postcode.charAt( 5 ) ) == -1 )
		{
			return false;
		}
	
		return true;
	}
	
	return false;
}

function isTelefoon( telefoon ){
	telefoon = telefoon.replace(" ", "");
	telefoon = telefoon.replace("-", "");

	if( telefoon.length == 10 || telefoon.length == 12 )
	{
		var plus = telefoon.charAt(0);
		var cijfers = telefoon.substring(1, telefoon.length);

		if(isNaN(plus) == false)
		{
			// Gewoon telefoonnummer....
			if( isNaN(cijfers) == true || telefoon.length != 10 ) {
				return false;
			} else {
				return true;
			}
		} else {
			// Buitenlands nummer
			if( plus != "+" || isNaN(cijfers) == true || telefoon.length != 12 ){
				return false;
			} else {
				return true;
			}
		}
	}
	
	return false;
}

function round( value, decimal ) {
	var f = Math.pow(10, decimal);
	value = Math.round(value * f) / f;
	value += Math.pow(10, - (decimal + 1));
	value += '';
	return decimal == 0 ? value.substring(0, value.indexOf('.')) :
	value.substring(0, value.indexOf('.') + decimal + 1);
}