function validateFRM()
{
	$('#aspnetForm input:text, #aspnetForm select').css('border', '1px solid #7F9DB9');
	//$('#aspnetForm input:text').css('width','162px');
	$("label[for!='']").css('color','#333333');
	$('.error').remove();
	$('#errors').html('');
	
	var validation = new Validator(function(errors){
		var error = '';
		for(i=0;i<errors.length;i++)
		{
			$(errors[i].dom).css('border', '1px solid #F00');
			$(errors[i].dom).prev('label').css('color','#F00');
			//error = errors[i].errorMsg+' '+errors[i].field_name.toLowerCase();
			$(errors[i].dom).after('<div class="error">'+errors[i].errorMsg+'</div>');
		}
		//$('#errors').html(error);
		//alert('You must fill all the required fields');
	});

	$('input, select').each(function(index){
		var classes = $(this).attr('class');
		if(classes == undefined) return;
		classes = classes.split(" ");
		var validation_classes = [];
		for(var i=0;i<classes.length;i++)
		{
			var cls = jQuery.trim(classes[i]);
			if(cls == '')
				continue;
			
			if(cls.match(/^validation_.*$/))
				validation_classes[validation_classes.length] = cls.toLowerCase().replace(/^validation_/, '');
		}
		var label = $(this).prev('label').html();
		if(label == null)
			label = '';
		else
			label = jQuery.trim(label.replace(/^\*/, ''));

		var input_id = $(this).attr('id');
		validation.addField(input_id, label,validation_classes.join('|'));
	});
	
	return validation.validate();
}

function check_duration(){
	var duration_errors = false;
	var duration_years = 0;
	$('.duration_years').each(function(){
		$('.duration').prev('label').css('color','#333333');
		$('.duration select').css('border','1px solid #7F9DB9');
		$('.duration').next('.error').remove();
					
		var d_years = $.trim($(this).val());
		var d_months = $.trim($(this).parent().find('.duration_months').val());	
		if(d_years == '' || d_months == '')
		{
			duration_errors = true;
			if(d_years == '')
			{
				$(this).css('border', '1px solid #F00');
				$(this).parent().prev('label').css('color','#F00');
			}
			if(d_months == '')
			{
				$(this).parent().find('.duration_months').css('border', '1px solid #F00');
				$(this).parent().prev('label').css('color','#F00');
			}
			if(d_years == '' && d_months == '')
				$(this).parent().after('<div class="error">These are required fields.</div>');
			else
				$(this).parent().after('<div class="error">This is a required field.</div>');
		}
		else
			duration_years += parseInt($(this).val());
	})	
	if(duration_errors)
		return false;
	
	var duration_months = 0;
	$('.duration_months').each(function(){
		duration_months += parseInt($(this).val());
	})
	
	var duration = duration_years*12 + duration_months;	
	if(duration >= 36)
		return false;
		

	global_count++;
	var form_html = '';
	
	form_html += '<li class="duration_3_years stepcontent" id="stepcontent_'+global_count+'">';
	form_html += '<fieldset><ul>';
	form_html += '<li><input type="button" class="remove_address" style="margin-bottom: 5px;" value="Remove this address if not required"/></li>';
	form_html += '<li><label for="postcode_'+global_count+'">* Postcode/zip</label><input type="text" class="text validation_required validation_postcode look_up_address_input" name="postcode[]" id="postcode_'+global_count+'" value="" /> <a href="#" class="look_up_address_button">Find address</a><br /><div class="look_up_address_select"></div></li>';
	form_html += '<li><label for="building_number_'+global_count+'">* House/Building number</label><input type="text" class="text validation_required" name="building_number[]" id="building_number_'+global_count+'" value="" style="width: 50px;" /></li>';
	form_html += '<li><label for="street_'+global_count+'">* Street/Road name</label><input type="text" class="text validation_required" name="street[]" id="street_'+global_count+'" value="" /></li>';
	form_html += '<li><label for="address_line_2_'+global_count+'">Address line 2</label><input type="text" class="text" name="address_line_2[]" id="address_line_2_'+global_count+'" value="" /></li>';
	form_html += '<li><label for="address_line_3_'+global_count+'">Address line 3</label><input type="text" class="text" name="address_line_3[]" id="address_line_3_'+global_count+'" value="" /></li>';
	form_html += '<li><label for="city_'+global_count+'">* City</label><input type="text" class="text validation_required" name="city[]" id="city_'+global_count+'" value="" /></li>';
	form_html += '<li><label for="county_'+global_count+'">County</label><input type="text" class="text" name="county[]" id="county_'+global_count+'" value="" /></li>';
	form_html += '<li><label for="country_'+global_count+'">* Country</label>';
	form_html += '<select name="country[]" id="country_'+global_count+'" class="validation_required">';
	form_html += '<option value="" selected="selected">Please Select</option>';
	form_html += global_form_html;
	form_html += '</select><br /></li>';
	form_html += '<li><label for="duration_years_'+global_count+'">* Length of time at address?</label>';
	form_html += '<div class="duration">';
	form_html += '<select name="duration_years[]" id="duration_years_'+global_count+'" style="width: 48px;" class="duration_years">';
	form_html += '<option value="0">-</option>';
	for(var i=0;i<=30;i++) {
		form_html += '<option value="'+i+'">'+i+'</option>';
	}
	form_html += '</select>';
	form_html += '<label class="short">Years</label> ';
	form_html += '<select name="duration_months[]" id="duration_months_'+global_count+'" style="width: 48px;" class="duration_months">';
	form_html += '<option value="">-</option>';
	for(var j=0;j<=11;j++) {
		form_html += '<option value="'+j+'">'+j+'</option>';
	}
	form_html += '</select><label class="short">Months</label></div></li>';
//	form_html += '</div>';
//	form_html += '</div>';
	form_html += '</ul></fieldset></li>';

	$('.duration_3_years:last').after(form_html);

	$('#stepcontent_'+global_count+' .check_duration').click(check_duration);
	$('#stepcontent_'+global_count+' .remove_address').click(function(){
//		$(this).parent().parent().remove();
		$(this).parents('.duration_3_years').remove();
		return false;
	});
	$('#stepcontent_'+global_count+' .look_up_address_button').click(function(){
		clickAddressButton(this);
		return false;
	});
	
	$('#duration_years_'+global_count).change(checkAvailability);
	$('#duration_months_'+global_count).change(checkAvailability);
	
	return false;
}

