﻿/*
* jquery.tools 1.1.0 - The missing UI library for the Web
* 
* [tools.scrollable-1.1.0, tools.scrollable.circular-0.5.0]
* 
* Copyright (c) 2009 Tero Piirainen
* http://flowplayer.org/tools/
*
* Dual licensed under MIT and GPL 2+ licenses
* http://www.opensource.org/licenses
* 
* -----
* 
* File generated: Thu Sep 03 12:37:25 GMT+00:00 2009
*/
(function(c) { c.tools = c.tools || {}; c.tools.scrollable = { version: "1.1.0", conf: { size: 5, vertical: false, speed: 400, keyboard: true, keyboardSteps: null, disabledClass: "disabled", hoverClass: null, clickable: true, activeClass: "active", easing: "swing", items: ".items", item: null, prev: ".prev", next: ".next", prevPage: ".prevPage", nextPage: ".nextPage", api: false} }; var d, a = 0; function b(r, o, m) { var t = this, e = !o.vertical, f = r.children(), l = 0, j; if (!d) { d = t } function p(u, v) { c(t).bind(u, function(x, w) { if (v && v.call(this, w.index) === false && w) { w.proceed = false } }); return t } c.each(o, function(u, v) { if (c.isFunction(v)) { p(u, v) } }); if (f.length > 1) { f = c(o.items, r) } function n(v) { var u = c(v); return m == 1 || u.length == 1 || o.globalNav ? u : r.parent().find(v) } r.data("finder", n); var g = n(o.prev), i = n(o.next), h = n(o.prevPage), q = n(o.nextPage); c.extend(t, { getIndex: function() { return l }, getConf: function() { return o }, getSize: function() { return t.getItems().size() }, getPageAmount: function() { return Math.ceil(this.getSize() / o.size) }, getPageIndex: function() { return Math.ceil(l / o.size) }, getNaviButtons: function() { return g.add(i).add(h).add(q) }, getRoot: function() { return r }, getItemWrap: function() { return f }, getItems: function() { return f.children(o.item) }, getVisibleItems: function() { return t.getItems().slice(l, l + o.size) }, seekTo: function(u, y, v) { if (y === undefined) { y = o.speed } if (c.isFunction(y)) { v = y; y = o.speed } if (u < 0) { u = 0 } if (u > t.getSize() - o.size) { return this.end() } var w = t.getItems().eq(u); if (!w.length) { return t } var x = { index: u, proceed: true }; c(t).trigger("onBeforeSeek", x); if (!x.proceed) { return t } function z() { if (v) { v.call(t) } c(t).trigger("onSeek", x) } if (e) { f.animate({ left: -w.position().left }, y, o.easing, z) } else { f.animate({ top: -w.position().top }, y, o.easing, z) } d = t; l = u; return t }, move: function(w, v, u) { j = w > 0; return this.seekTo(l + w, v, u) }, next: function(v, u) { return this.move(1, v, u) }, prev: function(v, u) { return this.move(-1, v, u) }, movePage: function(y, x, w) { j = y > 0; var u = o.size * y; var v = l % o.size; if (v > 0) { u += (y > 0 ? -v : o.size - v) } return this.move(u, x, w) }, prevPage: function(v, u) { return this.movePage(-1, v, u) }, nextPage: function(v, u) { return this.movePage(1, v, u) }, setPage: function(v, w, u) { return this.seekTo(v * o.size, w, u) }, begin: function(v, u) { return this.seekTo(0, v, u) }, end: function(v, u) { var w = this.getSize() - o.size; return w > 0 ? this.seekTo(w, v, u) : t }, reload: function() { c(t).trigger("onReload", {}); return t }, onBeforeSeek: function(u) { return p("onBeforeSeek", u) }, onSeek: function(u) { return p("onSeek", u) }, onReload: function(u) { return p("onReload", u) }, focus: function() { d = t; return t }, click: function(w) { var x = t.getItems().eq(w), u = o.activeClass, v = o.size; if (w < 0 || w >= t.getSize()) { return t } if (v == 1) { if (w === 0 || w == t.getSize() - 1) { j = (j === undefined) ? true : !j } return j === false ? t.prev() : t.next() } if (v == 2) { if (w == l) { w-- } t.getItems().removeClass(u); x.addClass(u); return t.seekTo(w, time, fn) } if (!x.hasClass(u)) { t.getItems().removeClass(u); x.addClass(u); var z = Math.floor(v / 2); var y = w - z; if (y > t.getSize() - v) { y = t.getSize() - v } if (y !== w) { return t.seekTo(y) } } return t } }); g.addClass(o.disabledClass).click(function() { t.prev() }); i.click(function() { t.next() }); q.click(function() { t.nextPage() }); h.addClass(o.disabledClass).click(function() { t.prevPage() }); t.onSeek(function(u) { if (u === 0) { g.add(h).addClass(o.disabledClass) } else { g.add(h).removeClass(o.disabledClass) } if (u >= t.getSize() - o.size) { i.add(q).addClass(o.disabledClass) } else { i.add(q).removeClass(o.disabledClass) } }); var k = o.hoverClass, s = "keydown." + Math.random().toString().substring(10); t.onReload(function() { if (k) { t.getItems().hover(function() { c(this).addClass(k) }, function() { c(this).removeClass(k) }) } if (o.clickable) { t.getItems().each(function(u) { c(this).unbind("click.scrollable").bind("click.scrollable", function(v) { if (c(v.target).is("a")) { return } return t.click(u) }) }) } if (o.keyboard) { c(document).bind(s, function(u) { if (u.altKey || u.ctrlKey) { return } if (o.keyboard != "static" && d != t) { return } var v = o.keyboardSteps; if (e && (u.keyCode == 37 || u.keyCode == 39)) { t.move(u.keyCode == 37 ? -v : v); return u.preventDefault() } if (!e && (u.keyCode == 38 || u.keyCode == 40)) { t.move(u.keyCode == 38 ? -v : v); return u.preventDefault() } return true }) } else { c(document).unbind(s) } }); t.reload() } c.fn.scrollable = function(e) { var f = this.eq(typeof e == "number" ? e : 0).data("scrollable"); if (f) { return f } var g = c.extend({}, c.tools.scrollable.conf); c.extend(g, e); g.keyboardSteps = g.keyboardSteps || g.size; a += this.length; this.each(function() { f = new b(c(this), g); c(this).data("scrollable", f) }); return g.api ? f : this } })(jQuery);
(function(b) { var a = b.tools.scrollable; a.plugins = a.plugins || {}; a.plugins.circular = { version: "0.5.0", conf: { api: false, clonedClass: "cloned"} }; b.fn.circular = function(e) { var d = b.extend({}, a.plugins.circular.conf), c; b.extend(d, e); this.each(function() { var i = b(this).scrollable(), n = i.getItems(), k = i.getConf(), f = i.getItemWrap(), j = 0; if (i) { c = i } if (n.length < k.size) { return false } n.slice(0, k.size).each(function(o) { b(this).clone().appendTo(f).click(function() { i.click(n.length + o) }).addClass(d.clonedClass) }); var l = b.makeArray(n.slice(-k.size)).reverse(); b(l).each(function(o) { b(this).clone().prependTo(f).click(function() { i.click(-o - 1) }).addClass(d.clonedClass) }); var m = f.children(k.item); var h = k.hoverClass; if (h) { m.hover(function() { b(this).addClass(h) }, function() { b(this).removeClass(h) }) } function g(o) { var p = m.eq(o); if (k.vertical) { f.css({ top: -p.position().top }) } else { f.css({ left: -p.position().left }) } } g(k.size); b.extend(i, { move: function(s, r, p, q) { var u = j + s + k.size; var t = u > i.getSize() - k.size; if (u < 0 || t) { var o = j + k.size + (t ? -n.length : n.length); g(o); u = o + s } if (q) { m.removeClass(k.activeClass).eq(u + Math.floor(k.size / 2)).addClass(k.activeClass) } return i.seekTo(u, r, p) }, begin: function(p, o) { return this.seekTo(k.size, p, o) }, end: function(p, o) { return this.seekTo(n.length, p, o) }, click: function(p, r, q) { if (!k.clickable) { return self } if (k.size == 1) { return this.next() } var s = p - j, o = k.activeClass; s -= Math.floor(k.size / 2); return this.move(s, r, q, true) }, getIndex: function() { return j }, setPage: function(p, q, o) { return this.seekTo(p * k.size + k.size, q, o) }, getPageAmount: function() { return Math.ceil(n.length / k.size) }, getPageIndex: function() { if (j < 0) { return this.getPageAmount() - 1 } if (j >= n.length) { return 0 } return (j + k.size) / k.size - 1 }, getVisibleItems: function() { var o = j + k.size; return m.slice(o, o + k.size) } }); i.onSeek(function(o) { j = o - k.size; i.getNaviButtons().removeClass(k.disabledClass) }); i.getNaviButtons().removeClass(k.disabledClass) }); return d.api ? c : this } })(jQuery);
