﻿/*
*
* Copyright (c) 2006-2008 Sam Collett (http://www.texotela.co.uk)
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
*
* Version 2.2.4
* Demo: http://www.texotela.co.uk/code/jquery/select/
*
* $LastChangedDate: 2008-06-17 17:27:25 +0100 (Tue, 17 Jun 2008) $
* $Rev: 5727 $
*
*/
; (function(h) { h.fn.addOption = function() { var j = function(a, f, c, g) { var d = document.createElement("option"); d.value = f, d.text = c; var b = a.options; var e = b.length; if (!a.cache) { a.cache = {}; for (var i = 0; i < e; i++) { a.cache[b[i].value] = i } } if (typeof a.cache[f] == "undefined") a.cache[f] = e; a.options[a.cache[f]] = d; if (g) { d.selected = true } }; var k = arguments; if (k.length == 0) return this; var l = true; var m = false; var n, o, p; if (typeof (k[0]) == "object") { m = true; n = k[0] } if (k.length >= 2) { if (typeof (k[1]) == "boolean") l = k[1]; else if (typeof (k[2]) == "boolean") l = k[2]; if (!m) { o = k[0]; p = k[1] } } this.each(function() { if (this.nodeName.toLowerCase() != "select") return; if (m) { for (var a in n) { j(this, a, n[a], l) } } else { j(this, o, p, l) } }); return this }; h.fn.ajaxAddOption = function(c, g, d, b, e) { if (typeof (c) != "string") return this; if (typeof (g) != "object") g = {}; if (typeof (d) != "boolean") d = true; this.each(function() { var f = this; h.getJSON(c, g, function(a) { h(f).addOption(a, d); if (typeof b == "function") { if (typeof e == "object") { b.apply(f, e) } else { b.call(f) } } }) }); return this }; h.fn.removeOption = function() { var d = arguments; if (d.length == 0) return this; var b = typeof (d[0]); var e, i; if (b == "string" || b == "object" || b == "function") { e = d[0]; if (e.constructor == Array) { var j = e.length; for (var k = 0; k < j; k++) { this.removeOption(e[k], d[1]) } return this } } else if (b == "number") i = d[0]; else return this; this.each(function() { if (this.nodeName.toLowerCase() != "select") return; if (this.cache) this.cache = null; var a = false; var f = this.options; if (!!e) { var c = f.length; for (var g = c - 1; g >= 0; g--) { if (e.constructor == RegExp) { if (f[g].value.match(e)) { a = true } } else if (f[g].value == e) { a = true } if (a && d[1] === true) a = f[g].selected; if (a) { f[g] = null } a = false } } else { if (d[1] === true) { a = f[i].selected } else { a = true } if (a) { this.remove(i) } } }); return this }; h.fn.sortOptions = function(e) { var i = h(this).selectedValues(); var j = typeof (e) == "undefined" ? true : !!e; this.each(function() { if (this.nodeName.toLowerCase() != "select") return; var c = this.options; var g = c.length; var d = []; for (var b = 0; b < g; b++) { d[b] = { v: c[b].value, t: c[b].text} } d.sort(function(a, f) { o1t = a.t.toLowerCase(), o2t = f.t.toLowerCase(); if (o1t == o2t) return 0; if (j) { return o1t < o2t ? -1 : 1 } else { return o1t > o2t ? -1 : 1 } }); for (var b = 0; b < g; b++) { c[b].text = d[b].t; c[b].value = d[b].v } }).selectOptions(i, true); return this }; h.fn.selectOptions = function(g, d) { var b = g; var e = typeof (g); if (e == "object" && b.constructor == Array) { var i = this; h.each(b, function() { i.selectOptions(this, d) }) }; var j = d || false; if (e != "string" && e != "function" && e != "object") return this; this.each(function() { if (this.nodeName.toLowerCase() != "select") return this; var a = this.options; var f = a.length; for (var c = 0; c < f; c++) { if (b.constructor == RegExp) { if (a[c].value.match(b)) { a[c].selected = true } else if (j) { a[c].selected = false } } else { if (a[c].value == b) { a[c].selected = true } else if (j) { a[c].selected = false } } } }); return this }; h.fn.copyOptions = function(g, d) { var b = d || "selected"; if (h(g).size() == 0) return this; this.each(function() { if (this.nodeName.toLowerCase() != "select") return this; var a = this.options; var f = a.length; for (var c = 0; c < f; c++) { if (b == "all" || (b == "selected" && a[c].selected)) { h(g).addOption(a[c].value, a[c].text) } } }); return this }; h.fn.containsOption = function(g, d) { var b = false; var e = g; var i = typeof (e); var j = typeof (d); if (i != "string" && i != "function" && i != "object") return j == "function" ? this : b; this.each(function() { if (this.nodeName.toLowerCase() != "select") return this; if (b && j != "function") return false; var a = this.options; var f = a.length; for (var c = 0; c < f; c++) { if (e.constructor == RegExp) { if (a[c].value.match(e)) { b = true; if (j == "function") d.call(a[c], c) } } else { if (a[c].value == e) { b = true; if (j == "function") d.call(a[c], c) } } } }); return j == "function" ? this : b }; h.fn.selectedValues = function() { var a = []; this.selectedOptions().each(function() { a[a.length] = this.value }); return a }; h.fn.selectedTexts = function() { var a = []; this.selectedOptions().each(function() { a[a.length] = this.text }); return a }; h.fn.selectedOptions = function() { return this.find("option:selected") } })(jQuery);

