/* Contactform for jQuery
 * v0.1
 *
 * by Johannes Zinnau
 * http://www.johnimedia.de
 */
(function($) {
	$.fn.contactform = function(options){
		var settings = {
			buttonsend:'#btnSend',
			defaults:{},
			backend:'',
			onSend:function(){},
			onError:function(){},
			onComplete:function(){}
	    };
		if (options) {  $.extend( settings, options ); }
		
		return this.each(function() {
			var $this = $(this);
			
			$this.find('input,textarea').each(function(){
				var $el = $(this);
				
				if(typeof(settings.defaults[$el.attr('id')]) != 'undefined'){
					if($el.val() == ''){
						$el.val(settings.defaults[$el.attr('id')]);
					}
					$el.focus(function(){
						if($el.val() == settings.defaults[$el.attr('id')]){
							$el.val('');
						}
					});
					$el.blur(function(){
						if($el.val() == ''){
							$el.val(settings.defaults[$el.attr('id')]);
						}
					});
				}
				$el.change(function(){
					$el.parent().parent().removeClass('error');
				});
			});
			
			$this.find(settings.buttonsend).click(function(){
				settings.onSend();
				
				var values = {};
				
				$this.find('input,textarea').each(function(){
					var $el = $(this);
					if(typeof(settings.defaults[$el.attr('id')]) != 'undefined'){
						if($el.val() != settings.defaults[$el.attr('id')] && $el.val() != ''){
							values[$el.attr('id')] = $el.val();
						}else{
							values[$el.attr('id')] = '';
						}
					}
				});
				
				$.post(	settings['backend'], 
						{ values: values },
						function(data){
						   if(data.success){
							   $this.find('input,textarea').each(function(){
									var $el = $(this);
									if(typeof(settings.defaults[$el.attr('id')]) != 'undefined'){
											$el.val(settings.defaults[$el.attr('id')]);
									}
								});
							   settings.onComplete();
							   alert(data.message);
						   }else{
							   $(data.errors).each(function(){
								   $this.find('#' + this.id).parent().parent().addClass('error');
							   });
							   settings.onError();
							   alert(data.message);
						   }
						}, 
						"json");
			});
		});
	}
})(jQuery);
