﻿/// <reference path="jquery-1.3.2-vsdoc2.js" />
(function($) {

    function CheckboxList() {
        this._defaults = {
            itemClass: 'checkboxItem',
            listClass: 'checkboxList',
            data: 'Option 1,1;Option 2,2;Option 3,3;Option 4,4'
        }
    }

    $.extend(CheckboxList.prototype, {
        _getValue: function() {
            var result = 0;
            $.checkboxlist._target.find('input[type=checkbox][checked]').each(
                function() {
                    result = result + parseInt($(this).attr('tag'));
                }
            );
            return result;
        },
        _target: null,
        _setDefaults: function(settings) {
            $.extend(this._defaults, settings);
        },
        _attachCheckboxList: function(target) {
            var $this = jQuery(target);
            var list = jQuery('<ul>').addClass($.checkboxlist._defaults.listClass).appendTo($this);
            var options = $.checkboxlist._defaults.data.split(";");

            for (var i = 0; i < options.length; i++) {
                var itemData = options[i].split(",");
                var listItem = jQuery('<li>').addClass($.checkboxlist._defaults.itemClass);
                var checkbox = jQuery('<input/>').attr({
                    type: 'checkbox',
                    title: itemData[0],
                    tag: itemData[1],
                    name: 'checkbox' + itemData[1]
                });
                var label = jQuery('<label>').text(itemData[0]);
                listItem.append(checkbox);
                checkbox.after(label);
                list.append(listItem);
            }
            
        }
    });


    jQuery.fn.checkboxlist = function(o) {
        var otherArgs = Array.prototype.slice.call(arguments, 1);
        $.checkboxlist._target = this;
        if (typeof (o) == 'string' && o == 'getValue') {
            return $.checkboxlist._getValue();
        }
        else {
            $.checkboxlist._setDefaults(o);
            $.checkboxlist._attachCheckboxList(this);
            return this;
        }
    };

    $.checkboxlist = new CheckboxList();
})(jQuery);
