var MooColorPicker=new Class({options:{initialColor:"#000000",classPrefix:"moocp_",panelMode:false,container:null},initialize:function(A){this.setOptions(A);this._timer=0;this._buildColorPicker();this.setColor(this.options.initialColor)},_buildColorPicker:function(){this.colorpicker=new Element("div").addClass(this.options.classPrefix+"color-picker");var A=$(this.options.container);if(!A){A=document.getElementsByTagName("body")[0]}this.colorpicker.injectInside(A);if(this.options.panelMode){this.colorpicker.addClass(this.options.classPrefix+"panel-mode");var C=new Element("div").addClass(this.options.classPrefix+"header-panel").injectInside(this.colorpicker);var B=new Element("span").injectInside(C);B.addEvent("click",this.hide.bind(this));this.colorpicker.makeDraggable({handle:C,onComplete:this._updatePanelCoords.bind(this)});this.hide()}this.svPanel=new Element("div").addClass(this.options.classPrefix+"sv-panel").injectInside(this.colorpicker);if(window.ie6){this.svPanel.setStyle("background","transparent");this.ieSvPanel=new Element("div").addClass(this.options.classPrefix+"sv-panel-ie").injectInside(this.colorpicker)}this.svCursor=new Element("span").injectInside(this.svPanel);this.huePanel=new Element("div").addClass(this.options.classPrefix+"hue-panel").injectInside(this.colorpicker);this.hueCursor=new Element("span").injectInside(this.huePanel);this.draggingSV=false;this.svDragOffset=5;this.svPanel.addEvents({mousedown:(function(){this.draggingSV=true}).bind(this),mouseup:(function(){this.draggingSV=false}).bind(this),click:this._moveSV.bindWithEvent(this)});document.addEvent("mousemove",(function(D){if(this.draggingSV){this._moveSV(D)}}).bindWithEvent(this));document.addEvent("mouseup",(function(){this.draggingSV=false}).bind(this));this.draggingH=false;this.hDragOffset=2;this.huePanel.addEvents({mousedown:(function(){this.draggingH=true}).bind(this),mouseup:(function(){this.draggingH=false}).bind(this),click:this._moveH.bindWithEvent(this)});document.addEvent("mousemove",(function(D){if(this.draggingH){this._moveH(D)}}).bindWithEvent(this));document.addEvent("mouseup",(function(){this.draggingH=false}).bind(this));document.addEvent("mousemove",(function(D){this._mouse=D.page}).bindWithEvent(this));this._updatePanelCoords()},_updatePanelCoords:function(){this.svPanelCoords=this.svPanel.getCoordinates();this.huePanelCoords=this.huePanel.getCoordinates();$clear(this._timer);if(this.svPanelCoords.width==0){this._timer=this._updatePanelCoords.delay(100,this)}},show:function(){if(!this.options.panelMode||this.state=="open"){return }var B=this.colorpicker.getCoordinates();var A=window.getSize();var D=this._mouse.x+5;var C=this._mouse.y+5;if(D+B.width>A.size.x){D-=(B.width+10)}if(C+B.height>(A.scroll.y+A.size.y)){C-=(B.height+10)}this.colorpicker.setStyles({visibility:"visible",top:C+"px",left:D+"px"});this.state="open";this._updatePanelCoords()},hide:function(){if(!this.options.panelMode||this.state=="closed"){return }this.colorpicker.setStyles({visibility:"hidden",top:0,left:0});this.state="closed"},setColor:function(A){this.selectedColor=new Color($pick(A,"#000000"));var B=this.selectedColor.rgbToHsb();var E=Math.round((360-B[0])/360*this.huePanelCoords.height);this.hueCursor.setStyle("top",E-this.hDragOffset+"px");$pick(this.ieSvPanel,this.svPanel).setStyle("background-color",new Color([B[0],100,100],"hsb"));var C=Math.round((100-B[2])/100*this.svPanelCoords.height);var D=Math.round(B[1]/100*this.svPanelCoords.width);this.svCursor.setStyles({top:C-this.svDragOffset+"px",left:D-this.svDragOffset+"px"})},attach:function(C,E){C=$(C);if(!C){return }var B={colorPicker:this,element:C,property:E,storedValue:""};var D,A;if(C.getTag()=="input"&&C.getProperty("type").toLowerCase()=="text"){D=function(F){this.storedValue=this.element.value=F.toUpperCase()};A=function(){var F=this.element.getValue();if(this.storedValue==F||!F.test(/#?[0-9a-f]{6}/i)){return }this.colorPicker.setColor(F);this.storedValue=F};A.periodical(500,B)}else{D=function(F){this.element.setStyle(this.property,F)}}this.addEvent("selectColor",D.bind(B))},_moveSV:function(B){var E=B.page.x-this.svPanelCoords.left;var D=B.page.y-this.svPanelCoords.top;E=this._constrain(E,0,this.svPanelCoords.width);D=this._constrain(D,0,this.svPanelCoords.height);var C=Math.abs(100-Math.round(D/this.svPanelCoords.height*100));C=this._constrain(C,0,100);var A=Math.round(E/this.svPanelCoords.width*100);A=this._constrain(A,0,100);D-=this.svDragOffset;E-=this.svDragOffset;this.svCursor.setStyles({top:D+"px",left:E+"px"});this.selectedColor=this.selectedColor.setBrightness(C);this.selectedColor=this.selectedColor.setSaturation(A);this._broadcastColorChange()},_moveH:function(B){var D=B.page.x-this.huePanelCoords.left;var C=B.page.y-this.huePanelCoords.top;C=this._constrain(C,0,this.huePanelCoords.height-1);var A=Math.abs(360-Math.round(C/(this.huePanelCoords.height-1)*360));A=this._constrain(A,0,360);C-=this.hDragOffset;this.hueCursor.setStyle("top",C+"px");this.selectedColor=this.selectedColor.setHue(A);this._broadcastColorChange();$pick(this.ieSvPanel,this.svPanel).setStyle("background-color",new Color([A,100,100],"hsb"))},_broadcastColorChange:function(){this.fireEvent("selectColor",[this.selectedColor.rgbToHex().toUpperCase()])},_constrain:function(A,C,B){if(AB){return B}return A}});MooColorPicker.implement(new Events);MooColorPicker.implement(new Options)