// Form validation
// Requires Core JLP object

jlp.forms = {
	
	'submitFormCheck': function(form) {
		
		var isOK = true,
			theForm = document.forms[form],
			i;
		
		for (i=1; i < arguments.length; i+=1) {
			
			isOK = this.text.required( jlp.util.fetch(arguments[i]['field']), arguments[i]['output'] )
		}
		
		if (isOK) {
			
			theForm.submit();	
		
		} else {
			
			return false;
		}
	},

	'text':	{
	
		'required': function(formElem, output) {
		
			var formValue = formElem.value.trim();
		
			if (formElem.value.length < 1) {
				
				jlp.util.fetch(output).innerHTML = '* This is a required field'; 
				return false;
			
			} else {
			
				jlp.util.fetch(output).innerHTML = '';
				return true;
			}
		},
		
		'rangeValidator': function(a, b, formElem, output) {
		
			var formValue = formElem.value.trim();
			
			if ((formElem.value.length < a) || (formElem.value.length > b)) {
			
				jlp.util.fetch(output).innerHTML = '* This field can only accept between ' + a + ' and ' + b + ' characters';
				return false;
			
			} else {
			
				jlp.util.fetch(output).innerHTML = '';
				return true;
			}
		},
		
		'numericOnly': function(formElem, output) {
		
			var isAllowed = '.0123456789',
				isNumeric = true,
				formValue = formElem.value.trim(),
				i;
				
			for (i=0; i < formElem.value.length; i+=1) {
			
				if (isAllowed.indexOf(formValue.charAt(i)) === -1) {
				
					isNumeric = false;
					break;
				}
			}
			
			if (!isNumeric) {
			
				jlp.util.fetch(output).innerHTML = '* This field can only accept numbers and decimals';
				return false;
			
			} else {
			
				jlp.util.fetch(output).innerHTML = '';
				return true;
			}	
		},
		
		'checkEmail': {
			
			'format': function(formElem, output) {
		
				var emVal_1 = formElem.value.trim(),
					dotPos = emVal_1.indexOf('.'),
					atPos = emVal_1.indexOf('@'),
					errMsg = {'badFormat' : '*Please enter a valid email address'};
				
				if (emVal_1.length < 5) {
				
					jlp.util.fetch(output).innerHTML = errMsg.badFormat;
					return false;
				}
				
				if ( (dotPos === -1) || (atPos === -1) ) {
					
					jlp.util.fetch(output).innerHTML = errMsg.badFormat;
					return false;
				}
				
				if (atPos > dotPos) {
					
					jlp.util.fetch(output).innerHTML = errMsg.badFormat;
					return false;	
				}
				
				jlp.util.fetch(output).innerHTML = '';
				return true;
			},

			'compare': function(n1, n2, o) {
			
				var n1 = n1.value.trim().toLowerCase(),
					n2 = n2.value.trim().toLowerCase(),
					e = '*Please re-enter your email';
				
				if (n1 !== n2) {
					
					jlp.util.fetch(o).innerHTML = e;
					return false;
				
				} else {
					
					jlp.util.fetch(o).innerHTML = '';
					return true;
				}
			}
		}
	}
};
