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