(function (b) { var a = function () { var R = {}, c, M = 65, t, O = '
', B = {eventName: "click", onShow: function () { }, onBeforeShow: function () { }, onHide: function () { }, onChange: function () { }, onSubmit: function () { }, color: "ff0000", livePreview: true, flat: false}, I = function (S, U) { var T = j(S); b(U).data("colorpicker").fields.eq(1).val(T.r).end().eq(2).val(T.g).end().eq(3).val(T.b).end() }, u = function (S, T) { b(T).data("colorpicker").fields.eq(4).val(S.h).end().eq(5).val(S.s).end().eq(6).val(S.b).end() }, g = function (S, T) { b(T).data("colorpicker").fields.eq(0).val(Q(S)).end() }, l = function (S, T) { b(T).data("colorpicker").selector.css("backgroundColor", "#" + Q({h: S.h, s: 100, b: 100})); b(T).data("colorpicker").selectorIndic.css({left: parseInt(150 * S.s / 100, 10), top: parseInt(150 * (100 - S.b) / 100, 10)}) }, F = function (S, T) { b(T).data("colorpicker").hue.css("top", parseInt(150 - 150 * S.h / 360, 10)) }, h = function (S, T) { b(T).data("colorpicker").currentColor.css("backgroundColor", "#" + Q(S)) }, E = function (S, T) { b(T).data("colorpicker").newColor.css("backgroundColor", "#" + Q(S)) }, n = function (S) { var U = S.charCode || S.keyCode || -1; if ((U > M && U <= 90) || U == 32) { return false } var T = b(this).parent().parent(); if (T.data("colorpicker").livePreview === true) { e.apply(this) } }, e = function (T) { var U = b(this).parent().parent(), S; if (this.parentNode.className.indexOf("_hex") > 0) { U.data("colorpicker").color = S = m(y(this.value)) } else { if (this.parentNode.className.indexOf("_hsb") > 0) { U.data("colorpicker").color = S = f({h: parseInt(U.data("colorpicker").fields.eq(4).val(), 10), s: parseInt(U.data("colorpicker").fields.eq(5).val(), 10), b: parseInt(U.data("colorpicker").fields.eq(6).val(), 10)}) } else { U.data("colorpicker").color = S = i(L({r: parseInt(U.data("colorpicker").fields.eq(1).val(), 10), g: parseInt(U.data("colorpicker").fields.eq(2).val(), 10), b: parseInt(U.data("colorpicker").fields.eq(3).val(), 10)})) } } if (T) { I(S, U.get(0)); g(S, U.get(0)); u(S, U.get(0)) } l(S, U.get(0)); F(S, U.get(0)); E(S, U.get(0)); U.data("colorpicker").onChange.apply(U, [S, Q(S), j(S)]) }, o = function (S) { var T = b(this).parent().parent(); T.data("colorpicker").fields.parent().removeClass("colorpicker_focus") }, J = function () { M = this.parentNode.className.indexOf("_hex") > 0 ? 70 : 65; b(this).parent().parent().data("colorpicker").fields.parent().removeClass("colorpicker_focus"); b(this).parent().addClass("colorpicker_focus") }, H = function (S) { var U = b(this).parent().find("input").focus(); var T = {el: b(this).parent().addClass("colorpicker_slider"), max: this.parentNode.className.indexOf("_hsb_h") > 0 ? 360 : (this.parentNode.className.indexOf("_hsb") > 0 ? 100 : 255), y: S.pageY, field: U, val: parseInt(U.val(), 10), preview: b(this).parent().parent().data("colorpicker").livePreview}; b(document).bind("mouseup", T, s); b(document).bind("mousemove", T, K) }, K = function (S) { S.data.field.val(Math.max(0, Math.min(S.data.max, parseInt(S.data.val + S.pageY - S.data.y, 10)))); if (S.data.preview) { e.apply(S.data.field.get(0), [true]) } return false }, s = function (S) { e.apply(S.data.field.get(0), [true]); S.data.el.removeClass("colorpicker_slider").find("input").focus(); b(document).unbind("mouseup", s); b(document).unbind("mousemove", K); return false }, w = function (S) { var T = {cal: b(this).parent(), y: b(this).offset().top}; T.preview = T.cal.data("colorpicker").livePreview; b(document).bind("mouseup", T, r); b(document).bind("mousemove", T, k) }, k = function (S) { e.apply(S.data.cal.data("colorpicker").fields.eq(4).val(parseInt(360 * (150 - Math.max(0, Math.min(150, (S.pageY - S.data.y)))) / 150, 10)).get(0), [S.data.preview]); return false }, r = function (S) { I(S.data.cal.data("colorpicker").color, S.data.cal.get(0)); g(S.data.cal.data("colorpicker").color, S.data.cal.get(0)); b(document).unbind("mouseup", r); b(document).unbind("mousemove", k); return false }, x = function (S) { var T = {cal: b(this).parent(), pos: b(this).offset()}; T.preview = T.cal.data("colorpicker").livePreview; b(document).bind("mouseup", T, A); b(document).bind("mousemove", T, q) }, q = function (S) { e.apply(S.data.cal.data("colorpicker").fields.eq(6).val(parseInt(100 * (150 - Math.max(0, Math.min(150, (S.pageY - S.data.pos.top)))) / 150, 10)).end().eq(5).val(parseInt(100 * (Math.max(0, Math.min(150, (S.pageX - S.data.pos.left)))) / 150, 10)).get(0), [S.data.preview]); return false }, A = function (S) { I(S.data.cal.data("colorpicker").color, S.data.cal.get(0)); g(S.data.cal.data("colorpicker").color, S.data.cal.get(0)); b(document).unbind("mouseup", A); b(document).unbind("mousemove", q); return false }, v = function (S) { b(this).addClass("colorpicker_focus") }, P = function (S) { b(this).removeClass("colorpicker_focus") }, p = function (T) { var U = b(this).parent(); var S = U.data("colorpicker").color; U.data("colorpicker").origColor = S; h(S, U.get(0)); U.data("colorpicker").onSubmit(S, Q(S), j(S)); U.hide() }, D = function (S) { var W = b("#" + b(this).data("colorpickerId")); W.data("colorpicker").onBeforeShow.apply(this, [W.get(0)]); var X = b(this).offset(); var V = z(); var U = X.top + this.offsetHeight; var T = X.left; if (U + 176 > V.t + V.h) { U -= this.offsetHeight + 176 } else { U += 5 } if (T + 356 > V.l + V.w) { T -= 356 } W.css({left: T + "px", top: U + "px"}); if (W.data("colorpicker").onShow.apply(this, [W.get(0)]) != false) { W.show() } b(document).bind("mousedown", {cal: W}, N); return false }, N = function (S) { if (!G(S.data.cal.get(0), S.target, S.data.cal.get(0))) { if (S.data.cal.data("colorpicker").onHide.apply(this, [S.data.cal.get(0)]) != false) { S.data.cal.hide() } b(document).unbind("mousedown", N) } }, G = function (U, T, S) { if (U == T) { return true } if (U.contains) { return U.contains(T) } if (U.compareDocumentPosition) { return !!(U.compareDocumentPosition(T) & 16) } var V = T.parentNode; while (V && V != S) { if (V == U) { return true } V = V.parentNode } return false }, z = function () { var S = document.compatMode == "CSS1Compat"; return{l: window.pageXOffset || (S ? document.documentElement.scrollLeft : document.body.scrollLeft), t: window.pageYOffset || (S ? document.documentElement.scrollTop : document.body.scrollTop), w: window.innerWidth || (S ? document.documentElement.clientWidth : document.body.clientWidth), h: window.innerHeight || (S ? document.documentElement.clientHeight : document.body.clientHeight)} }, f = function (S) { return{h: Math.min(360, Math.max(0, S.h)), s: Math.min(100, Math.max(0, S.s)), b: Math.min(100, Math.max(0, S.b))} }, L = function (S) { return{r: Math.min(255, Math.max(0, S.r)), g: Math.min(255, Math.max(0, S.g)), b: Math.min(255, Math.max(0, S.b))} }, y = function (U) { var S = 6 - U.length; if (S > 0) { var V = []; for (var T = 0; T < S; T++) { V.push("0") } V.push(U); U = V.join("") } return U }, d = function (S) { var S = parseInt(((S.indexOf("#") > -1) ? S.substring(1) : S), 16); return{r: S >> 16, g: (S & 65280) >> 8, b: (S & 255)} }, m = function (S) { return i(d(S)) }, i = function (T) { var S = {}; S.b = Math.max(Math.max(T.r, T.g), T.b); S.s = (S.b <= 0) ? 0 : Math.round(100 * (S.b - Math.min(Math.min(T.r, T.g), T.b)) / S.b); S.b = Math.round((S.b / 255) * 100); if ((T.r == T.g) && (T.g == T.b)) { S.h = 0 } else { if (T.r >= T.g && T.g >= T.b) { S.h = 60 * (T.g - T.b) / (T.r - T.b) } else { if (T.g >= T.r && T.r >= T.b) { S.h = 60 + 60 * (T.g - T.r) / (T.g - T.b) } else { if (T.g >= T.b && T.b >= T.r) { S.h = 120 + 60 * (T.b - T.r) / (T.g - T.r) } else { if (T.b >= T.g && T.g >= T.r) { S.h = 180 + 60 * (T.b - T.g) / (T.b - T.r) } else { if (T.b >= T.r && T.r >= T.g) { S.h = 240 + 60 * (T.r - T.g) / (T.b - T.g) } else { if (T.r >= T.b && T.b >= T.g) { S.h = 300 + 60 * (T.r - T.b) / (T.r - T.g) } else { S.h = 0 } } } } } } } S.h = Math.round(S.h); return S }, j = function (S) { var U = {}; var Y = Math.round(S.h); var X = Math.round(S.s * 255 / 100); var T = Math.round(S.b * 255 / 100); if (X == 0) { U.r = U.g = U.b = T } else { var Z = T; var W = (255 - X) * T / 255; var V = (Z - W) * (Y % 60) / 60; if (Y == 360) { Y = 0 } if (Y < 60) { U.r = Z; U.b = W; U.g = W + V } else { if (Y < 120) { U.g = Z; U.b = W; U.r = Z - V } else { if (Y < 180) { U.g = Z; U.r = W; U.b = W + V } else { if (Y < 240) { U.b = Z; U.r = W; U.g = Z - V } else { if (Y < 300) { U.b = Z; U.g = W; U.r = W + V } else { if (Y < 360) { U.r = Z; U.g = W; U.b = Z - V } else { U.r = 0; U.g = 0; U.b = 0 } } } } } } } return{r: Math.round(U.r), g: Math.round(U.g), b: Math.round(U.b)} }, C = function (S) { var T = [S.r.toString(16), S.g.toString(16), S.b.toString(16)]; b.each(T, function (U, V) { if (V.length == 1) { T[U] = "0" + V } }); return T.join("") }, Q = function (S) { return C(j(S)) }; return{init: function (S) { S = b.extend({}, B, S || {}); if (typeof S.color == "string") { S.color = m(S.color) } else { if (S.color.r != undefined && S.color.g != undefined && S.color.b != undefined) { S.color = i(S.color) } else { if (S.color.h != undefined && S.color.s != undefined && S.color.b != undefined) { S.color = f(S.color) } else { return this } } } S.origColor = S.color; return this.each(function () { if (!b(this).data("colorpickerId")) { var U = "collorpicker_" + parseInt(Math.random() * 1000); b(this).data("colorpickerId", U); var T = b(O).attr("id", U); if (S.flat) { T.appendTo(this).show() } else { T.appendTo(document.body) } S.fields = T.find("input").bind("keydown", n).bind("change", e).bind("blur", o).bind("focus", J); T.find("span").bind("mousedown", H); S.selector = T.find("div.colorpicker_color").bind("mousedown", x); S.selectorIndic = S.selector.find("div div"); S.hue = T.find("div.colorpicker_hue div"); T.find("div.colorpicker_hue").bind("mousedown", w); S.newColor = T.find("div.colorpicker_new_color"); S.currentColor = T.find("div.colorpicker_current_color"); T.data("colorpicker", S); T.find("div.colorpicker_submit").bind("mouseenter", v).bind("mouseleave", P).bind("click", p); I(S.color, T.get(0)); u(S.color, T.get(0)); g(S.color, T.get(0)); F(S.color, T.get(0)); l(S.color, T.get(0)); h(S.color, T.get(0)); E(S.color, T.get(0)); if (S.flat) { T.css({position: "relative", display: "block"}) } else { b(this).bind(S.eventName, D) } } }) }, showPicker: function () { return this.each(function () { if (b(this).data("colorpickerId")) { D.apply(this) } }) }, hidePicker: function () { return this.each(function () { if (b(this).data("colorpickerId")) { b("#" + b(this).data("colorpickerId")).hide() } }) }, setColor: function (S) { if (typeof S == "string") { S = m(S) } else { if (S.r != undefined && S.g != undefined && S.b != undefined) { S = i(S) } else { if (S.h != undefined && S.s != undefined && S.b != undefined) { S = f(S) } else { return this } } } return this.each(function () { if (b(this).data("colorpickerId")) { var T = b("#" + b(this).data("colorpickerId")); T.data("colorpicker").color = S; T.data("colorpicker").origColor = S; I(S, T.get(0)); u(S, T.get(0)); g(S, T.get(0)); F(S, T.get(0)); l(S, T.get(0)); h(S, T.get(0)); E(S, T.get(0)) } }) }} }(); b.fn.extend({ColorPicker: a.init, ColorPickerHide: a.hide, ColorPickerShow: a.show, ColorPickerSetColor: a.setColor}) })(jQuery);