var Rainbows=[];var MooRainbow=new Class({options:{id:"mooRainbow",prefix:"moor-",imgPath:"images/",startColor:[255,0,0],wheel:false,onComplete:$empty,onChange:$empty},initialize:function(B,A){this.element=$(B);if(!this.element){return }this.setOptions(A);this.sliderPos=0;this.pickerPos={x:0,y:0};this.backupColor=this.options.startColor;this.currentColor=this.options.startColor;this.sets={rgb:[],hsb:[],hex:[]};this.pickerClick=this.sliderClick=false;if(!this.layout){this.doLayout()}this.OverlayEvents();this.sliderEvents();this.backupEvent();if(this.options.wheel){this.wheelEvents()}this.element.addEvent("click",function(C){this.closeAll().toggle(C)}.bind(this));this.layout.overlay.setStyle("background-color",this.options.startColor.rgbToHex());this.layout.backup.setStyle("background-color",this.backupColor.rgbToHex());this.pickerPos.x=this.snippet("curPos").l+this.snippet("curSize","int").w;this.pickerPos.y=this.snippet("curPos").t+this.snippet("curSize","int").h;this.manualSet(this.options.startColor);this.pickerPos.x=this.snippet("curPos").l+this.snippet("curSize","int").w;this.pickerPos.y=this.snippet("curPos").t+this.snippet("curSize","int").h;this.sliderPos=this.snippet("arrPos")-this.snippet("arrSize","int");if(window.khtml){this.hide()}},toggle:function(){this[this.visible?"hide":"show"]()},show:function(){this.rePosition();this.layout.setStyle("display","block");this.visible=true},hide:function(){this.layout.setStyles({display:"none"});this.visible=false},closeAll:function(){Rainbows.each(function(A){A.hide()});return this},manualSet:function(B,D){if(!D||(D!="hsb"&&D!="hex")){D="rgb"}var C,A,E;if(D=="rgb"){C=B;A=B.rgbToHsb();E=B.rgbToHex()}else{if(D=="hsb"){A=B;C=B.hsbToRgb();E=C.rgbToHex()}else{E=B;C=B.hexToRgb(true);A=C.rgbToHsb()}}this.setMooRainbow(C);this.autoSet(A)},autoSet:function(B){var K=this.snippet("curSize","int").h;var A=this.snippet("curSize","int").w;var C=this.layout.overlay.height;var I=this.layout.overlay.width;var J=this.layout.slider.height;var L=this.snippet("arrSize","int");var E;var H=Math.round(((I*B[1])/100)-A);var F=Math.round(-((C*B[2])/100)+C-K);var G=Math.round(((J*B[0])/360));G=(G==360)?0:G;var D=J-G+this.snippet("slider")-L;E=[this.sets.hsb[0],100,100].hsbToRgb().rgbToHex();this.layout.cursor.setStyles({top:F,left:H});this.layout.arrows.setStyle("top",D);this.layout.overlay.setStyle("background-color",E);this.sliderPos=this.snippet("arrPos")-L;this.pickerPos.x=this.snippet("curPos").l+A;this.pickerPos.y=this.snippet("curPos").t+K},setMooRainbow:function(B,D){if(!D||(D!="hsb"&&D!="hex")){D="rgb"}var C,A,E;if(D=="rgb"){C=B;A=B.rgbToHsb();E=B.rgbToHex()}else{if(D=="hsb"){A=B;C=B.hsbToRgb();E=C.rgbToHex()}else{E=B;C=B.hexToRgb();A=C.rgbToHsb()}}this.sets={rgb:C,hsb:A,hex:E};if(!$chk(this.pickerPos.x)){this.autoSet(A)}this.RedInput.value=C[0];this.GreenInput.value=C[1];this.BlueInput.value=C[2];this.HueInput.value=A[0];this.SatuInput.value=A[1];this.BrighInput.value=A[2];this.hexInput.value=E;this.currentColor=C;this.chooseColor.setStyle("background-color",C.rgbToHex())},parseColors:function(B,F,E){var D=Math.round((B*100)/this.layout.overlay.width);var A=100-Math.round((F*100)/this.layout.overlay.height);var C=360-Math.round((E*360)/this.layout.slider.height)+this.snippet("slider")-this.snippet("arrSize","int");C-=this.snippet("arrSize","int");C=(C>=360)?0:(C<0)?0:C;D=(D>100)?100:(D<0)?0:D;A=(A>100)?100:(A<0)?0:A;return[C,D,A]},OverlayEvents:function(){var D,C,B,A;C=this.snippet("curSize","int").h;B=this.snippet("curSize","int").w;A=$A(this.arrRGB).concat(this.arrHSB,this.hexInput);document.addEvent("click",function(){if(this.visible){this.hide(this.layout)}}.bind(this));A.each(function(E){E.addEvent("keydown",this.eventKeydown.bindWithEvent(this,E));E.addEvent("keyup",this.eventKeyup.bindWithEvent(this,E))},this);[this.element,this.layout].each(function(E){E.addEvents({click:function(F){new Event(F).stop()},keyup:function(F){F=new Event(F);if(F.key=="esc"&&this.visible){this.hide(this.layout)}}.bind(this)},this)},this);D={x:[0-B,(this.layout.overlay.width-B)],y:[0-C,(this.layout.overlay.height-C)]};this.layout.drag=new Drag(this.layout.cursor,{limit:D,onBeforeStart:this.overlayDrag.bind(this),onStart:this.overlayDrag.bind(this),onDrag:this.overlayDrag.bind(this),snap:0});this.layout.overlay2.addEvent("mousedown",function(E){E=new Event(E);this.layout.cursor.setStyles({top:E.page.y-this.layout.overlay.getTop()-C,left:E.page.x-this.layout.overlay.getLeft()-B});this.layout.drag.start(E)}.bind(this));this.okButton.addEvent("click",function(){if(this.currentColor==this.options.startColor){this.hide();this.fireEvent("onComplete",[this.sets,this])}else{this.backupColor=this.currentColor;this.layout.backup.setStyle("background-color",this.backupColor.rgbToHex());this.hide();this.fireEvent("onComplete",[this.sets,this])}}.bind(this));this.transp.addEvent("click",function(){this.hide();this.fireEvent("onComplete",["transparent",this])}.bind(this))},overlayDrag:function(){var B=this.snippet("curSize","int").h;var A=this.snippet("curSize","int").w;this.pickerPos.x=this.snippet("curPos").l+A;this.pickerPos.y=this.snippet("curPos").t+B;this.setMooRainbow(this.parseColors(this.pickerPos.x,this.pickerPos.y,this.sliderPos),"hsb");this.fireEvent("onChange",[this.sets,this])},sliderEvents:function(){var A=this.snippet("arrSize","int"),B;B=[0+this.snippet("slider")-A,this.layout.slider.height-A+this.snippet("slider")];this.layout.sliderDrag=new Drag(this.layout.arrows,{limit:{y:B},modifiers:{x:false},onBeforeStart:this.sliderDrag.bind(this),onStart:this.sliderDrag.bind(this),onDrag:this.sliderDrag.bind(this),snap:0});this.layout.slider.addEvent("mousedown",function(C){C=new Event(C);this.layout.arrows.setStyle("top",C.page.y-this.layout.slider.getTop()+this.snippet("slider")-A);this.layout.sliderDrag.start(C)}.bind(this))},sliderDrag:function(){var A=this.snippet("arrSize","int"),B;this.sliderPos=this.snippet("arrPos")-A;this.setMooRainbow(this.parseColors(this.pickerPos.x,this.pickerPos.y,this.sliderPos),"hsb");B=[this.sets.hsb[0],100,100].hsbToRgb().rgbToHex();this.layout.overlay.setStyle("background-color",B);this.fireEvent("onChange",[this.sets,this])},backupEvent:function(){this.layout.backup.addEvent("click",function(){this.manualSet(this.backupColor);this.fireEvent("onChange",[this.sets,this])}.bind(this))},wheelEvents:function(){var A=$A(this.arrRGB).extend(this.arrHSB);A.each(function(B){B.addEvents({mousewheel:this.eventKeys.bindWithEvent(this,B),keydown:this.eventKeys.bindWithEvent(this,B)})},this);[this.layout.arrows,this.layout.slider].each(function(B){B.addEvents({mousewheel:this.eventKeys.bindWithEvent(this,[this.arrHSB[0],"slider"]),keydown:this.eventKeys.bindWithEvent(this,[this.arrHSB[0],"slider"])})},this)},eventKeys:function(E,B,A){var F,G;A=(!A)?B.id:this.arrHSB[0];if(E.type=="keydown"){if(E.key=="up"){F=1}else{if(E.key=="down"){F=-1}else{return }}}else{if(E.type==Element.Events.mousewheel.base){F=(E.wheel>0)?1:-1}}if(this.arrRGB.contains(B)){G="rgb"}else{if(this.arrHSB.contains(B)){G="hsb"}else{G="hsb"}}if(G=="rgb"){var H=this.sets.rgb,C=this.sets.hsb,D=this.options.prefix,J;var I=(B.value.toInt()||0)+F;I=(I>255)?255:(I<0)?0:I;switch(B.className){case D+"rInput":J=[I,H[1],H[2]];break;case D+"gInput":J=[H[0],I,H[2]];break;case D+"bInput":J=[H[0],H[1],I];break;default:J=H}this.manualSet(J);this.fireEvent("onChange",[this.sets,this])}else{var H=this.sets.rgb,C=this.sets.hsb,D=this.options.prefix,J;var I=(B.value.toInt()||0)+F;if(B.className.test(/(HueInput)/)){I=(I>359)?0:(I<0)?0:I}else{I=(I>100)?100:(I<0)?0:I}switch(B.className){case D+"HueInput":J=[I,C[1],C[2]];break;case D+"SatuInput":J=[C[0],I,C[2]];break;case D+"BrighInput":J=[C[0],C[1],I];break;default:J=C}this.manualSet(J,"hsb");this.fireEvent("onChange",[this.sets,this])}E.stop()},eventKeydown:function(C,B){var D=C.code,A=C.key;if((!B.className.test(/hexInput/)&&!(D>=48&&D<=57))&&(A!="backspace"&&A!="tab"&&A!="delete"&&A!="left"&&A!="right")){C.stop()}},eventKeyup:function(F,C){var G=F.code,A=F.key,D,E,B=C.value.charAt(0);if(!$chk(C.value)){return }if(C.className.test(/hexInput/)){if(B!="#"&&C.value.length!=6){return }if(B=="#"&&C.value.length!=7){return }}else{if(!(G>=48&&G<=57)&&(!["backspace","tab","delete","left","right"].contains(A))&&C.value.length>3){return }}E=this.options.prefix;if(C.className.test(/(rInput|gInput|bInput)/)){if(C.value<0||C.value>255){return }switch(C.className){case E+"rInput":D=[C.value,this.sets.rgb[1],this.sets.rgb[2]];break;case E+"gInput":D=[this.sets.rgb[0],C.value,this.sets.rgb[2]];break;case E+"bInput":D=[this.sets.rgb[0],this.sets.rgb[1],C.value];break;default:D=this.sets.rgb}this.manualSet(D);this.fireEvent("onChange",[this.sets,this])}else{if(!C.className.test(/hexInput/)){if(C.className.test(/HueInput/)&&C.value<0||C.value>360){return }else{if(C.className.test(/HueInput/)&&C.value==360){C.value=0}else{if(C.className.test(/(SatuInput|BrighInput)/)&&C.value<0||C.value>100){return }}}switch(C.className){case E+"HueInput":D=[C.value,this.sets.hsb[1],this.sets.hsb[2]];break;case E+"SatuInput":D=[this.sets.hsb[0],C.value,this.sets.hsb[2]];break;case E+"BrighInput":D=[this.sets.hsb[0],this.sets.hsb[1],C.value];break;default:D=this.sets.hsb}this.manualSet(D,"hsb");this.fireEvent("onChange",[this.sets,this])}else{D=C.value.hexToRgb(true);if(isNaN(D[0])||isNaN(D[1])||isNaN(D[2])){return }if($chk(D)){this.manualSet(D);this.fireEvent("onChange",[this.sets,this])}}}},doLayout:function(){var S=this.options.id,Y=this.options.prefix;var C=S+" ."+Y;this.layout=new Element("div",{styles:{display:"block",position:"absolute"},id:S}).inject(document.body);Rainbows.push(this);var K=new Element("div",{styles:{position:"relative"},"class":Y+"box"}).inject(this.layout);var O=new Element("div",{styles:{position:"absolute",overflow:"hidden"},"class":Y+"overlayBox"}).inject(K);var P=new Element("div",{styles:{position:"absolute",zIndex:1},"class":Y+"arrows"}).inject(K);P.width=P.getStyle("width").toInt();P.height=P.getStyle("height").toInt();var H=new Element("img",{styles:{"background-color":"#fff",position:"relative",zIndex:2},src:this.options.imgPath+"moor_woverlay.png","class":Y+"overlay"}).inject(O);var N=new Element("img",{styles:{position:"absolute",top:0,left:0,zIndex:2},src:this.options.imgPath+"moor_boverlay.png","class":Y+"overlay"}).inject(O);if(window.ie6){O.setStyle("overflow","");var I=H.src;H.src=this.options.imgPath+"blank.gif";H.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+I+"', sizingMethod='scale')";I=N.src;N.src=this.options.imgPath+"blank.gif";N.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+I+"', sizingMethod='scale')"}H.width=N.width=O.getStyle("width").toInt();H.height=N.height=O.getStyle("height").toInt();var F=new Element("div",{styles:{overflow:"hidden",position:"absolute",zIndex:2},"class":Y+"cursor"}).inject(O);F.width=F.getStyle("width").toInt();F.height=F.getStyle("height").toInt();var a=new Element("img",{styles:{position:"absolute","z-index":2},src:this.options.imgPath+"moor_slider.png","class":Y+"slider"}).inject(K);this.layout.slider=document.getElement("#"+C+"slider");a.width=a.getStyle("width").toInt();a.height=a.getStyle("height").toInt();new Element("div",{styles:{position:"absolute"},"class":Y+"colorBox"}).inject(K);new Element("div",{styles:{zIndex:2,position:"absolute"},"class":Y+"chooseColor"}).inject(K);this.layout.backup=new Element("div",{styles:{zIndex:2,position:"absolute",cursor:"pointer"},"class":Y+"currentColor"}).inject(K);var E=new Element("label").inject(K).setStyle("position","absolute");var L=E.clone().inject(K).addClass(Y+"gLabel").appendText("G: ");var Q=E.clone().inject(K).addClass(Y+"bLabel").appendText("B: ");E.appendText("R: ").addClass(Y+"rLabel");var c=new Element("input");var A=c.clone().inject(L).addClass(Y+"gInput");var D=c.clone().inject(Q).addClass(Y+"bInput");c.inject(E).addClass(Y+"rInput");var W=new Element("label").inject(K).setStyle("position","absolute");var b=W.clone().inject(K).addClass(Y+"SatuLabel").appendText("S: ");var X=W.clone().inject(K).addClass(Y+"BrighLabel").appendText("B: ");W.appendText("H: ").addClass(Y+"HueLabel");var T=new Element("input");var Z=T.clone().inject(b).addClass(Y+"SatuInput");var V=T.clone().inject(X).addClass(Y+"BrighInput");T.inject(W).addClass(Y+"HueInput");b.appendText(" %");X.appendText(" %");new Element("span",{styles:{position:"absolute"},"class":Y+"ballino"}).set("html"," &deg;").injectAfter(W);var J=new Element("label").inject(K).setStyle("position","absolute").addClass(Y+"hexLabel").appendText("#hex: ").adopt(new Element("input").addClass(Y+"hexInput"));var M=new Element("input",{styles:{position:"absolute"},type:"button",value:"Select","class":Y+"okButton"}).inject(K);var U=new Element("a",{style:{position:"absolute"},href:"#","class":Y+"transp"}).inject(K);this.rePosition();var d=$$("#"+C+"overlay");this.layout.overlay=d[0];this.layout.overlay2=d[1];this.layout.cursor=document.getElement("#"+C+"cursor");this.layout.arrows=document.getElement("#"+C+"arrows");this.chooseColor=document.getElement("#"+C+"chooseColor");this.layout.backup=document.getElement("#"+C+"currentColor");this.RedInput=document.getElement("#"+C+"rInput");this.GreenInput=document.getElement("#"+C+"gInput");this.BlueInput=document.getElement("#"+C+"bInput");this.HueInput=document.getElement("#"+C+"HueInput");this.SatuInput=document.getElement("#"+C+"SatuInput");this.BrighInput=document.getElement("#"+C+"BrighInput");this.hexInput=document.getElement("#"+C+"hexInput");this.arrRGB=[this.RedInput,this.GreenInput,this.BlueInput];this.arrHSB=[this.HueInput,this.SatuInput,this.BrighInput];this.okButton=document.getElement("#"+C+"okButton");this.transp=K.getElement("."+Y+"transp");if(!window.khtml){this.hide()}},rePosition:function(){var A=this.element.getCoordinates();this.layout.setStyles({left:A.left,top:A.top+A.height+1})},snippet:function(G,F){var D;F=(F)?F:"none";switch(G){case"arrPos":var C=this.layout.arrows.getStyle("top").toInt();D=C;break;case"arrSize":var E=this.layout.arrows.height;E=(F=="int")?(E/2).toInt():E;D=E;break;case"curPos":var B=this.layout.cursor.getStyle("left").toInt();var C=this.layout.cursor.getStyle("top").toInt();D={l:B,t:C};break;case"slider":var C=this.layout.slider.getStyle("marginTop").toInt();D=C;break;default:var E=this.layout.cursor.height;var A=this.layout.cursor.width;E=(F=="int")?(E/2).toInt():E;A=(F=="int")?(A/2).toInt():A;D={w:A,h:E}}return D}});MooRainbow.implement(new Options);MooRainbow.implement(new Events);