var yourGuess = "";
var basicValidate  = Array("addFirst:s","addLast:s","addDobMonth:s","addDobDay:n","addDobYear:n","addStreet1:s","addCity:s","addCounty:s","addPostcode:s","addTel:p","addEmail:e");

$(document).ready(function() {
	
	$('.guessInput').keyup(function(e){
		
		// get value of input field : tacCode
		var guessCode = $(this).val();
		
		// get all of the IENI input fields and store in variable [IMEIS]
		var guess = $('.guessInput');
		
		// get the index of current IMEI input field
		var indexValue = guess.index(this);
		
		// set Expression to check that all values submitted are numbers
		var numericExpression = /^[0-9]$/;

		// validate tacCode : length[8] : numbers[0-9]
		if( guessCode.length == 1 && guessCode.match(numericExpression) )
		{

			// change the input field background-color
			$(this).css({'background-color' : '#FFFFFF', 'color' : '#000000'});
			
			// set the focus of the next
			$(this).next().focus();
			
		}
		else
		{


			if( e.which == "9" && indexValue < (guess.length-1) )
			{
				$(this).prev().focus();
				$(this).prev().val('');
			}
			else
			{
				$(this).focus();
				$(this).val('');
			}
			
		}
		
	});

	$('#submitButton').click(function() {

		//var basicValidate  = Array("addFirst:s","addLast:s","addDobMonth:s","addDobDay:n","addDobYear:n","addStreet1:s","addCity:s","addCounty:s","addPostcode:s","addTel:p","addEmail:e");
		var tmpHolder = Array();
		var counter = basicValidate.length;

		//for ( var i=0; i <= counter; i++ ) {
		for( var i in basicValidate )
		{

			// split array item by :
			var tValue = basicValidate[i];
			var split_ID = tValue.split(':');

			// validate field
			var confirmation = validateFields( split_ID[1], split_ID[0], basicValidate[i] );
			
			if( confirmation == false )
			{
				
				tmpHolder.push( basicValidate[i] );
				$( "#" + basicValidate[i] ).css({'background-color' : '#F3787D', 'color' : '#FFFFFF'});
				
			
			}
			else
			{
				$( "#" + basicValidate[i] ).css({'background-color' : '#FFFFFF', 'color' : '#000000'});
			}
			
		};
		
		// check users answer
		var answerMessage = yourAnswer();
		
		if( tmpHolder.length >= 1 || answerMessage == false )
		{
			alert("Sorry, there appears to be a problem with your details, can you please make changes to any boxes that are coloured red.");
			return false;
		}
		else
		{
			return true;
		}

	});
	
});

function checkYear()
{

	// get the submitted year
	var chkYear = $('#addDobYear').val();
	if( ( 2009 - chkYear ) <= 10 )
	{
		
		alert('Your less than 10 years old.');
		
	}
	
}

function yourAnswer()
{
	
	var yourGuess = "";
	
	$('.guessInput').each(function(index) {
	
		yourGuess += $(this).val();
	
	});

	if( yourGuess.length <= 1 )
	{
		
		$('.guessInput').each(function(index) {
	
			$( this ).css({'background-color' : '#F3787D', 'color' : '#FFFFFF'});
	
		});
		return false;
	}
	else
	{

		$('.guessInput').each(function(index) {
	
			$( this ).css({'background-color' : '#FFFFFF', 'color' : '#000000'});
	
		});
		return true;
	}
	
}

function validateFields( t, v, o )
{

	// set Expression to check that all values submitted are numbers
	var numericExpression = /[0-9]+$/;

	// set Expression to check that all values submitted are numbers
	var stringExpression = /^[0-9A-Za-z,. ]+$/;

	// set Expression to check that all values submitted are numbers
	var dateMonth = "january,february,march,april,may,june,july,august,september,october,november,december";
	
	var defvalues = Array( "street","city/town","county","postcode");
	
	var emailExpression = /^[\w\.=-]+@[\w\.-]+\.[\w]{2,3}$/;
	
	var phoneNumbers = "0123456789 ";
	
	var numbersOnly = "0123456789";

	var tempValue = $('#' + v ).val();

	var IsNumber=true;
	var Char;
	
	switch( t )
	{
		case 'dm': // date - month
			
			if( !dateMonth.indexOf( tempValue.toLowerCase() ) )
			{
				return false;
			}
			else
			{
				return true;
			}
			
		break;
		case 'dy': // date - year

			if( !tempValue.match(numericExpression) )
			{
				return false;
			}
			else
			{
				return true;
			}
			
		break;
		case 'dd': // date - day
			
			if( !tempValue.match(numericExpression) )
			{
				return false;
			}
			else
			{
				return true;
			}
			
		break;
		case 'p': // phone or fax number
		
			if( tempValue.length < 1)
			{
				
				return false;
			}

			for (var i = 0; i < tempValue.length ; i++) 
			{ 
				
				Char = tempValue.charAt(i); 
				console.log(Char)
				if (phoneNumbers.indexOf(Char) == -1) 
				{
					return false;
				}
			}

			return true;
			
		break;
		case 'e': // email
			
			if( !tempValue.match(emailExpression) )
			{
				return false;
			}
			else
			{
				return true;
			}
			
		break;
		case 'n': // numbers

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

			return true;
			
		break;
		default:
		case 's': // string - default
		
			for( var i in defvalues )
			{
				if( tempValue.toLowerCase() == defvalues[i] )
				{
					return false;
				}
			}
			
			if( !tempValue.match(stringExpression) || tempValue.length == 0 )
			{
				return false;
			}
			else
			{
				return true;
			}
			
		break;
		

	}
	
	
}

