var activeClassName = "CheckBoxCrossActive";
var inActiveClassName = "CheckBoxCrossInActive";
//Accepts a class name and makes those check boxes mutually exclusive.
function defineUniqueCheckBoxes(className, activeClassName, inActiveClassName) {
    var $unique = $('input.' + className);
    $unique.click(function () {
        $unique.filter(':checked').not(this).next().removeClass(activeClassName);
        $unique.filter(':checked').not(this).next().addClass(inActiveClassName);
        $unique.filter(':checked').not(this).removeAttr('checked');
    });
}

function defineUniqueCheckBoxesSpan(className, activeClassName, inActiveClassName) {
    var $unique = $('span.' + className + " input:checkbox");
    $unique.click(function () {
        $unique.filter(':checked').not(this).next().removeClass(activeClassName);
        $unique.filter(':checked').not(this).next().addClass(inActiveClassName);
        $unique.filter(':checked').not(this).removeAttr('checked');
    });
}

//Adds classes for making the checkboxes modern.
function stylizeCheckBoxes(activeClassName, inActiveClassName) {
    //change class globally for all checkboxes
    stylizeCheckBoxesCollection($(".type-check").children("input:checkbox"), activeClassName, inActiveClassName);
}

function stylizeCheckBoxesAll(activeClassName, inActiveClassName) {
    stylizeCheckBoxesCollection($(":checkbox"), activeClassName, inActiveClassName);
}

function stylizeCheckBoxesAllRev1(activeClassName, inActiveClassName) {
    stylizeCheckBoxesCollection($(":checkbox"), activeClassName, inActiveClassName);
}


function stylizeCheckBoxesCollection(checkBoxCollection, activeClassName, inActiveClassName) {
    //change class globally for all checkboxes
    //$(checkBoxCollection).each().hide();
    $(checkBoxCollection).each(function () {

        $(this).hide();

        if ($(this).is(':checked'))
            $(this).next().addClass(activeClassName);
        else
            $(this).next().addClass(inActiveClassName);

        if ($(this).is(':not(:disabled)'))
            $(this).click(function () {
                if (this.checked) {
                    setCheckBox($(this), true, activeClassName, inActiveClassName);
                }
                else {
                    setCheckBox($(this), false, activeClassName, inActiveClassName);
                }
            });
    });
}

function stylizeCheckBoxesAll(activeClassName, inActiveClassName) {
    //change class globally for all checkboxes
    $("html").children("input:checkbox").hide();
    $("html").children("label").addClass(inActiveClassName);
    //set style for checkboxes that are checked on page load
    if ($(".type-check").children("input:checked")) {
        setCheckBox($("input:checked"), true, activeClassName, inActiveClassName)
    };
    //onclick function to toggle check and unchecked states    
    $(".type-check").children('input:checkbox').click(function () {
        if (this.checked) {
            setCheckBox($(this), true, activeClassName, inActiveClassName);
        }
        else {
            setCheckBox($(this), false, activeClassName, inActiveClassName);
        }
    });
}

function setCheckBox(checkbox, state, activeClassName, inActiveClassName) {
    if (state) {
        $(checkbox).next().addClass(activeClassName);
        $(checkbox).next().removeClass(inActiveClassName);
    }
    else {
        $(checkbox).next().removeClass(activeClassName);
        $(checkbox).next().addClass(inActiveClassName);
    }
}
