/*
* jQuery TinySort 1.0.4
* Copyright (c) 2008 Ron Valstar
* Dual licensed under the MIT and GPL licenses:
*   http://www.opensource.org/licenses/mit-license.php
*   http://www.gnu.org/licenses/gpl.html
*/
(function (b) { b.tinysort = { id: "TinySort", version: "1.0.4", defaults: { order: "asc", attr: "", place: "start", returns: false} }; b.fn.extend({ tinysort: function (h, j) { if (h && typeof (h) != "string") { j = h; h = null } var e = b.extend({}, b.tinysort.defaults, j); var p = {}; this.each(function (t) { var v = (!h || h == "") ? b(this) : b(this).find(h); var u = e.order == "rand" ? "" + Math.random() : (e.attr == "" ? v.text() : v.attr(e.attr)); var s = b(this).parent(); if (!p[s]) { p[s] = { s: [], n: []} } if (v.length > 0) { p[s].s.push({ s: u, e: b(this), n: t }) } else { p[s].n.push({ e: b(this), n: t }) } }); for (var g in p) { var d = p[g]; d.s.sort(function k(t, s) { var i = t.s.toLowerCase ? t.s.toLowerCase() : t.s; var u = s.s.toLowerCase ? s.s.toLowerCase() : s.s; if (c(t.s) && c(s.s)) { i = parseFloat(t.s); u = parseFloat(s.s) } return (e.order == "asc" ? 1 : -1) * (i < u ? -1 : (i > u ? 1 : 0)) }) } var m = []; for (var g in p) { var d = p[g]; var n = []; var f = b(this).length; switch (e.place) { case "first": b.each(d.s, function (s, t) { f = Math.min(f, t.n) }); break; case "org": b.each(d.s, function (s, t) { n.push(t.n) }); break; case "end": f = d.n.length; break; default: f = 0 } var q = [0, 0]; for (var l = 0; l < b(this).length; l++) { var o = l >= f && l < f + d.s.length; if (a(n, l)) { o = true } var r = (o ? d.s : d.n)[q[o ? 0 : 1]].e; r.parent().append(r); if (o || !e.returns) { m.push(r.get(0)) } q[o ? 0 : 1]++ } } return this.pushStack(m) } }); function c(e) { var d = /^\s*?[\+-]?(\d*\.?\d*?)\s*?$/.exec(e); return d && d.length > 0 ? d[1] : false } function a(e, f) { var d = false; b.each(e, function (h, g) { if (!d) { d = g == f } }); return d } b.fn.TinySort = b.fn.Tinysort = b.fn.tsort = b.fn.tinysort })(jQuery);
