function checkRequired(classCheck,classSet) {
	reqsMax = $('.'+classCheck).length;
	reqsOk = 0;
	$('.'+classCheck).each(function() {
		rel = $(this).attr('rel');
		if (rel != '') rel = '-' + rel;
		if ($.trim($(this).val()) != '') {
			if ($(this).hasClass(classCheck + rel + '-still')) {
				$(this).removeClass(classCheck + rel + '-still');
			}
			if (! $(this).hasClass(classCheck + rel + '-ok')) {
				$(this).addClass(classCheck + rel + '-ok');
			}
			++reqsOk;
		}
		else {
			if ($(this).hasClass(classCheck + rel + '-ok')) {
				$(this).removeClass(classCheck + rel + '-ok');
			}
			if (! $(this).hasClass(classCheck + rel + '-still')) {
				$(this).addClass(classCheck + rel + '-still');
			}
		}
	});
	if (reqsOk == reqsMax) {
		$('.'+classSet).each(function() {
			rel = $(this).attr('rel');
			if (rel != '') rel = '-' + rel;
			$(this).removeAttr('disabled');
			if ($(this).hasClass(classSet + rel + '-still')) {
				$(this).removeClass(classSet + rel + '-still');
			}
			if (! $(this).hasClass(classSet + rel + '-ok')) {
				$(this).addClass(classSet + rel + '-ok');
			}
		});
	}
	else {
		$('.'+classSet).each(function() {
			rel = $(this).attr('rel');
			if (rel != '') rel = '-' + rel;
			$(this).attr({'disabled' : 'disabled'});
			if ($(this).hasClass(classSet + rel + '-ok')) {
				$(this).removeClass(classSet + rel + '-ok');
			}
			if (! $(this).hasClass(classSet + rel + '-still')) {
				$(this).addClass(classSet + rel + '-still');
			}
		});
	}
}

$(document).ready(function() {
	if ($('.need-requirements').length > 0 && $('.required').length > 0) {
		checkRequired('required','need-requirements');
		$('.required').keyup(function() {
			checkRequired('required','need-requirements');
		});
		$('.required').mousemove(function() {
			checkRequired('required','need-requirements');
		});
	}
});