From 502142bf52c8e7dd7eba008f3c3c15cd559a67da Mon Sep 17 00:00:00 2001
From: Geordie Henderson
Date: Sun, 29 Sep 2013 21:29:57 -0700
Subject: [PATCH] Set everything up to be a self-contained working example
---
index.html | 65 +++++++++++++++++++++++++++
mm.itemselector.js | 85 ++++++++++++++++++++++++++++++++++++
mm.monthselector.jquery.json | 0
mm.monthselector.js | 4 +-
4 files changed, 152 insertions(+), 2 deletions(-)
create mode 100644 index.html
create mode 100644 mm.itemselector.js
mode change 100644 => 100755 mm.monthselector.jquery.json
mode change 100644 => 100755 mm.monthselector.js
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..771c6c8
--- /dev/null
+++ b/index.html
@@ -0,0 +1,65 @@
+
+
+
+
+
+ jQuery Plugin Month Selector
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mm.itemselector.js b/mm.itemselector.js
new file mode 100644
index 0000000..9ce0c3a
--- /dev/null
+++ b/mm.itemselector.js
@@ -0,0 +1,85 @@
+/*!
+ * Item Selector Widget
+ * https://github.com/mimaison/jQueryUI-Item-Selector
+ *
+ * Depends on:
+ * jquery.ui.accordion.js
+ */
+(function($) {
+'use strict';
+$.widget('mm.itemselector', {
+ version: '1.0.0',
+
+ options: {
+ items: [],
+ selected: [],
+ callback: $.noop
+ },
+
+ _create: function() {
+ var self = this;
+ var items = this.options.items;
+ for (var i = 0; i < items.length; i++) {
+ $('' + items[i][0] + '
').appendTo(this.element);
+ var div = $('').appendTo(this.element);
+ for (var j = 0; j < items[i][1].length; j++) {
+ var html = $('
' + items[i][1][j] + '
').appendTo(div);
+ html.mousedown(function() {
+ self._select(this);
+ });
+ }
+ }
+ $(this.element).accordion({
+ heightStyle: 'content'
+ });
+ this._setOption('selected', this.options.selected);
+ },
+
+ _select: function(element) {
+ $('#' + this.element.attr('id')).find('.active').each(function() {
+ $(this).removeClass('active');
+ });
+ var parts = $(element).attr('id').split('_');
+ this.options.selected = [ parts[1] , parts[2] ];
+ this._setTab(parseInt(this.options.selected[0], 10));
+ $(element).addClass('active');
+ this.options.callback(this.element, this.options.selected);
+ },
+
+ _setOption: function(key, value) {
+ if (key === 'selected') {
+ var rgx = /^\d+$/;
+ var i = (rgx.test(value[0])) ? value[0] : this._findKeyIndex(value[0]);
+ var j = (rgx.test(value[1])) ? value[1] : this._findItemIndex(i, value[1]);
+ var elements = $('#' + this.element.attr('id') + '_' + i + '_' + j);
+ if (elements.length === 1) {
+ this._select(elements[0]);
+ }
+ }
+ },
+
+ _findKeyIndex: function(key) {
+ var items = this.options.items;
+ for (var i = 0; i < items.length; i++) {
+ if (items[i][0] === key) return i;
+ }
+ return -1;
+ },
+
+ _findItemIndex: function(key, item) {
+ var items = this.options.items[key][1];
+ for (var i = 0; i < items.length; i++) {
+ if (items[i] === item) return i;
+ }
+ return -1;
+ },
+
+ _setTab: function(index) {
+ $(this.element).accordion({
+ active: index
+ });
+ }
+
+});
+
+}(jQuery));
\ No newline at end of file
diff --git a/mm.monthselector.jquery.json b/mm.monthselector.jquery.json
old mode 100644
new mode 100755
diff --git a/mm.monthselector.js b/mm.monthselector.js
old mode 100644
new mode 100755
index 3c6cf4d..31be947
--- a/mm.monthselector.js
+++ b/mm.monthselector.js
@@ -48,8 +48,8 @@ $.widget('mm.monthselector', {
_callback: function(element, item) {
var callback = element.monthselector('option', 'callback');
- var names = element.monthselector('option', 'names');
if (callback !== null) {
+ var names = element.monthselector('option', 'names');
var end = element.monthselector('option', 'end');
var months = ((end.getFullYear() - parseInt(item[0])) === end.getFullYear()) ? end.getMonth() : 11;
var month = (item[1] > 6) ? months - item[1] : Math.abs(item[1] - months);
@@ -68,4 +68,4 @@ $.widget('mm.monthselector', {
});
-}(jQuery));
+}(jQuery));
\ No newline at end of file