function makeVisible(){
    $('.hidden').hide();
    $('.required_dyn').remove();
    $('.vol_dyn').removeClass('vol_required');
    $('.chkbx').each(function(){
        if (this.checked) {
            var id = this.id;
            $('.' + id + '_show').show();
            $('.' + id + '_required').parent('li').prepend('<span class="errors required_dyn">*</span>');
            $('.' + id + '_required').addClass('vol_required');
            $('.' + id + '_required').addClass('vol_dyn');
        }
    });
}

$(function(){
    makeVisible();
    
    $('.chkbx').click(function(){
        makeVisible();
    });
    
    $("#question_form").submit(function(){
        var good = true;
        $(".required").remove();
		
		var checkBoxChecked = false;
		$('.req_chk').each(function() {
			if(this.checked) {
				checkBoxChecked = true;
				return false;
			}
		});
		if(!checkBoxChecked) {
			good = false;
			$('.req_chk_list').after('<span class="required">Please select at least one option above<\/span>');
			$('.req_chk').focus();
		}
		
		if (good) {
			$(".vol_required").each(function(){
				if (!$(this).val()) {
					$(this).after('<span class="required"> Required<\/span>');
					this.focus();
					this.select();
					good = false;
					return false;
				}
			});
		}
        if (good) {
            var filter = /^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|AERO|ARPA|ASIA|BIZ|CAT|COM|COOP|EDU|GOV|INFO|INT|JOBS|MIL|MOBI|MUSEUM|NAME|NET|ORG|PRO|TEL|TRAVEL)$/i;
            $(".val_email").each(function(){
                if (!filter.test($(this).val())) {
                    $(this).after('<span class="required"> Email is not valid</span>');
                    false_check = 1;
                    this.focus();
                    good = false;
                    return false;
                }
            });
        }
        if (good) {
            var filter = /^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/;
            $(".val_phone").each(function(){
                if ($(this).val().length > 0 && !filter.test($(this).val())) {
                    $(this).after('<span class="required"> Phone number is not valid</span>');
                    false_check = 1;
                    this.focus();
                    good = false;
                    return false;
                }
            });
        }
        if (good) {
            $(".val_number").each(function(){
                var number = parseInt($(this).val(), 10);
                if (isNaN(number) || number <= 0) {
                    $(this).after('<span class="required"> Must be a number greater than 0</span>');
                    false_check = 1;
                    this.focus();
                    good = false;
                    return false;
                }
            });
        }
        if (good) {
            if ($("#email").val() != $("#email_confirm").val()) {
                $("#email_confirm").after('<span class="required">&nbsp;Emails do not match</span>');
                false_check = 1;
                $("#email").focus();
                good = false;
                return false;
            }
        }
        return good;
    });
});

