
(function($){$.fn.colorPicker=function(){if(this.length>0)buildSelector();return this.each(function(i){buildPicker(this)});};var selectorOwner;var selectorShowing=false;buildPicker=function(element){control=$("<div class='color_picker'></div>")
control.css('background-color',$(element).val());control.bind("click",toggleSelector);$(element).before(control);$(element).hide();};buildSelector=function(){selector=$("<div id='_color_selector'></div>");$.each($.fn.colorPicker.defaultColors,function(i){swatch=$("<div class='_color_swatch'></div>");swatch.css("background-color","#"+this);swatch.bind("click",function(e){changeColor($(this).css("background-color"))});swatch.bind("mouseover",function(e){$(this).css("border-color","#598FEF");$("input#_color_value").val(toHex($(this).css("background-color")));});swatch.bind("mouseout",function(e){$(this).css("border-color","#000");$("input#_color_value").val(toHex($(selectorOwner).css("background-color")));});swatch.appendTo(selector);});hex_field=$("<label for='_color_value'>Hex</label><input type='text' size='8' id='_color_value'/>");hex_field.bind("keydown",function(event){if(event.keyCode==13){changeColor($(this).val());}
if(event.keyCode==27){toggleSelector()}});$("<div id='_color_custom'></div>").css('display','none').append(hex_field).appendTo(selector);$("body").append(selector);selector.hide();};checkMouse=function(event){var selector="div#_color_selector";var selectorParent=$(event.target).parents(selector).length;if(event.target==$(selector)[0]||event.target==selectorOwner||selectorParent>0)return
hideSelector();}
hideSelector=function(){var selector=$("div#_color_selector");$(document).unbind("mousedown",checkMouse);selector.hide();selectorShowing=false}
showSelector=function(){var selector=$("div#_color_selector");selector.css({top:$(selectorOwner).offset().top+($(selectorOwner).outerHeight()),left:$(selectorOwner).offset().left});hexColor=$(selectorOwner).next("input").val();$("input#_color_value").val(hexColor);selector.show();$(document).bind("mousedown",checkMouse);selectorShowing=true}
toggleSelector=function(event){selectorOwner=this;selectorShowing?hideSelector():showSelector();}
changeColor=function(value){if(selectedValue=toHex(value)){$(selectorOwner).css("background-color",selectedValue);$(selectorOwner).next("input").val(selectedValue);hideSelector();}};toHex=function(color){if(color.match(/[0-9a-fA-F]{3}$/)||color.match(/[0-9a-fA-F]{6}$/)){color=(color.charAt(0)=="#")?color:("#"+color);}
else if(color.match(/^rgb\(([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5]),[ ]{0,1}([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5]),[ ]{0,1}([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5])\)$/)){var c=([parseInt(RegExp.$1),parseInt(RegExp.$2),parseInt(RegExp.$3)]);var pad=function(str){if(str.length<2){for(var i=0,len=2-str.length;i<len;i++){str='0'+str;}}
return str;}
if(c.length==3){var r=pad(c[0].toString(16)),g=pad(c[1].toString(16)),b=pad(c[2].toString(16));color='#'+r+g+b;}}
else color=false;return color}
$.fn.colorPicker.addColors=function(colorArray){$.fn.colorPicker.defaultColors=$.fn.colorPicker.defaultColors.concat(colorArray);};$.fn.colorPicker.defaultColors=['22AA22','993300','333300','000F80','333399','333333','800000','FF6600','808000','008000','008080','0000FF','666699','808080','FF0000','FF9900','99CC00','339966','33CCCC','3366FF','800080','999999','FF00FF','FFCC00','FFFF00','00FF00','00FFFF','00CCFF','993366','C0C0C0','FF99CC','FFCC99','FFFF99','CCFFFF','99CCFF','FFFFFF'];})(jQuery);