﻿/* LiteTest selectable
* Version 0.8
* Author Jonas Hagstedt
* URI: http://www.litetest.com/Resources.aspx/Selectable
* Released with the MIT License: http://www.opensource.org/licenses/mit-license.php
*/

jQuery.fn.selectable = function(options, maxSelect) {
	var settings = jQuery.extend({
		activeClass: "lt_selectable_active",
		hoverClass: "lt_hover_active",
		showCheckbox: false
	}, options);

	return this.each(function() {
		var $checkbox = $(this).find("input:checkbox");
		if (settings.showCheckbox == false)
			$checkbox.hide();

		$(this).hover(function() {
			$(this).addClass(settings.hoverClass);
		}, function() {
			$(this).removeClass(settings.hoverClass);
		});

		if ($(this).hasClass(settings.activeClass) == false && $checkbox.is(":checked")) {
			$(this).addClass(settings.activeClass);
			if (maxSelect != null)
				maxSelect--;
		}

		if ($(this).hasClass(settings.activeClass) == true && $checkbox.is(":checked") == false) {
			$(this).removeClass(settings.activeClass);
		}

		$(this).click(function() {
			if ($checkbox.attr('checked') == true) {
				$checkbox.attr('checked', false);
				$(this).removeClass(settings.activeClass)
				maxSelect++;
			} else {
				if (maxSelect == null || maxSelect > 0) {
					$checkbox.attr('checked', true);
					$(this).addClass(settings.activeClass)
					if (maxSelect != null)
						maxSelect--;
				}
			}
		});

	});
};