function checkAvailability()
{
	var d_years = $.trim($(this).parent().find('.duration_years').val());
	var d_months = $.trim($(this).parent().find('.duration_months').val());
	
	if(d_years == '' || d_months == '')
		return false;
	check_duration();
}

function fetchAddress(address_id, container_dom)
{
	$('.look_up_address_select_input', $(container_dom)).after('<img src="'+config_layout_dir+'images/loading.gif" width="16" height="16" style="border: none;"/>');
	$.ajax({
		async: false
		,type: "GET"
		,url: config_dir+"act_FetchAddressDetails.php"
		,data: "address_id="+address_id
		,dataType: "script"
		//,success: function(msg){
		//	alert( "Data Saved: " + msg );
		//}
		,complete: function (XMLHttpRequest, textStatus) {
			$('.look_up_address_select img', $(container_dom)).remove();
		}
	});
	if(ajax_address)
	{
		$('input[name^=postcode]', $(container_dom).parent()).val(ajax_address.postcode);
		$('input[name^=building_number]', $(container_dom).parent()).val(ajax_address.number);
		$('input[name^=street]', $(container_dom).parent()).val(ajax_address.street);
		$('input[name^=address_line_2]', $(container_dom).parent()).val(ajax_address.line2);
		$('input[name^=address_line_3]', $(container_dom).parent()).val(ajax_address.line3);
		$('input[name^=city]', $(container_dom).parent()).val(ajax_address.city);
		$('input[name^=county]', $(container_dom).parent()).val(ajax_address.county);
		$('option[value=1]', $('select[name^=country]', $(container_dom).parent())).attr('selected','selected');
	}
}

function clickAddressButton(eventObject)
{
	$('.look_up_address_select', $(eventObject).parent()).html('');
	
	$(eventObject).html('<img src="'+config_layout_dir+'images/loading.gif" width="16" height="16" style="border: none;"/>');
	
	$.ajax({
		async: false
		,type: "GET"
		,url: config_dir+"act_LookUpAddress.php"
		,data: "postcode="+$('.look_up_address_input', $(eventObject).parent()).val()
		,dataType: "script"
		//,success: function(msg){
		//	alert( "Data Saved: " + msg );
		//}
		,complete: function (XMLHttpRequest, textStatus) {
			$(eventObject).html('Find address');
		}

	});

	if(ajax_result != false)
	{
		if(ajax_result.length != 1)
		{
			xhtml = '';
			xhtml += '<label>Select address:</label><select class="look_up_address_select_input">';
			xhtml += '<option value="">Please Select</option>';
			for(i=0;i<ajax_result.length;i++)
				xhtml += '<option value="'+ajax_result[i].id+'">'+ajax_result[i].description+'</option>';
			xhtml += '</select>';
			//xhtml += '<div class="info">Please choose your address, enter manually or search again.</div>';
			xhtml += '<br/>';
			$('.look_up_address_select', $(eventObject).parent()).html(xhtml);
			
			$('.look_up_address_select_input', $(eventObject).parent()).change(function(){
				fetchAddress($(this).val(), $(eventObject).parent().get(0));
				$(this).parent().find('.info').hide();
			});
		}
		else
		{	
			$('.look_up_address', $(eventObject).parent()).val(ajax_result[0].description);
			fetchAddress(ajax_result[0].id, $(eventObject).parent().get(0));
		}
	}
	else
	{
		xhtml = '';
		xhtml += '<label>&nbsp;</label>';
		xhtml += '<label>Unfortunately, your address has not been found, please fill in the form below</label><br />';
		
		$('.look_up_address_select', $(eventObject).parent()).html(xhtml);
	}
	
	
	return false;
}
