(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(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);