// FORM VALIDATION PLUGIN
/*
	
	GECKO NEW MEDIA 2010

*/
(function($){ 
		  
	$.fn.validateForm = function() {
		
		var self = this[0];
		var $send = $('input[type=submit]',this).addClass('disabled').attr('disabled','disabled').css({'cursor':'default'}),
			$required = $('.required');

		return this.each(function() {
		
			var type = this.type,  
				tag = this.tagName.toLowerCase(),
				name = this.name, 
				is_required = $(this).hasClass('required'),
				$pass = $('.pass');

			if (typeof(name) == 'string') {
				name = name.toLowerCase();
			}
			if (tag == 'form')
      			return $(':input',this).validateForm();
			
			if (is_required) {
				
				var label = $(this).parents('li:first').find('label'),
					t = label.text()
					rTitle = t + ' *';
				label.text(rTitle);

				$(this).after('<span class="indicator" />');
				var $flag = $(this).parent().find('.indicator');
				
				$(this).bind('click blur keyup',function(){

					if (this.value == '') {
						$(this).addClass('fail').removeClass('pass');
					} else {
						if (name == 'email') {
							if (!validateEmail(this.value)) {
								$(this).addClass('fail').removeClass('pass');
								if ($('.bademail').length == 0) {
									$flag.parent().append('<span class="bademail">invalid email address!</span>');
								}

							} else {
								$(this).removeClass('fail').addClass('pass');
								$flag.parent().find('span.bademail').remove();

							}
						} else {
							$(this).removeClass('fail').addClass('pass');

						}
					}
					
					$pass = $('.pass');

					if ($required.length == $pass.length) {
						$('input[type=submit]').removeClass('disabled').removeAttr('disabled').css({'cursor':'pointer'});							
					} else {
						$('input[type=submit]').addClass('disabled').attr('disabled','disabled').css({'cursor':'default'});
					}

					
				});

			}

			function validateEmail(email) {
				var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
				return emailPattern.test(email);
			}
	
		});
		
	}
	
})(jQuery);
