/**
 * File: jquery.wheelcolorpicker.js
 * 
 * Version 1.2.2
 * 21 August 2011
 * 
 * JavaScript Wheel Color Picker
 * http://www.jar2.net/projects/jquery-wheelcolorpicker
 * 
 * 
 * Copyright © 2011 Fajar Yoseph Chandra. All rights reserved.
 * Released under MIT License.
 * http://www.opensource.org/licenses/mit-license.php
 * 
 * Usage example: $('input').wheelColorPicker();
 */
(function($){var s={dir:'http://static.jar2.net/files-public/jquery/wheelcolorpicker/',format:'hex',preview:true,userinput:true,validate:false,color:null,alpha:false};var t=null;var u=false;var v=false;var w=false;var x={pr:1,pg:1,pb:1,val:1,sat:0,hue:0,r:255,g:255,b:255,alpha:1};var y={init:function(a){if(a)$.extend(s,a);switch(s.format){case'rgba':case'rgba%':s.alpha=true}$('head').prepend('<style type="text/css" id="jQWheelColorPickerCSS">'+'#jQWheelColorPickerDlg { '+'position: absolute !important;'+'border: solid 1px black;'+'width: 160px !important;'+'height: 134px !important;'+'padding: 8px !important;'+'background-color: #222;'+'_background-color: #fff;'+'z-index: 100000 !important;'+'box-shadow: 1px 1px 4px black;'+'cursor: default;'+'border-radius: 10px;'+'}'+'#jQWheelColorPickerDlg.jqwcpWithAlpha { '+'width: 190px !important;'+'}'+'#jQWheelColorPickerDlgWheel {'+'position: absolute !important;'+'left: 8px !important;'+'top: 8px !important;'+'width: 134px !important;'+'height: 134px !important;'+'background: url("'+s.dir+'/wheel.png") no-repeat center center !important;'+'}'+'#jQWheelColorPickerDlgSlider {'+'position: absolute !important;'+'display: block;'+'left: 150px !important;'+'top: 8px !important;'+'width: 16px !important;'+'height: 129px !important;'+'background-color: white;'+'border: solid 1px #111;'+'}'+'#jQWheelColorPickerDlgCross {'+'position: absolute !important;'+'background: url("'+s.dir+'/cross.png") no-repeat center center !important;'+'width: 11px !important;'+'height: 11px !important;'+'}'+'#jQWheelColorPickerDlgArrow {'+'position: absolute !important;'+'background: url("'+s.dir+'/arrow.png") no-repeat center center !important;'+'width: 7px !important;'+'height: 7px !important;'+'left: 143px !important;'+'top: 5px;'+'}'+'#jQWheelColorPickerDlgSlider .jqwcpSliderPoint,'+'#jQWheelColorPickerDlgSliderAlpha .jqwcpSliderPoint {'+'position: relative !important;'+'width: 100% !important;'+'height: 3px !important;'+'font-size: 0 !important;'+'}'+'#jQWheelColorPickerDlgArrowAlpha {'+'position: absolute !important;'+'background: url("'+s.dir+'/arrow.png") no-repeat center center !important;'+'width: 7px !important;'+'height: 7px !important;'+'left: 171px !important;'+'top: 134px;'+'}'+'#jQWheelColorPickerDlgSliderAlpha {'+'position: absolute !important;'+'display: block;'+'left: 178px !important;'+'top: 8px !important;'+'width: 16px !important;'+'height: 129px !important;'+'background: url("'+s.dir+'/alpha.png") center center !important;'+'background-color: white;'+'border: solid 1px #111;'+'}'+'</style>');return this.each(function(){$(this).bind('focus.wheelColorPicker',y.show);$(this).bind('blur.wheelColorPicker',y.hide);if(s.userinput){$(this).removeAttr('readonly');$(this).bind('keyup.wheelColorPicker',function(){if(y.updateColor($(this).val())){y.updateSelection();if(s.validate)$(this).wheelColorPicker("updateValue");else{if(s.preview){if(s.alpha){$(this).css('background-color','rgba('+x.r+', '+x.g+', '+x.b+', '+x.alpha+')')}else{$(this).css('background-color','rgb('+x.r+', '+x.g+', '+x.b+')')}$(this).css('color','rgb('+(255-x.r)+', '+(255-x.g)+', '+(255-x.b)+')')}}}})}else{$(this).attr('readonly','readonly')}if(s.color==null||s.color==undefined){if(('').trim){if($(this).val().trim()!='')$(this).wheelColorPicker('color',$(this).val())}else{if($(this).val()!='')$(this).wheelColorPicker('color',$(this).val())}}else{$(this).wheelColorPicker('color',s.color)}$(this).wheelColorPicker('updateValue')})},destroy:function(){$("#jQWheelColorPickerCSS").remove();return this.each(function(){$(this).unbind('.wheelColorPicker')})},updateValue:function(){if(s.preview){if(s.alpha){$(this).css('background-color','rgba('+x.r+', '+x.g+', '+x.b+', '+x.alpha+')')}else{$(this).css('background-color','rgb('+x.r+', '+x.g+', '+x.b+')')}$(this).css('color','rgb('+(255-x.r)+', '+(255-x.g)+', '+(255-x.b)+')')}var a='';switch(s.format){case'css':a+='#';default:case'hex':var r=x.r.toString(16);if(r.length==1)r='0'+r;var g=x.g.toString(16);if(g.length==1)g='0'+g;var b=x.b.toString(16);if(b.length==1)b='0'+b;a+=r+g+b;break;case'rgb':a+='rgb('+x.r+','+x.g+','+x.b+')';break;case'rgb%':var r=(x.r/255*100).toFixed(2);var g=(x.g/255*100).toFixed(2);var b=(x.b/255*100).toFixed(2);if(r==Math.round(r))r=Math.round(r);if(g==Math.round(g))g=Math.round(g);if(b==Math.round(b))b=Math.round(b);a+='rgb('+r+'%,'+g+'%,'+b+'%)';break;case'rgba':a+='rgba('+x.r+','+x.g+','+x.b+','+x.alpha+')';break;case'rgba%':var r=(x.r/255*100).toFixed(2);var g=(x.g/255*100).toFixed(2);var b=(x.b/255*100).toFixed(2);if(r==Math.round(r))r=Math.round(r);if(g==Math.round(g))g=Math.round(g);if(b==Math.round(b))b=Math.round(b);a+='rgba('+r+'%,'+g+'%,'+b+'%,'+x.alpha+')';break}$(this).val(a)},color:function(c){var r,g,b,a=1;if(c.length==7&&c.charAt(0)=='#'){if(isNaN(r=parseInt(c.substr(1,2),16)))return false;if(isNaN(g=parseInt(c.substr(3,2),16)))return false;if(isNaN(b=parseInt(c.substr(5,2),16)))return false}else if(c.length==6){if(isNaN(r=parseInt(c.substr(0,2),16)))return false;if(isNaN(g=parseInt(c.substr(2,2),16)))return false;if(isNaN(b=parseInt(c.substr(4,2),16)))return false}else if(c.substr(0,4)=='rgba'&&c.match(/rgba\s*\(\s*[0-9\.]+%\s*,\s*[0-9\.]+%\s*,\s*[0-9\.]+%\s*,\s*[01]\.?[0-9]*\s*\)/i)!=null){if(isNaN(r=parseInt(c.substring(c.indexOf('(')+1,c.indexOf(',')),10)))return false;else r=Math.round(r/100*255);if(isNaN(g=parseInt(c.substring(c.indexOf(',')+1,c.indexOf(',',c.indexOf(',')+1)),10)))return false;else g=Math.round(g/100*255);if(isNaN(b=parseInt(c.substring(c.indexOf(',',c.indexOf(',')+1)+1,c.lastIndexOf(',')),10)))return false;else b=Math.round(b/100*255);if(isNaN(a=parseFloat(c.substring(c.lastIndexOf(',')+1,c.lastIndexOf(')')),10)))return false}else if(c.substr(0,4)=='rgba'&&c.match(/rgba\s*\(\s*[0-9]{1,3}\s*,\s*[0-9]{1,3}\s*,\s*[0-9]{1,3}\s*,\s*[01]\.?[0-9]*\s*\)/i)!=null){if(isNaN(r=parseInt(c.substring(c.indexOf('(')+1,c.indexOf(',')),10)))return false;if(isNaN(g=parseInt(c.substring(c.indexOf(',')+1,c.indexOf(',',c.indexOf(',')+1)),10)))return false;if(isNaN(b=parseInt(c.substring(c.indexOf(',',c.indexOf(',')+1)+1,c.lastIndexOf(',')),10)))return false;if(isNaN(a=parseFloat(c.substring(c.lastIndexOf(',')+1,c.lastIndexOf(')')),10)))return false}else if(c.substr(0,3)=='rgb'&&c.match(/rgb\s*\(\s*[0-9\.]+%\s*,\s*[0-9\.]+%\s*,\s*[0-9\.]+%\s*\)/i)!=null){if(isNaN(r=parseInt(c.substring(c.indexOf('(')+1,c.indexOf(',')),10)))return false;else r=Math.round(r/100*255);if(isNaN(g=parseInt(c.substring(c.indexOf(',')+1,c.indexOf(',',c.indexOf(',')+1)),10)))return false;else g=Math.round(g/100*255);if(isNaN(b=parseInt(c.substring(c.indexOf(',',c.indexOf(',')+1)+1,c.lastIndexOf(')')),10)))return false;else b=Math.round(b/100*255)}else if(c.substr(0,3)=='rgb'&&c.match(/rgb\s*\(\s*[0-9]{1,3}\s*,\s*[0-9]{1,3}\s*,\s*[0-9]{1,3}\s*\)/i)!=null){if(isNaN(r=parseInt(c.substring(c.indexOf('(')+1,c.indexOf(',')),10)))return false;if(isNaN(g=parseInt(c.substring(c.indexOf(',')+1,c.indexOf(',',c.indexOf(',')+1)),10)))return false;if(isNaN(b=parseInt(c.substring(c.indexOf(',',c.indexOf(',')+1)+1,c.lastIndexOf(')')),10)))return false}else return false;x.r=r;x.g=g;x.b=b;x.alpha=a;var d=Math.max(r,g,b);var e=Math.min(r,g,b);var f=d-e;if(d!=0)x.sat=f/d;else x.sat=0;if(f==0)x.hue=0;else if(r==d)x.hue=(g-b)/f;else if(g==d)x.hue=2+(b-r)/f;else if(b==d)x.hue=4+(r-g)/f;else x.hue=0;x.hue=(x.hue*60+360)%360;x.val=d/255;if(x.val==0){x.pr=1;x.pg=1;x.pb=1}else{x.pr=r/255/x.val;x.pg=g/255/x.val;x.pb=b/255/x.val}$(this).wheelColorPicker('updateValue');return true},updateColor:function(a){return $(this).wheelColorPicker("color",a)},updateSlider:function(){var a=255/$('#jQWheelColorPickerDlgSlider').height();var b=$('#jQWheelColorPickerDlgSlider').height();$('#jQWheelColorPickerDlgSlider .jqwcpSliderPoint').each(function(){$(this).css('background-color','rgb('+Math.round(x.pr*a*b)+', '+Math.round(x.pg*a*b)+', '+Math.round(x.pb*a*b)+')');b-=3});if(s.alpha)y.updateSliderAlpha()},updateSliderAlpha:function(){var a=1/$('#jQWheelColorPickerDlgSliderAlpha').height();var b=0;$('#jQWheelColorPickerDlgSliderAlpha .jqwcpSliderPoint').each(function(){$(this).css('background-color','rgba('+Math.round(x.r)+', '+Math.round(x.g)+', '+Math.round(x.b)+', '+(a*b)+')');b+=3})},updateSelection:function(){var a=(1-x.val)*$('#jQWheelColorPickerDlgSlider').height()+parseInt($('#jQWheelColorPickerDlgSlider').css('top').replace('px',''),10)-$('#jQWheelColorPickerDlgArrow').outerHeight()/2;$('#jQWheelColorPickerDlgArrow').css('top',Math.round(a)+'px');var b=$('#jQWheelColorPickerDlgWheel').width()/2;var c=Math.cos(x.hue/180*Math.PI)*x.sat*b+b-$('#jQWheelColorPickerDlgCross').outerWidth()/2;$('#jQWheelColorPickerDlgCross').css('left',Math.round(c)+'px');var d=(Math.sin(x.hue/180*Math.PI)*x.sat*b)*-1+b-$('#jQWheelColorPickerDlgCross').outerHeight()/2;$('#jQWheelColorPickerDlgCross').css('top',Math.round(d)+'px');y.updateSlider()},show:function(e){if(t==this)return false;y.hide(e,true);$('body').append('<div id="jQWheelColorPickerDlg" style="display: none;" '+'class="'+((s.alpha)?'jqwcpWithAlpha':'')+'">'+'<div id="jQWheelColorPickerDlgWheel">'+'<span id="jQWheelColorPickerDlgCross">'+'</span>'+'</div>'+'<span id="jQWheelColorPickerDlgArrow">'+'</span>'+'<div id="jQWheelColorPickerDlgSlider">'+'</div>'+'</div>');var q=255/$('#jQWheelColorPickerDlgSlider').height();for(var i=$('#jQWheelColorPickerDlgSlider').height();i>=0;i-=3){$('#jQWheelColorPickerDlgSlider').append('<div class="jqwcpSliderPoint" style="background-color: rgb('+Math.round(q*i)+', '+Math.round(q*i)+', '+Math.round(q*i)+');">'+'</div>')}if(s.alpha){$('#jQWheelColorPickerDlg').append('<span id="jQWheelColorPickerDlgArrowAlpha">'+'</span>'+'<div id="jQWheelColorPickerDlgSliderAlpha">'+'</div>');var q=1/$('#jQWheelColorPickerDlgSliderAlpha').height();for(var i=0;i<=$('#jQWheelColorPickerDlgSliderAlpha').height();i+=3){$('#jQWheelColorPickerDlgSliderAlpha').append('<div class="jqwcpSliderPoint" style="background-color: rgba('+'0,0,0,'+(q*i)+');">'+'</div>')}}$('#jQWheelColorPickerDlgCross').css('left',($('#jQWheelColorPickerDlgWheel').width()/2+$('#jQWheelColorPickerDlgWheel').position().left-Math.ceil($('#jQWheelColorPickerDlgCross').width()/2))+'px');$('#jQWheelColorPickerDlgCross').css('top',($('#jQWheelColorPickerDlgWheel').height()/2+$('#jQWheelColorPickerDlgWheel').position().top-Math.ceil($('#jQWheelColorPickerDlgCross').height()/2))+'px');$('#jQWheelColorPickerDlg').bind('mousedown',function(){$(t).unbind('blur');setTimeout(function(){$(t).bind('blur',y.hide)},1);return false});$('#jQWheelColorPickerDlg').bind('click',function(){$(t).get(0).focus()});$('#jQWheelColorPickerDlgWheel').bind('mousedown',function(){u=true});$('#jQWheelColorPickerDlgSlider').bind('mousedown',function(){v=true});if(s.alpha){$('#jQWheelColorPickerDlgSliderAlpha').bind('mousedown',function(){w=true})}$('#jQWheelColorPickerDlg').bind('mouseup',function(){u=false;v=false;w=false});$('#jQWheelColorPickerDlg').bind('mousemove mousedown',function(e){if(u){var a=$('#jQWheelColorPickerDlgWheel').width()/2;var b=e.pageX-$('#jQWheelColorPickerDlgWheel').offset().left;var c=e.pageY-$('#jQWheelColorPickerDlgWheel').offset().top;var d=b-a;var f=a-c;var g=Math.sqrt(Math.pow(d,2)+Math.pow(f,2));if(g>a){d=a/g*d;f=a/g*f;b=d+a;c=a-f;g=a}var h=((d==0?(f>0?90:270):360*(Math.atan(f/d))/(2*Math.PI))+(d<0?180:0)+360)%360;var i=g/a;var j=(Math.abs(h+360)+60)%360<120?1:(h>240?(120-Math.abs(h-360))/60:(h<120?(120-h)/60:0));var k=Math.abs(h-120)<60?1:(Math.abs(h-120)<120?(120-Math.abs(h-120))/60:0);var l=Math.abs(h-240)<60?1:(Math.abs(h-240)<120?(120-Math.abs(h-240))/60:0);var m=(j+(1-j)*(1-i));var n=(k+(1-k)*(1-i));var o=(l+(1-l)*(1-i));x.pr=m;x.pg=n;x.pb=o;x.r=(Math.round(x.pr*x.val*255));x.g=(Math.round(x.pg*x.val*255));x.b=(Math.round(x.pb*x.val*255));x.hue=h;x.sat=i;$('#jQWheelColorPickerDlgCross').css('left',(b-Math.ceil($('#jQWheelColorPickerDlgCross').width()/2))+'px');$('#jQWheelColorPickerDlgCross').css('top',(c-Math.ceil($('#jQWheelColorPickerDlgCross').height()/2))+'px');y.updateSlider();y.updateSliderAlpha();$(t).wheelColorPicker('updateValue')}if(v){var p=$('#jQWheelColorPickerDlgSlider').height();var c=e.pageY-$('#jQWheelColorPickerDlgSlider').offset().top;if(c<0){c=0}else if(c>p){c=p}x.val=(p-c)/p;x.r=Math.round(x.pr*x.val*255);x.g=Math.round(x.pg*x.val*255);x.b=Math.round(x.pb*x.val*255);$('#jQWheelColorPickerDlgArrow').css('top',(c-Math.ceil($('#jQWheelColorPickerDlgArrow').height()/2)+$('#jQWheelColorPickerDlgSlider').position().top)+'px');y.updateSliderAlpha();$(t).wheelColorPicker('updateValue')}if(s.alpha&&w){var p=$('#jQWheelColorPickerDlgSliderAlpha').height();var c=e.pageY-$('#jQWheelColorPickerDlgSliderAlpha').offset().top;if(c<0){c=0}else if(c>p){c=p}x.alpha=(c/p).toFixed(2);if(x.alpha==Math.round(x.alpha))x.alpha=Math.round(x.alpha);$('#jQWheelColorPickerDlgArrowAlpha').css('top',(c-Math.ceil($('#jQWheelColorPickerDlgArrowAlpha').height()/2)+$('#jQWheelColorPickerDlgSliderAlpha').position().top)+'px');$(t).wheelColorPicker('updateValue')}});$(this).each(function(){t=this});$('#jQWheelColorPickerDlg').css('left',$(t).offset().left+'px');$('#jQWheelColorPickerDlg').css('top',($(t).offset().top+$(t).outerHeight())+'px');x.pr=1;x.pg=1;x.pb=1;x.val=1;x.hue=0;x.sat=0;x.r=255;x.g=255;x.b=255;if(y.updateColor($(t).val())){y.updateSelection()}$('#jQWheelColorPickerDlg').fadeIn('fast');return t},hide:function(e,a){if(a)$('#jQWheelColorPickerDlg').remove();else $('#jQWheelColorPickerDlg').fadeOut('fast',function(){$(this).remove()});u=false;v=false;t=null}};$.fn.wheelColorPicker=function(a){if(y[a]){return y[a].apply(this,Array.prototype.slice.call(arguments,1))}else if(typeof a==='object'||!a){return y.init.apply(this,arguments)}else{$.error('Method '+a+' does not exist on jQuery.wheelColorPicker')}}})(jQuery);

