(function($) {

	var newsletter = $.fn.newsletter = function() {	

		newsletter._initialize();
		return this;

	};
	
	newsletter._initialize = function(){
		
		$('form[name="newsletterform"]').each(function(){
		
			$(this).bind("submit",function(){
		
				var form = this;
				
				var $error = '';
				
				// check default values
				$('input[type="text"]',this).each(function(e){
					if(this.value == this.defaultValue){
						$(this).addClass("errorField");
						$error = "Please fill out all required fields.";
					}
				});
				
				// check email
				if($.trim($error)=="") {
					$('.emailfield',this).each(function(){
						if(!validateEmail($(this).val())){
							$(this).addClass("errorField");
							$error = "Please enter a valid e-mail address.";
						}
					});
				}
				
				if($.trim($error)=="") {
				
					$('.message',this).fadeOut(200);
					
					var $d = $(this).serialize();
					
					var $t = this;
					
					$.ajax({
						url: $(this).attr('action'),
						type: $(this).attr('method'),
						data: $d+'&ajax=true',
						success: function(msg){
							if(msg=="error"){
								$('.message',$t).html("there was an error. please try again.").fadeIn(200);
							} else {
								$('.message',$t).html("thanks! you're awesome!").fadeIn(200);
								form.reset();
								$('.field span, .textarea span',form).fadeIn(200);
							}
						}
					});
					
				} else {
				
					$('.message',this).html($error).fadeIn(200);
					
				}
				return false;
				
			});
		
		});
	
	}


	var contactform = $.fn.contactform = function() {	

		contactform._initialize();
		return this;

	};
	
	contactform._initialize = function(){	
		$('form[name=contactform]').bind("submit",function(){
		
			var form = this;
			
			var $error = '';
			
			// check default values
			$('.field input[name!="website"], textarea',this).each(function(e){
				if(this.value == this.defaultValue){
					$(this).addClass("errorField");
					$error = "Please fill out all required fields.";
				}
			});
			
			// check email
			if($.trim($error)=="") {
				$('.emailfield',this).each(function(){
					if(!validateEmail($(this).val())){
						$(this).addClass("errorField");
						$error = "Please enter a valid e-mail address.";
					}
				});
			}
			
			if($.trim($error)=="") {
			
				$('.button',form).addClass('button-loading');
				$('.button input',form).attr("disabled","disabled");
			
				$('.message',this).fadeOut(200);
				
				var $d = $(this).serialize();
				
				var $t = this;
				
				$.ajax({
					url: $(this).attr('action'),
					type: $(this).attr('method'),
					data: $d+'&ajax=true',
					success: function(msg){
						if(msg=="error"){
							$('.message',$t).html("there was an error. please try again.").fadeIn(200);
						} else {
							$('.message',$t).html("thanks! you're awesome!").fadeIn(200);
							form.reset();
							$('.field span, .textarea span',form).fadeIn(200);
						}
						$('.button',form).removeClass('button-loading');
						$('.button input',form).removeAttr('disabled');
					},
					error: function(){
						$('.message',$t).html("there was an error. please try again.").fadeIn(200);
						$('.button',form).removeClass('button-loading');
						$('.button input',form).removeAttr('disabled');
					}
				})
				
			} else {
			
				$('.message',this).html($error).fadeIn(200);
				
			}
			return false;
		})
	
	}

})(jQuery);


jQuery(document).ready(function($) {

	$(this).newsletter();
	$(this).contactform();
	
	$('input[type="text"],textarea,input[type="password"]').each(function(e){
		if (this.value == this.defaultValue){ 
			$(this).addClass("idleField");
		}
	});
	$('input[type="text"],textarea,input[type="password"]').focus(function() {
		$(this).removeClass("idleField").addClass("focusField");
		if (this.value == this.defaultValue){ 
			this.value = '';
		}
		if(this.value != this.defaultValue){
			this.select();
		}
		$(this).prev('span').fadeOut(200);
	});
	$('input[type="text"],textarea,input[type="password"]').blur(function() {
		if($.trim(this.value) == '' || $.trim(this.value) == this.defaultValue){
			$(this).removeClass("focusField").addClass("idleField");
			this.value = (this.defaultValue ? this.defaultValue : '');
			if($(this).hasClass('required')){
				$(this).parent().addClass('errorField');
			}
			$(this).prev('span').fadeIn(200);
		} else {
			if($(this).hasClass('required')){
				$(this).parent().removeClass('errorField');
			}	
		}
	});

});

function validateEmail(id)  {  
	var emailPattern = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/;
	return emailPattern.test(id);  	 
}