function form_updateInputValidDiv(input) {
	if(input.hasClass('valid')) {
		input.next('div.valid')
		.removeClass('valid-false')
		.addClass('valid-true');
	} else {
		input.next('div.valid')
		.removeClass('valid-true')
		.addClass('valid-false');
		if(!input.hasClass('required') && input.val().length == 0) {
			input.next('div.valid').removeClass('valid-false');
		}
	}
}

$(document).ready(function() {
	
	$('form.live').live('submit', function() {
		return false;
	});
	
	$('form.live input.button').live('mouseover mouseout', function(e) {
		switch(e.type) {
			case 'mouseover':
				$(this).addClass('button-hover');
				break;
			case 'mouseout':
				$(this).removeClass('button-hover');
				break;
		}	
	});
	
	var AJAX_validateDomain = false;
	
	$('form.live input.email').live('keyup blur', function() {
		
		var valid = true;
		
		if(!$(this).val().match(/^([0-9a-z_]+(\.?[+\-0-9a-z_])*\@[0-9a-z]+((\.|-)[0-9a-z]+)*\.[a-z]{2,6})?$/i)) {
			valid = false;
		}
		
		if($(this).hasClass('required') && $(this).val().length == 0) {
			valid = false;
		}
		
		if(valid) {
			
			$(this).addClass('valid');
			
			var element = $(this);
			var domain = element.val().substring(element.val().indexOf('@') + 1, element.val().length);
			
			clearTimeout(AJAX_validateDomain);
			
			AJAX_validateDomain = setTimeout(function() {
				$.post(
					'/AJAX_validate-domain.php',
					{
						domain: domain
					},
					function(d) {
						if(d == 0) {
							element.removeClass('valid');
							form_updateInputValidDiv(element);
						}
					}
				)
			}, 1000);
			
		} else {
			$(this).removeClass('valid');
		}
		
		form_updateInputValidDiv($(this));
		
	});
	
	$('form.live input.name').live('keyup blur', function() {
		
		var valid = true;
		
		if(!$(this).val().match(/^(([A-Z][a-z]*|[a-z]+)(( |-){1}([A-Z][a-z]*|[a-z]+)|(\.,?|,){1} ([A-Z][a-z]*|[a-z]+))*\.?)?$/)) {
			valid = false;
		}
		
		if($(this).hasClass('required') && $(this).val().length == 0) {
			valid = false;
		}
		
		if(valid) {
			$(this).addClass('valid');
		} else {
			$(this).removeClass('valid');
		}
		
		form_updateInputValidDiv($(this));
		
	});
	
	$('form.live input.submit').live('mouseover mouseout', function(e) {
		switch(e.type) {
			case 'mouseover':
				$(this).addClass('submit-hover');
				break;
			case 'mouseout':
				$(this).removeClass('submit-hover');
				break;
		}	
	});
	
	$('form.live input.text').live('mouseover focus mouseout blur', function(e) {
		switch(e.type) {
			case 'mouseover':
				if(!$(this).attr('readonly')) {
					$(this).addClass('text-hover');
				}
				break;
			case 'focusin':
				if($(this).attr('readonly')) {
					$(this)
					.blur()
					.parents('form').find('input:submit').focus();
				} else {
					$(this)
					.removeClass('text-hover')
					.addClass('text-focus')
					.css('text-shadow', '0 -1px #343630'); /* denary */
				}
				break;
			case 'mouseout':
				$(this).removeClass('text-hover');
				break;
			case 'focusout':
				$(this)
				.removeClass('text-focus')
				.css('text-shadow', 'none');
				break;
		}	
	});
	
	$('form.live label').live('mouseover mouseout', function(e) {
		switch(e.type) {
			case 'mouseover':
				$('#' + $(this).attr('for')).mouseover();
				break;
			case 'mouseout':
				$('#' + $(this).attr('for')).mouseout();
				break;
		}
	});
	
	$('form.live textarea').live('mouseover focus keyup mouseout blur', function(e) {
		switch(e.type) {
			case 'mouseover':
				if(!$(this).attr('readonly')) {
					$(this).addClass('hover');
				}
				break;
			case 'focusin':
				if($(this).attr('readonly')) {
					$(this)
					.blur()
					.parents('form').find('input:submit').focus();
				} else {
					$(this)
					.removeClass('hover')
					.addClass('focus')
					.css('text-shadow', '0 -1px #343630'); /* denary */
				}
				break;
			case 'keyup':
				if($(this).hasClass('required')) {
					if($(this).val().length > 0) {
						$(this).addClass('valid');
					} else {
						$(this).removeClass('valid');
					}
				}
				$(this).next('div.textarea')
				.html(htmlentities($(this).val()).replace(/\n/g, '<br>'))
				.css('word-wrap', 'break-word');
				if($(this).next('div.textarea').outerHeight() != $(this).height()) {
					$(this)
					.stop()
					.animate( {
						height: ($(this).next('div.textarea').outerHeight() > 144 ? $(this).next('div.textarea').outerHeight() : 144) + 'px'
					}, 'fast');
				}
				break;
			case 'mouseout':
				$(this).removeClass('hover');
				break;
			case 'focusout':
				$(this)
				.removeClass('focus')
				.css('text-shadow', 'none');
				break;
		}	
	});
	
	$('form.live input').next('div.valid').html('<div></div>');
	
	$('form.live textarea').each(function() {
		
		var textarea = $('<div class="textarea"></div>');
		var element = $(this);
		
		setTimeout(function() {
			textarea.css( {
				'font-family': element.css('font-family'),
				'font-size': element.css('font-size'),
				'line-height': element.css('line-height'),
				'padding-bottom': element.css('line-height'),
				width: element.width() + 'px'
			});
		}, 0);
		
		element.after(textarea);
		
	});
	
});
