/* DHTML Color Picker, Programming by Ulyses, ColorJack.com */ /* This version featured on/ available at Dynamic Drive: http://www.dynamicdrive.com */ /*Minor fixes by DD: Disabled text selection during dragging, fixed IE doctype issue with document.body */ var standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body function $(v) { return(document.getElementById(v)); } function $S(v) { return($(v).style); } function browser(v) { return(Math.max(navigator.userAgent.toLowerCase().indexOf(v),0)); } function toggle(v) { $S(v).display=($S(v).display=='none'?'block':'none'); } function within(v,a,z) { return((v>=a && v<=z)?true:false); } function XY(e,v) { var z=browser('msie')?Array(event.clientX+standardbody.scrollLeft,event.clientY+standardbody.scrollTop):Array(e.pageX,e.pageY); return(z[zero(v)]); } function zero(v) { v=parseInt(v); return(!isNaN(v)?v:0); } function zindex(d) { d.style.zIndex=zINDEX++; } /* PLUGIN */ var maxValue={'h':'359','s':'100','v':'100'},HSV={0:359,1:100,2:100}; var SVHeight=165,wSV=162,wH=162,slideHSV={0:359,1:100,2:100},zINDEX=15,stop=1; function HSVslide(d,o,e) { function tXY(e) { tY=XY(e,1)-top; tX=XY(e)-left; } function mkHSV(a,b,c) { return(Math.min(a,Math.max(0,Math.ceil((parseInt(c)/b)*a)))); } function ckHSV(a,b) { if(within(a,0,b)) return(a); else if(a>b) return(b); else if(a<0) return('-'+oo); } function drag(e) { if(!stop) { if(d=='SVslide') { tXY(e); ds.left=ckHSV(tX-oo,wSV)+'px'; ds.top=ckHSV(tY-oo,wSV)+'px'; slideHSV[1]=mkHSV(100,wSV,ds.left); slideHSV[2]=100-mkHSV(100,wSV,ds.top); HSVupdate(); } else if(d=='Hslide') { tXY(e); ds.top=(ckHSV(tY-oo,wH)-5)+'px'; slideHSV[0]=mkHSV(359,wH,ds.top); function commit() { var r='hsv',z={},j=''; for(var i=0; i<=r.length-1; i++) { j=r.substr(i,1); z[i]=(j=='h')?maxValue[j]-mkHSV(maxValue[j],wH,ds.top):HSV[i]; } return(HSVupdate(hsv2hex(z))); } mkColor(commit()); $S('SV').backgroundColor='#'+hsv2hex(Array(HSV[0],100,100)); } else if(d=='drag') { ds.left=XY(e)+oX-eX+'px'; ds.top=XY(e,1)+oY-eY+'px'; } } if (e && e.preventDefault) e.preventDefault() else return false } if(stop) { stop=''; var ds=$S(d!='drag'?d:o); if(d=='drag') { var oX=parseInt(ds.left), oY=parseInt(ds.top), eX=XY(e), eY=XY(e,1); zindex($(o)); } else { var left=($(o).offsetLeft+10), top=($(o).offsetTop+22), tX, tY, oo=(d=='Hslide')?2:4; if(d=='SVslide') slideHSV[0]=HSV[0]; } document.onmousemove=drag; document.onmouseup=function(){ stop=1; document.onmousemove=''; document.onmouseup=''; }; drag(e); } } function HSVupdate(v) { HSV=v?hex2hsv(v):Array(slideHSV[0],slideHSV[1],slideHSV[2]); if(!v) v=hsv2hex(Array(slideHSV[0],slideHSV[1],slideHSV[2])); mkColor(v); $('plugHEX').innerHTML=v; return(v); } function loadSV() { var z=''; for(var i=SVHeight; i>=0; i--) z+="