(function($) {

	$.fn.recommend = function(options) {
		
		var defaults = {
			dynamic: ".dynamic",
			result: ".result",
			classShow: "show",
			classAlert: "alert",
			classSuccess: "success",
			classError: "error"
		};
		var options = $.extend(defaults, options);
		
		return this.each(function() {
			
			var $dynamic = $(options.dynamic, this);
			var $result = $(options.result, this);
			var $form = $("form", this);
			var $inputs = $("input", $form);
			
			$form.submit(function() {
				var _errors = 0;
				var _data = {};
				
				$inputs.each(function(idx, elem) {
					var $elem = $(elem);
					
					if (!$elem.val()) {
						$elem.addClass(options.classAlert);
						_errors++;
					} else if ((elem.id == "senderMail" || elem.id == "receiverMail") && !/.+@.+\.../.test($elem.val())) {
						$elem.addClass(options.classAlert);
						_errors++;
					} else if (elem.id == "receiverMail" && $elem.val().match(/\;/g) && $elem.val().match(/\;/g).length > 1) {
						$elem.addClass(options.classAlert);
						_errors++;
					} else {
						_data[elem.id] = $elem.val();
					}
				});
				
				if (!_errors) {
					_data.message = $("#message").val();
					
					$.post(this.action, _data, function(result) {
						$dynamic.removeClass(options.classShow);
						
						if (result == options.classSuccess) {
							$result.addClass(options.classSuccess);
						} else {
							$result.addClass(options.classError);
						}
					}, "text")
				}
				
				return false;
			});
			
			$inputs.focus(function() {
				$(this).removeClass(options.classAlert);
			});
			
			$("a", $result).click(function() {
				$dynamic.addClass(options.classShow);
				$result.removeClass(options.classSuccess + " " + options.classError);
				
				return false;
			});
		
		});
	
	};

})(jQuery);
