--- /dev/null
+/**
+ * Paginate - jQuery Plugin
+ * By Federico Cargnelutti <fedecarg@gmail.com>
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * - http://www.opensource.org/licenses/mit-license.php
+ * - http://www.gnu.org/licenses/gpl.html
+ *
+ * Examples and documentation at:
+ * - http://github.com/fedecarg/jquery-htmlpaginate
+ *
+ * Usage:
+ *
+ * <ul id="items">
+ * <li>Item 1</li>
+ * <li>Item 2</li>
+ * <li>Item 3</li>
+ * <li>Item 4</li>
+ * <li>Item 5</li>
+ * <li>Item 6</li>
+ * </ul>
+ * <div id="items-pagination" style="display:none">
+ * <a id="items-previous" href="#">« Previous</a>
+ * <a id="items-next" href="#">Next »</a>
+ * </div>
+ *
+ * <script type="text/javascript">
+ * $('#items').paginate({itemsPerPage: 2});
+ * </script>
+ *
+ */
+(function($) {
+
+$.fn.paginate = function(options) {
+
+ var Paginator = function(self, options) {
+
+ var defaults = {
+ itemsPerPage: 10,
+ selector: {
+ next: self.selector+'-next',
+ previous: self.selector+'-previous',
+ pagination: self.selector+'-pagination'
+ },
+ cssClassName: {
+ disabled: 'disabled'
+ }
+ };
+ var options = $.extend(defaults, options);
+ var currentPage = 1;
+ var numberOfPages = 1;
+ var numberOfItems = 0;
+
+ var init = function() {
+ numberOfItems = self.children().size();
+ numberOfPages = Math.ceil(numberOfItems / options.itemsPerPage);
+ if (numberOfPages > 1) {
+ $(options.selector.pagination).show();
+ $(options.selector.previous).addClass(options.cssClassName.disabled);
+ }
+
+ self.children().hide();
+ self.children().slice(0, options.itemsPerPage).show();
+
+ $(options.selector.previous).click(function(e){
+ e.preventDefault();
+ previous();
+ });
+ $(options.selector.next).click(function(e){
+ e.preventDefault();
+ next();
+ });
+
+ self.show();
+ }
+
+ var show = function(page) {
+ currentPage = page;
+ startPage = (currentPage - 1) * options.itemsPerPage;
+ endPage = startPage + options.itemsPerPage;
+ self.children().hide().slice(startPage, endPage).show();
+
+ var disabled = options.cssClassName.disabled;
+ $(options.selector.pagination + ' a').removeClass(disabled);
+ if (currentPage <= 1) {
+ $(options.selector.previous).addClass(disabled);
+ } else if (currentPage == numberOfPages) {
+ $(options.selector.next).addClass(disabled);
+ }
+ };
+
+ var next = function() {
+ if (currentPage < numberOfPages){
+ show(currentPage + 1);
+ }
+ };
+
+ var previous = function() {
+ if (currentPage > 1) {
+ show(currentPage - 1);
+ }
+ };
+
+ init();
+ return this;
+ }
+
+ return new Paginator(this, options);
+};
+})(jQuery);
--- /dev/null
+extended_json = {}
+$ = JQuery
+
+on_filter_change = () ->
+ query = $('#filter').val().toLowerCase();
+ $('.thumbs li').hide()
+ d = $.grep(extended_json.clips
+ (clip, i) ->
+ clip_id = clip.id.toLowerCase()
+ clip_desc = clip.description.toLowerCase() if clip.description
+ if clip_id.indexOf(query) >= 0 or clip_desc.indexOf(query) >= 0
+ true
+ if clip.subject
+ for subject in clip.subject
+ if q.toLowerCase().indexOf(query) >= 0
+ true
+ )
+ for filter in d
+ $('.thumbs li#' + filter.id).show()
+ false
+
+scrim = (visible, callback) ->
+ s = $('#script')
+ if visible = 1 then s.fadeIn(150, callback)
+ else s.fadeout(150, callback)
--- /dev/null
+// Generated by CoffeeScript 1.6.1
+(function() {
+ var $, extended_json, on_filter_change, scrim;
+
+ extended_json = {};
+
+ $ = JQuery;
+
+ on_filter_change = function() {
+ var d, filter, query, _i, _len;
+ query = $('#filter').val().toLowerCase();
+ $('.thumbs li').hide();
+ d = $.grep(extended_json.clips, function(clip, i) {
+ var clip_desc, clip_id, subject, _i, _len, _ref, _results;
+ clip_id = clip.id.toLowerCase();
+ if (clip.description) {
+ clip_desc = clip.description.toLowerCase();
+ }
+ if (clip_id.indexOf(query) >= 0 || clip_desc.indexOf(query) >= 0) {
+ true;
+ }
+ if (clip.subject) {
+ _ref = clip.subject;
+ _results = [];
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ subject = _ref[_i];
+ if (q.toLowerCase().indexOf(query) >= 0) {
+ _results.push(true);
+ } else {
+ _results.push(void 0);
+ }
+ }
+ return _results;
+ }
+ });
+ for (_i = 0, _len = d.length; _i < _len; _i++) {
+ filter = d[_i];
+ $('.thumbs li#' + filter.id).show();
+ }
+ return false;
+ };
+
+ scrim = function(visible, callback) {
+ var s;
+ s = $('#script');
+ if (visible = 1) {
+ return s.fadeIn(150, callback);
+ } else {
+ return s.fadeout(150, callback);
+ }
+ };
+
+}).call(this);