(function($){var j=function(){var g={},inAction,charMin=65,visible,tpl='<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>',defaults={eventName:'click',onShow:function(){},onBeforeShow:function(){},onHide:function(){},onChange:function(){},onSubmit:function(){},color:'ff0000',livePreview:true,flat:false},fillRGBFields=function(a,b){var c=HSBToRGB(a);$(b).data('colorpicker').fields.eq(1).val(c.r).end().eq(2).val(c.g).end().eq(3).val(c.b).end()},fillHSBFields=function(a,b){$(b).data('colorpicker').fields.eq(4).val(a.h).end().eq(5).val(a.s).end().eq(6).val(a.b).end()},fillHexFields=function(a,b){$(b).data('colorpicker').fields.eq(0).val(HSBToHex(a)).end()},setSelector=function(a,b){$(b).data('colorpicker').selector.css('backgroundColor','#'+HSBToHex({h:a.h,s:100,b:100}));$(b).data('colorpicker').selectorIndic.css({left:parseInt(150*a.s/100,10),top:parseInt(150*(100-a.b)/100,10)})},setHue=function(a,b){$(b).data('colorpicker').hue.css('top',parseInt(150-150*a.h/360,10))},setCurrentColor=function(a,b){$(b).data('colorpicker').currentColor.css('backgroundColor','#'+HSBToHex(a))},setNewColor=function(a,b){$(b).data('colorpicker').newColor.css('backgroundColor','#'+HSBToHex(a))},keyDown=function(a){var b=a.charCode||a.keyCode||-1;if((b>charMin&&b<=90)||b==32){return false}var c=$(this).parent().parent();if(c.data('colorpicker').livePreview===true){change.apply(this)}},change=function(a){var b=$(this).parent().parent(),col;if(this.parentNode.className.indexOf('_hex')>0){b.data('colorpicker').color=col=HexToHSB(fixHex(this.value))}else if(this.parentNode.className.indexOf('_hsb')>0){b.data('colorpicker').color=col=fixHSB({h:parseInt(b.data('colorpicker').fields.eq(4).val(),10),s:parseInt(b.data('colorpicker').fields.eq(5).val(),10),b:parseInt(b.data('colorpicker').fields.eq(6).val(),10)})}else{b.data('colorpicker').color=col=RGBToHSB(fixRGB({r:parseInt(b.data('colorpicker').fields.eq(1).val(),10),g:parseInt(b.data('colorpicker').fields.eq(2).val(),10),b:parseInt(b.data('colorpicker').fields.eq(3).val(),10)}))}if(a){fillRGBFields(col,b.get(0));fillHexFields(col,b.get(0));fillHSBFields(col,b.get(0))}setSelector(col,b.get(0));setHue(col,b.get(0));setNewColor(col,b.get(0));b.data('colorpicker').onChange.apply(b,[col,HSBToHex(col),HSBToRGB(col)])},blur=function(a){var b=$(this).parent().parent();b.data('colorpicker').fields.parent().removeClass('colorpicker_focus')},focus=function(){charMin=this.parentNode.className.indexOf('_hex')>0?70:65;$(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus');$(this).parent().addClass('colorpicker_focus')},downIncrement=function(a){var b=$(this).parent().find('input').focus();var c={el:$(this).parent().addClass('colorpicker_slider'),max:this.parentNode.className.indexOf('_hsb_h')>0?360:(this.parentNode.className.indexOf('_hsb')>0?100:255),y:a.pageY,field:b,val:parseInt(b.val(),10),preview:$(this).parent().parent().data('colorpicker').livePreview};$(document).bind('mouseup',c,upIncrement);$(document).bind('mousemove',c,moveIncrement)},moveIncrement=function(a){a.data.field.val(Math.max(0,Math.min(a.data.max,parseInt(a.data.val+a.pageY-a.data.y,10))));if(a.data.preview){change.apply(a.data.field.get(0),[true])}return false},upIncrement=function(a){change.apply(a.data.field.get(0),[true]);a.data.el.removeClass('colorpicker_slider').find('input').focus();$(document).unbind('mouseup',upIncrement);$(document).unbind('mousemove',moveIncrement);return false},downHue=function(a){var b={cal:$(this).parent(),y:$(this).offset().top};b.preview=b.cal.data('colorpicker').livePreview;$(document).bind('mouseup',b,upHue);$(document).bind('mousemove',b,moveHue)},moveHue=function(a){change.apply(a.data.cal.data('colorpicker').fields.eq(4).val(parseInt(360*(150-Math.max(0,Math.min(150,(a.pageY-a.data.y))))/150,10)).get(0),[a.data.preview]);return false},upHue=function(a){fillRGBFields(a.data.cal.data('colorpicker').color,a.data.cal.get(0));fillHexFields(a.data.cal.data('colorpicker').color,a.data.cal.get(0));$(document).unbind('mouseup',upHue);$(document).unbind('mousemove',moveHue);return false},downSelector=function(a){var b={cal:$(this).parent(),pos:$(this).offset()};b.preview=b.cal.data('colorpicker').livePreview;$(document).bind('mouseup',b,upSelector);$(document).bind('mousemove',b,moveSelector)},moveSelector=function(a){change.apply(a.data.cal.data('colorpicker').fields.eq(6).val(parseInt(100*(150-Math.max(0,Math.min(150,(a.pageY-a.data.pos.top))))/150,10)).end().eq(5).val(parseInt(100*(Math.max(0,Math.min(150,(a.pageX-a.data.pos.left))))/150,10)).get(0),[a.data.preview]);return false},upSelector=function(a){fillRGBFields(a.data.cal.data('colorpicker').color,a.data.cal.get(0));fillHexFields(a.data.cal.data('colorpicker').color,a.data.cal.get(0));$(document).unbind('mouseup',upSelector);$(document).unbind('mousemove',moveSelector);return false},enterSubmit=function(a){$(this).addClass('colorpicker_focus')},leaveSubmit=function(a){$(this).removeClass('colorpicker_focus')},clickSubmit=function(a){var b=$(this).parent();var c=b.data('colorpicker').color;b.data('colorpicker').origColor=c;setCurrentColor(c,b.get(0));b.data('colorpicker').onSubmit(c,HSBToHex(c),HSBToRGB(c),this)},show=function(a){var b=$('#'+$(this).data('colorpickerId'));b.data('colorpicker').onBeforeShow.apply(this,[b.get(0)]);var c=$(this).offset();var d=getViewport();var e=c.top+this.offsetHeight;var f=c.left;if(e+176>d.t+d.h){e-=this.offsetHeight+176}if(f+356>d.l+d.w){f-=356}b.css({left:f+'px',top:e+'px'});if(b.data('colorpicker').onShow.apply(this,[b.get(0)])!=false){b.show()}$(document).bind('mousedown',{cal:b},hide);return false},hide=function(a){if(!isChildOf(a.data.cal.get(0),a.target,a.data.cal.get(0))){if(a.data.cal.data('colorpicker').onHide.apply(this,[a.data.cal.get(0)])!=false){a.data.cal.hide()}$(document).unbind('mousedown',hide)}},isChildOf=function(a,b,c){if(a==b){return true}if(a.contains){return a.contains(b)}if(a.compareDocumentPosition){return!!(a.compareDocumentPosition(b)&16)}var d=b.parentNode;while(d&&d!=c){if(d==a)return true;d=d.parentNode}return false},getViewport=function(){var m=document.compatMode=='CSS1Compat';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(a){return{h:Math.min(360,Math.max(0,a.h)),s:Math.min(100,Math.max(0,a.s)),b:Math.min(100,Math.max(0,a.b))}},fixRGB=function(a){return{r:Math.min(255,Math.max(0,a.r)),g:Math.min(255,Math.max(0,a.g)),b:Math.min(255,Math.max(0,a.b))}},fixHex=function(a){var b=6-a.length;if(b>0){var o=[];for(var i=0;i<b;i++){o.push('0')}o.push(a);a=o.join('')}return a},HexToRGB=function(a){var a=parseInt(((a.indexOf('#')>-1)?a.substring(1):a),16);return{r:a>>16,g:(a&0x00FF00)>>8,b:(a&0x0000FF)}},HexToHSB=function(a){return RGBToHSB(HexToRGB(a))},RGBToHSB=function(a){var b={};b.b=Math.max(Math.max(a.r,a.g),a.b);b.s=(b.b<=0)?0:Math.round(100*(b.b-Math.min(Math.min(a.r,a.g),a.b))/b.b);b.b=Math.round((b.b/255)*100);if((a.r==a.g)&&(a.g==a.b))b.h=0;else if(a.r>=a.g&&a.g>=a.b)b.h=60*(a.g-a.b)/(a.r-a.b);else if(a.g>=a.r&&a.r>=a.b)b.h=60+60*(a.g-a.r)/(a.g-a.b);else if(a.g>=a.b&&a.b>=a.r)b.h=120+60*(a.b-a.r)/(a.g-a.r);else if(a.b>=a.g&&a.g>=a.r)b.h=180+60*(a.b-a.g)/(a.b-a.r);else if(a.b>=a.r&&a.r>=a.g)b.h=240+60*(a.r-a.g)/(a.b-a.g);else if(a.r>=a.b&&a.b>=a.g)b.h=300+60*(a.r-a.b)/(a.r-a.g);else b.h=0;b.h=Math.round(b.h);return b},HSBToRGB=function(a){var b={};var h=Math.round(a.h);var s=Math.round(a.s*255/100);var v=Math.round(a.b*255/100);if(s==0){b.r=b.g=b.b=v}else{var c=v;var d=(255-s)*v/255;var e=(c-d)*(h%60)/60;if(h==360)h=0;if(h<60){b.r=c;b.b=d;b.g=d+e}else if(h<120){b.g=c;b.b=d;b.r=c-e}else if(h<180){b.g=c;b.r=d;b.b=d+e}else if(h<240){b.b=c;b.r=d;b.g=c-e}else if(h<300){b.b=c;b.g=d;b.r=d+e}else if(h<360){b.r=c;b.g=d;b.b=c-e}else{b.r=0;b.g=0;b.b=0}}return{r:Math.round(b.r),g:Math.round(b.g),b:Math.round(b.b)}},RGBToHex=function(c){var d=[c.r.toString(16),c.g.toString(16),c.b.toString(16)];$.each(d,function(a,b){if(b.length==1){d[a]='0'+b}});return d.join('')},HSBToHex=function(a){return RGBToHex(HSBToRGB(a))};return{init:function(c){c=$.extend({},defaults,c||{});if(typeof c.color=='string'){c.color=HexToHSB(c.color)}else if(c.color.r!=undefined&&c.color.g!=undefined&&c.color.b!=undefined){c.color=RGBToHSB(c.color)}else if(c.color.h!=undefined&&c.color.s!=undefined&&c.color.b!=undefined){c.color=fixHSB(c.color)}else{return this}c.origColor=c.color;return this.each(function(){if(!$(this).data('colorpickerId')){var a='collorpicker_'+parseInt(Math.random()*1000);$(this).data('colorpickerId',a);var b=$(tpl).attr('id',a);if(c.flat){b.appendTo(this).show()}else{b.appendTo(document.body)}c.fields=b.find('input').bind('keydown',keyDown).bind('change',change).bind('blur',blur).bind('focus',focus);b.find('span').bind('mousedown',downIncrement);c.selector=b.find('div.colorpicker_color').bind('mousedown',downSelector);c.selectorIndic=c.selector.find('div div');c.hue=b.find('div.colorpicker_hue div');b.find('div.colorpicker_hue').bind('mousedown',downHue);c.newColor=b.find('div.colorpicker_new_color');c.currentColor=b.find('div.colorpicker_current_color');b.data('colorpicker',c);b.find('div.colorpicker_submit').bind('mouseenter',enterSubmit).bind('mouseleave',leaveSubmit).bind('click',clickSubmit);fillRGBFields(c.color,b.get(0));fillHSBFields(c.color,b.get(0));fillHexFields(c.color,b.get(0));setHue(c.color,b.get(0));setSelector(c.color,b.get(0));setCurrentColor(c.color,b.get(0));setNewColor(c.color,b.get(0));if(c.flat){b.css({position:'relative',display:'block'})}else{$(this).bind(c.eventName,show)}}})},showPicker:function(){return this.each(function(){if($(this).data('colorpickerId')){show.apply(this)}})},hidePicker:function(){return this.each(function(){if($(this).data('colorpickerId')){$('#'+$(this).data('colorpickerId')).hide()}})},setColor:function(b){if(typeof b=='string'){b=HexToHSB(b)}else if(b.r!=undefined&&b.g!=undefined&&b.b!=undefined){b=RGBToHSB(b)}else if(b.h!=undefined&&b.s!=undefined&&b.b!=undefined){b=fixHSB(b)}else{return this}return this.each(function(){if($(this).data('colorpickerId')){var a=$('#'+$(this).data('colorpickerId'));a.data('colorpicker').color=b;a.data('colorpicker').origColor=b;fillRGBFields(b,a.get(0));fillHSBFields(b,a.get(0));fillHexFields(b,a.get(0));setHue(b,a.get(0));setSelector(b,a.get(0));setCurrentColor(b,a.get(0));setNewColor(b,a.get(0))}})}}}();$.fn.extend({ColorPicker:j.init,ColorPickerHide:j.hide,ColorPickerShow:j.show,ColorPickerSetColor:j.setColor})})(jQuery)
