$(function(){
	$('input.date-pick').datePicker({startDate:'01/01/1900',endDate:'31/12/1999'});
	
	$('#contact-form #dob').attr({'rel':'disabled','disabled':false}).css('color','#888888');
	
	$('#contact-form #dob,#dob-element div').click(function(){
		if ($('#dob').attr('rel')=='disabled') {
			$('#dob').val($('#dob').val().replace(/^01\/01/,'00/00'));
		}
		$('#dob').attr('rel','enabled').css('color','#000000');
	});
		
	$('#contact-form').submit(function(ev){
		var reqFields = new Array('firstname','lastname','dob','address1','town','postcode','county','email');
		var extraFields = new Array('telephone');
		var checkFields = reqFields.slice(0,reqFields.length);
		for (var i in extraFields) {
			checkFields.push(extraFields[i]);
		}
		var fName, fVal, invalid,errMsg;
		var error = false;
		$('.errors',$(this)).remove();
		for (var i =0; i < checkFields.length;i++) {
			fName=checkFields[i];
			invalid=false;
			errMsg = '';
			fVal = $.trim( $('#'+fName).val() );
			switch (fName) {
				case 'email':
					if (fVal.length>1 && !/^\w[^@]*@([a-z0-9]+\w*[a-z0-9]\.)+[a-z]{2,8}$/i.test(fVal)) {
						errMsg += '<li>Please enter a valid email address</li>';
						invalid=true;
					}
					break;
				case 'telephone':
					fVal = fVal.replace(/[\+()-]+/g,"");
					
					if (fVal.length>1 && !/^\d+(\s*\d+)+$/i.test(fVal)) {
						errMsg += '<li>Please enter a valid telephone number</li>';
						invalid=true;
					}
					break;
				case 'postcode':
					fVal = fVal.toUpperCase();
					fVal = fVal.replace(/[^A-Z0-9 ]+/g,"");
					fVal = fVal.replace(/\s+/g," ");
					if (fVal.length>1 && !/^\w+(\s\w+)?$/i.test(fVal)) {
						errMsg += '<li>Please enter a valid postcode</li>';
						invalid=true;
					}
					break;
				case 'dob':
					fVal = fVal.replace(/[-\.: ]+/g,"/");
					fVal = fVal.replace(/\s+/g," ");
					if (fVal.length>1 && !/^[0-3]?[1-9]?\/[0-1]?[1-9]\/(19|20)\d\d?$/i.test(fVal)) {
						errMsg += '<li>Please enter a valid date of birth (DD/MM/YYYY)</li>';
						invalid=true;
					}
					else if ($('#'+fName).attr('rel')=='disabled') {
						errMsg += '<li>Please select your date of birth (DD/MM/YYYY)</li>';
						fVal = fVal.replace(/^01\/01/,'00/00');
						invalid=true;
					}
					if (invalid) {
						$('#'+fName).css('color','#996666');
					}
					break;
			}
			
			if (fVal.length<1 && $.inArray(fName,reqFields)>=0) {
				invalid=true;
				errMsg += '<li>This field is required</li>';
			}
			if (invalid==true) {
				error = true;
				if ($('#'+fName).hasClass('date-pick')) {
					$('div',$('#'+fName).parent()).after('<ul class="errors">'+errMsg+'</ul>');
				}
				else {
					$('#'+fName).after('<ul class="errors">'+errMsg+'</ul>');
				}
			}
			$('#'+fName).val(fVal);
		}
		if (error == true) {
			ev.preventDefault();
		}
	});
});


