(function($){
    $.fn.subscribe = function(){
		
		
		/* validate */
		$("#subscribe-form", this).validate({
			
			/* rules */
			rules: {
				
				email: {
					required: true,
					email: true,
					remote: "/modules/validate-email.php",
					maxlength: 150,
				},
				
				name: {
					required: true,
					maxlength: 150,
				},
				
				telephone: {
					required: true,
					maxlength: 20,
				},
			
			},
			
			/* messages */
			messages: {
				
				email: {
					required: "This field is required",
					email: "Enter a valid email address",
					remote: "Enter a valid email address",
				},
				
				name: "Please provide your name", 
				
				telephone: "Please provide your telephone number", 
				
			},
			
			/* errors */
			errorPlacement: function(error, element){
				
				error.insertBefore( element.parents(".inputs-widgets") );
				
			},
			
			/* submit */
			submitHandler: function(form){
				
				var submits = $("#subscribe-widget");
				var form = $("#subscribe-form", submits);
				
				var params = {};
				params['validator'] = form.find("input[name=validator]").val();
				params['authenticator'] = form.find("input[name=authenticator]").val();
				
				params['name'] = form.find("input[name=name]").val();
				params['email'] = form.find("input[name=email]").val();
				params['telephone'] = form.find("input[name=telephone]").val();
				params['comments'] = form.find("textarea").val();
				
				params['address'] = form.find("input[name=address]").val();
				params['variant'] = form.find("input[name=variant]").val();
				params['city'] = form.find("input[name=city]").val();
				params['region'] = form.find("input[name=region]").val();
				params['code'] = form.find("input[name=code]").val();
				
				form.animate({ opacity: "toggle", height: "toggle" }, 500);
				form.find("input[name=name]").val("");
				form.find("input[name=email]").val("");
				form.find("input[name=telephone]").val("");
				form.find("textarea").val("");
				
				form.find("input[name=address]").val("");
				form.find("input[name=variant]").val("");
				form.find("input[name=city]").val("");
				form.find("input[name=region]").val("");
				form.find("input[name=code]").val("");
				
				$.ajax({
					type: "post",
					dataType: "html",
					url: "/modules/subscribe/",
					data: params,
					cache: false,
					success: function(msg){
						
						submits.find(".widget-titles").unbind("click").css("cursor", "default").html(msg);
						
					}
				});
					
			},
			
		});
		
		
		// init
		this.init = function(){
			
			var widget = this;
			var form = $("#subscribe-form", widget);
			
			$(".widget-titles", widget).click(function(){
				form.slideToggle(500);
			});
			
		};
		
		// activate
		return this.init();
		
    };
})(jQuery);
