(function($) {
	
	$.fn.krd_validate = function(a) {
	
		var form = this;
		var error_message = '';
		var status = false;
		var defaults = {};
		var $inputs = $(form+':input');
		var url = a.url;
		$inputs.not('button').not('input[type="reset"]').not('input[type="submit"]').after('<span class="error"></span>');
		$($inputs).each(function() {
			defaults[this.name] = $(this).val();
			$(this).focus(function() {
				
				if($(this).val() == defaults[this.name]) {
					$(this).val('')
				}
				
			});
			
			$(this).blur(function() {
				if($(this).val() == '') {
					$(this).val(defaults[this.name])
				}
			})
			
		})
		
		form.submit(function() {
		
		errors = [];
			$inputs.each(function() {
				
				if($(this).hasClass('required')) {
					status = required(this);
					if(!status) {
						errors[0] = this;
						$(this).next('.error').text('This field needs to be filled out');
					} else {
						$(this).next('.error').text('');
					}
				}
				
				if($(this).hasClass('email')) {
					status = email(this);
					if(!status) {
						errors[0] = this;
						$(this).next('.error').text('Your email is invalid');
					} else {
						$(this).next('.error').text('');
					}
					
				}
				
			});

			if(errors.length == 0) {
				params = $(form).serialize();
				//alert(params)
				$.ajax({
					url: url,
					data: params,
					type: 'post',
					success: function(r) {
						//console.log(r)
						$(':input', $(form))
						 .not(':button, :submit, :reset, :hidden')
						 .val('')
						 .removeAttr('checked')
						 .removeAttr('selected');
						
						$(form).append('<span style="font-weight:bold;" id="thank_you">Thank you</span>');
						$('#thank_you').fadeOut(4000)
						
					}
				})
				//return true;

			}
			return false;
		});
		
		
		
		required = function required(element) {

			if($(element).val() === '' || typeof $(element).val() == null || typeof $(element).val() === 'unidentified' || $(element).val() == defaults[element.name]) {
				error_message = 'Field '+element.name+' is required';
				return false;
			}
			
			return true;
		}
		
		
		email = function email(element) {
			
			pattern = /([aA-zZ0-9.-])+@[aA-zZ0-9-]+(.)[a-z]{3}/;
			regex = new RegExp(pattern);
			text = $(element).val();;
			
			if(!regex.test(text)) {
				
				error_message = 'Your email address is invalid';
				return false;
				
			}
			return true;
			
		}
		
		
	}
	
})(jQuery);
