(function(B){var A=function(){var r={},C,m=65,T,o='<div class="colorpicker"><div class="colorpicker_color"><div><div></div></div></div><div class="colorpicker_hue"><div></div></div><div class="colorpicker_new_color"></div><div class="colorpicker_current_color"></div><div class="colorpicker_hex"><input type="text" maxlength="6" size="6" /></div><div class="colorpicker_rgb_r colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_g colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_h colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_s colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_submit"></div></div>',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))},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}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(t){var w={};var AA=Math.round(t.h);var z=Math.round(t.s*255/100);var u=Math.round(t.b*255/100);if(z==0){w.r=w.g=w.b=u}else{var AB=u;var y=(255-z)*u/255;var x=(AB-y)*(AA%60)/60;if(AA==360){AA=0}if(AA<60){w.r=AB;w.b=y;w.g=y+x}else{if(AA<120){w.g=AB;w.b=y;w.r=AB-x}else{if(AA<180){w.g=AB;w.r=y;w.b=y+x}else{if(AA<240){w.b=AB;w.r=y;w.g=AB-x}else{if(AA<300){w.b=AB;w.g=y;w.r=y+x}else{if(AA<360){w.r=AB;w.g=y;w.b=AB-x}else{w.r=0;w.g=0;w.b=0}}}}}}}return{r:Math.round(w.r),g:Math.round(w.g),b:Math.round(w.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);
