!function($){var charMin,tpl,defaults,fillRGBFields,fillHSBFields,fillHexFields,setSelector,setHue,setCurrentColor,setNewColor,keyDown,change,blur,focus,downIncrement,moveIncrement,upIncrement,downHue,moveHue,upHue,downSelector,moveSelector,upSelector,enterSubmit,leaveSubmit,clickSubmit,show,hide,isChildOf,getViewport,fixHSB,fixRGB,fixHex,HexToRGB,HexToHSB,RGBToHSB,HSBToRGB,RGBToHex,HSBToHex,restoreOriginal,ColorPicker=(charMin=65,defaults={eventName:"click",onShow:function(){},onBeforeShow:function(){},onHide:function(){},onChange:function(){},onSubmit:function(){},color:"ff0000",livePreview:!0,flat:!(tpl='
')},fillRGBFields=function(hsb,cal){var rgb=HSBToRGB(hsb);$(cal).data("colorpicker").fields.eq(1).val(rgb.r).end().eq(2).val(rgb.g).end().eq(3).val(rgb.b).end()},fillHSBFields=function(hsb,cal){$(cal).data("colorpicker").fields.eq(4).val(hsb.h).end().eq(5).val(hsb.s).end().eq(6).val(hsb.b).end()},fillHexFields=function(hsb,cal){$(cal).data("colorpicker").fields.eq(0).val(HSBToHex(hsb)).end()},setSelector=function(hsb,cal){$(cal).data("colorpicker").selector.css("backgroundColor","#"+HSBToHex({h:hsb.h,s:100,b:100})),$(cal).data("colorpicker").selectorIndic.css({left:parseInt(150*hsb.s/100,10),top:parseInt(150*(100-hsb.b)/100,10)})},setHue=function(hsb,cal){$(cal).data("colorpicker").hue.css("top",parseInt(150-150*hsb.h/360,10))},setCurrentColor=function(hsb,cal){$(cal).data("colorpicker").currentColor.css("backgroundColor","#"+HSBToHex(hsb))},setNewColor=function(hsb,cal){$(cal).data("colorpicker").newColor.css("backgroundColor","#"+HSBToHex(hsb))},keyDown=function(ev){var pressedKey=ev.charCode||ev.keyCode||-1;if(charMinviewPort.t+viewPort.h&&(top-=this.offsetHeight+176),left+356>viewPort.l+viewPort.w&&(left-=356),cal.css({left:left+"px",top:top+"px"}),0!=cal.data("colorpicker").onShow.apply(this,[cal.get(0)])&&cal.show(),$(document).bind("mousedown",{cal:cal},hide),!1},hide=function(ev){isChildOf(ev.data.cal.get(0),ev.target,ev.data.cal.get(0))||(0!=ev.data.cal.data("colorpicker").onHide.apply(this,[ev.data.cal.get(0)])&&ev.data.cal.hide(),$(document).unbind("mousedown",hide))},isChildOf=function(parentEl,el,container){if(parentEl==el)return!0;if(parentEl.contains)return parentEl.contains(el);if(parentEl.compareDocumentPosition)return!!(16&parentEl.compareDocumentPosition(el));for(var prEl=el.parentNode;prEl&&prEl!=container;){if(prEl==parentEl)return!0;prEl=prEl.parentNode}return!1},getViewport=function(){var m="CSS1Compat"==document.compatMode;return{l:window.pageXOffset||(m?document.documentElement.scrollLeft:document.body.scrollLeft),t:window.pageYOffset||(m?document.documentElement.scrollTop:document.body.scrollTop),w:window.innerWidth||(m?document.documentElement.clientWidth:document.body.clientWidth),h:window.innerHeight||(m?document.documentElement.clientHeight:document.body.clientHeight)}},fixHSB=function(hsb){return{h:Math.min(360,Math.max(0,hsb.h)),s:Math.min(100,Math.max(0,hsb.s)),b:Math.min(100,Math.max(0,hsb.b))}},fixRGB=function(rgb){return{r:Math.min(255,Math.max(0,rgb.r)),g:Math.min(255,Math.max(0,rgb.g)),b:Math.min(255,Math.max(0,rgb.b))}},fixHex=function(hex){var len=6-hex.length;if(0>16,g:(65280&hex)>>8,b:255&hex}},HexToHSB=function(hex){return RGBToHSB(HexToRGB(hex))},RGBToHSB=function(rgb){var hsb={h:0,s:0,b:0},min=Math.min(rgb.r,rgb.g,rgb.b),max=Math.max(rgb.r,rgb.g,rgb.b),delta=max-min;return hsb.b=max,hsb.s=0!=max?255*delta/max:0,0!=hsb.s?rgb.r==max?hsb.h=(rgb.g-rgb.b)/delta:rgb.g==max?hsb.h=2+(rgb.b-rgb.r)/delta:hsb.h=4+(rgb.r-rgb.g)/delta:hsb.h=-1,hsb.h*=60,hsb.h<0&&(hsb.h+=360),hsb.s*=100/255,hsb.b*=100/255,hsb},HSBToRGB=function(hsb){var rgb={},h=Math.round(hsb.h),s=Math.round(255*hsb.s/100),v=Math.round(255*hsb.b/100);if(0==s)rgb.r=rgb.g=rgb.b=v;else{var t1=v,t2=(255-s)*v/255,t3=h%60*(t1-t2)/60;360==h&&(h=0),h<60?(rgb.r=t1,rgb.b=t2,rgb.g=t2+t3):h<120?(rgb.g=t1,rgb.b=t2,rgb.r=t1-t3):h<180?(rgb.g=t1,rgb.r=t2,rgb.b=t2+t3):h<240?(rgb.b=t1,rgb.r=t2,rgb.g=t1-t3):h<300?(rgb.b=t1,rgb.g=t2,rgb.r=t2+t3):h<360?(rgb.r=t1,rgb.g=t2,rgb.b=t1-t3):(rgb.r=0,rgb.g=0,rgb.b=0)}return{r:Math.round(rgb.r),g:Math.round(rgb.g),b:Math.round(rgb.b)}},RGBToHex=function(rgb){var hex=[rgb.r.toString(16),rgb.g.toString(16),rgb.b.toString(16)];return $.each(hex,function(nr,val){1==val.length&&(hex[nr]="0"+val)}),hex.join("")},HSBToHex=function(hsb){return RGBToHex(HSBToRGB(hsb))},restoreOriginal=function(){var cal=$(this).parent(),col=cal.data("colorpicker").origColor;cal.data("colorpicker").color=col,fillRGBFields(col,cal.get(0)),fillHexFields(col,cal.get(0)),fillHSBFields(col,cal.get(0)),setSelector(col,cal.get(0)),setHue(col,cal.get(0)),setNewColor(col,cal.get(0))},{init:function(opt){if("string"==typeof(opt=$.extend({},defaults,opt||{})).color)opt.color=HexToHSB(opt.color);else if(opt.color.r!=undefined&&opt.color.g!=undefined&&opt.color.b!=undefined)opt.color=RGBToHSB(opt.color);else{if(opt.color.h==undefined||opt.color.s==undefined||opt.color.b==undefined)return this;opt.color=fixHSB(opt.color)}return this.each(function(){if(!$(this).data("colorpickerId")){var options=$.extend({},opt);options.origColor=opt.color;var id="collorpicker_"+parseInt(1e3*Math.random());$(this).data("colorpickerId",id);var cal=$(tpl).attr("id",id);options.flat?cal.appendTo(this).show():cal.appendTo(document.body),options.fields=cal.find("input").bind("keyup",keyDown).bind("change",change).bind("blur",blur).bind("focus",focus),cal.find("span").bind("mousedown",downIncrement).end().find(">div.colorpicker_current_color").bind("click",restoreOriginal),options.selector=cal.find("div.colorpicker_color").bind("mousedown",downSelector),options.selectorIndic=options.selector.find("div div"),options.el=this,options.hue=cal.find("div.colorpicker_hue div"),cal.find("div.colorpicker_hue").bind("mousedown",downHue),options.newColor=cal.find("div.colorpicker_new_color"),options.currentColor=cal.find("div.colorpicker_current_color"),cal.data("colorpicker",options),cal.find("div.colorpicker_submit").bind("mouseenter",enterSubmit).bind("mouseleave",leaveSubmit).bind("click",clickSubmit),fillRGBFields(options.color,cal.get(0)),fillHSBFields(options.color,cal.get(0)),fillHexFields(options.color,cal.get(0)),setHue(options.color,cal.get(0)),setSelector(options.color,cal.get(0)),setCurrentColor(options.color,cal.get(0)),setNewColor(options.color,cal.get(0)),options.flat?cal.css({position:"relative",display:"block"}):$(this).bind(options.eventName,show)}})},showPicker:function(){return this.each(function(){$(this).data("colorpickerId")&&show.apply(this)})},hidePicker:function(){return this.each(function(){$(this).data("colorpickerId")&&$("#"+$(this).data("colorpickerId")).hide()})},setColor:function(col){if("string"==typeof col)col=HexToHSB(col);else if(col.r!=undefined&&col.g!=undefined&&col.b!=undefined)col=RGBToHSB(col);else{if(col.h==undefined||col.s==undefined||col.b==undefined)return this;col=fixHSB(col)}return this.each(function(){if($(this).data("colorpickerId")){var cal=$("#"+$(this).data("colorpickerId"));cal.data("colorpicker").color=col,cal.data("colorpicker").origColor=col,fillRGBFields(col,cal.get(0)),fillHSBFields(col,cal.get(0)),fillHexFields(col,cal.get(0)),setHue(col,cal.get(0)),setSelector(col,cal.get(0)),setCurrentColor(col,cal.get(0)),setNewColor(col,cal.get(0))}})}});$.fn.extend({ColorPicker:ColorPicker.init,ColorPickerHide:ColorPicker.hidePicker,ColorPickerShow:ColorPicker.showPicker,ColorPickerSetColor:ColorPicker.setColor})}(jQuery);