﻿/*
* DataBind plug-in v1.0.1
* Copyright (c) 2009 James Westgate
* Dual licensed under the MIT and GPL licenses.
*
*/
(function(a) { a.fn.extend({ binddata: function(e, g, c) { var b = a(this); if (c != null && !a.isFunction(c)) { c = null } if (g != null && a.isFunction(g)) { g = null } return this.each(function() { if (a.isArray(e)) { var i = this.tagName.toLowerCase(); if (i == "table" || i == "tbody") { f(e) } else { if (i == "select") { d(this, e) } } } else { if (typeof (e) == "object") { h(e) } } }); function h(m) { for (var l in m) { var n = m[l]; var j = "#" + l; if (typeof (n) == "object" && !a.isArray(n)) { h(n); continue } if (g != null) { var o = g[l]; if (typeof (o) == "string") { j = o } } var i = true; if (c != null) { var k = { selector: j, value: n }; i = c(k); if (i) { j = k.selector; n = k.value } } if (i) { a(j, b).each(function() { var p = this.tagName.toLowerCase(); var r = a(this); if (p == "input") { r.val(n) } else { if (p == "select") { if (a.isArray(n)) { d(this, n) } else { try { r.val(n.toString()) } catch (q) { } } } else { if (r.text() == r.html()) { r.text(n) } else { r.html(n) } } } }) } } } function d(n, q) { var m = []; for (var l in q) { var p = q[l]; if (typeof (p) == "object") { if (a.isArray(p)) { m.push('<option value="'); m.push(p[0]); m.push('">'); m.push(p[1]) } else { var k = true; for (var o in p) { var j = p[o]; if (k) { m.push('<option value="'); m.push(j); m.push('">'); k = false } else { m.push(j); break } } } } else { m.push("<option>"); m.push(p) } m.push("</option>") } a(n).html(m.join("")) } function f(q) { var k = a.isArray(q[0]); var o = []; var u = []; var j; var m = ""; var v = true; var s = null; o.push("<tbody>"); for (var n in q) { u = q[n]; m = "<tr>"; v = true; if (c != null) { var r = { element: m, row: u, col: n }; v = c(r); if (v) { m = r.element } } if (v) { o.push(m); if (k) { for (var l in u) { s = u[l]; m = "<td>"; v = true; if (g != null && a.isArray(g)) { var p = g[l]; if (typeof (p) == "number") { s = u[p] } } if (c != null) { var r = { element: m, value: s, col: l }; v = c(r); if (v) { m = r.element; s = r.value } } if (v) { o.push(m); o.push(s); o.push("</td>") } } } else { if (typeof (u) == "object") { var n = 0; for (var t in u) { s = u[t]; m = "<td>"; v = true; if (g != null) { t = g[n]; s = u[t] } if (c != null) { var r = { element: m, key: t, value: s }; v = c(r); if (v) { m = r.element; s = r.value } } if (v) { o.push(m); o.push(s); o.push("</td>") } if (g != null && n >= g.length - 1) { break } n++ } } else { s = u; m = "<td>"; v = true; if (c != null) { var r = { element: m, value: s }; v = c(r); if (v) { m = r.element; s = r.value } } if (v) { o.push(m); o.push(s); o.push("</td>") } } } o.push("</tr>") } } o.push("</tbody>"); a("tbody", b).replaceWith(o.join("")) } }, unbinddata: function(c, e, d) { var b = a(this); if (d != null && !a.isFunction(d)) { d = null } if (e != null && a.isFunction(e)) { e = null } return this.each(function() { var f = []; if (e != null) { for (var o in e) { a(e[o], b).each(function() { var i = this.tagName.toLowerCase(); var r = (i == "input" || i == "select") ? a(this).val() : a(this).text(); f.push({ element: this, name: o, value: r }) }) } } a("input, select", j).each(function() { var t = this; var i = true; for (var s in f) { var r = f[s]; if (r.element == t) { i = false; break } } if (i) { f.push({ element: this, name: a(t).attr("id"), value: a(t).val() }) } }); var j; var g; for (var k in f) { j = f[k]; if (j.name == "") { continue } var p = []; var l = true; for (var h in f) { g = f[h]; if (g.name == "") { continue } if (g.name == j.name) { p.push(g.value); if (j != g) { g.name = "" } } } var q = true; var n = (p.length == 1) ? p[0] : p; if (d != null) { var m = { selector: j.name, value: n }; q = d(m); if (q) { j.name = selector; n = m.value } } c[j.name] = n } }) } }) })(jQuery);