var activeClassName = "CheckBoxCrossActive";
var inActiveClassName = "CheckBoxCrossInActive";
var disabledCheckBoxClassName = "CheckBoxCrossDisable";

//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');
    });
}

//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 stylizeCheckBoxesCollection(checkBoxCollection, activeClassName, inActiveClassName) {
    //change class globally for all checkboxes
    //$(checkBoxCollection).each().hide();
    $(checkBoxCollection).each(function () {
        stylizeCheckBox(this, activeClassName, inActiveClassName)
    });
}

function stylizeCheckBox(checkBox, activeClassName, inActiveClassName) {
    $(checkBox).hide();

    if ($(checkBox).is(':checked'))
        $(checkBox).next().addClass(activeClassName);
    else
        $(checkBox).next().addClass(inActiveClassName);

    if ($(checkBox).is(':not(:disabled)')) {
        $(checkBox).next().removeClass(disabledCheckBoxClassName);
        $(checkBox).click(function () {
            if (this.checked) {
                setCheckBox($(checkBox), true, activeClassName, inActiveClassName);
            }
            else {
                setCheckBox($(checkBox), false, activeClassName, inActiveClassName);
            }
        });
    }
    else {       
        $(checkBox).next().addClass(disabledCheckBoxClassName);
    }
}

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);
    }
}
function stylizeCheckBoxesAllRev1(activeClassName, inActiveClassName) {
    stylizeCheckBoxesCollection($(":checkbox"), activeClassName, inActiveClassName);
}
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');
    });
}



