var jscolor={bindAuto:true,bindClass:"jscolor",dir:"/images/jscolor/",install:function(){jscolor.addEvent(window,"load",jscolor.init);},init:function(){if(jscolor.bindAuto){jscolor.bind();}},getDir:function(){if(!jscolor.dir){var detected=jscolor.detectDir();jscolor.dir=detected!=false?detected:"jscolor/";}return jscolor.dir;},detectDir:function(){var base=location.href;var e=document.getElementsByTagName("base");for(var i=0;i<e.length;i++){if(e[i].href){base=e[i].href;}}var e=document.getElementsByTagName("script");for(var i=0;i<e.length;i++){if(e[i].src&&/(^|\/)jscolor\.js([?#].*)?$/i.test(e[i].src)){var src=new jscolor.URI(e[i].src);var srcAbs=src.toAbsolute(base);srcAbs.path=srcAbs.path.replace(/[^\/]+$/,"");delete srcAbs.query;delete srcAbs.fragment;return srcAbs.toString();}}return false;},bind:function(){var matchClass=new RegExp("(^|\\s)("+jscolor.bindClass+")\\s*(\\{[^}]*\\})?","i");var e=document.getElementsByTagName("input");for(var i=0;i<e.length;i++){var m;if(!e[i].color&&e[i].className&&(m=e[i].className.match(matchClass))){var prop={};if(m[3]){try{eval("prop="+m[3]);}catch(eInvalidProp){}}e[i].color=new jscolor.color(e[i],prop);}}},fetchElement:function(mixed){return typeof mixed=="string"?document.getElementById(mixed):mixed;},addEvent:function(el,evnt,func){if(el.addEventListener){return el.addEventListener(evnt,func,false);}else if(el.attachEvent){return el.attachEvent("on"+evnt,func);}else{return false;}},fireEvent:function(el,evnt){if(!el){return false;}else if(document.createEventObject){var ev=document.createEventObject();return el.fireEvent("on"+evnt,ev);}else if(document.createEvent){var ev=document.createEvent("HTMLEvents");ev.initEvent(evnt,true,true);return el.dispatchEvent(ev);}else if(el["on"+evnt]){return el["on"+evnt]();}else{return false;}},getElementPos:function(e){var e1=e,e2=e;var x=0,y=0;if(e1.offsetParent){do{x+=e1.offsetLeft;y+=e1.offsetTop;}while(e1=e1.offsetParent);}while((e2=e2.parentNode)&&e2.nodeName!="BODY"){x-=e2.scrollLeft;y-=e2.scrollTop;}return[x,y];},getElementSize:function(e){return[e.offsetWidth,e.offsetHeight];},getMousePos:function(e){if(!e){var e=window.event;}if(typeof e.pageX=="number"){return[e.pageX,e.pageY];}else if(typeof e.clientX=="number"){return[e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,e.clientY+document.body.scrollTop+document.documentElement.scrollTop];}},getViewPos:function(){if(typeof window.pageYOffset=="number"){return[window.pageXOffset,window.pageYOffset];}else if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){return[document.body.scrollLeft,document.body.scrollTop];}else if(document.documentElement&&(document.documentElement.scrollLeft||document.documentElement.scrollTop)){return[document.documentElement.scrollLeft,document.documentElement.scrollTop];}else{return[0,0];}},getViewSize:function(){if(typeof window.innerWidth=="number"){return[window.innerWidth,window.innerHeight];}else if(document.body&&(document.body.clientWidth||document.body.clientHeight)){return[document.body.clientWidth,document.body.clientHeight];}else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)){return[document.documentElement.clientWidth,document.documentElement.clientHeight];}else{return[0,0];}},URI:function(uri){this.scheme=null;this.authority=null;this.path="";this.query=null;this.fragment=null;this.parse=function(uri){var m=uri.match(/^(([A-Za-z][0-9A-Za-z+.-]*)(:))?((\/\/)([^\/?#]*))?([^?#]*)((\?)([^#]*))?((#)(.*))?/);this.scheme=m[3]?m[2]:null;this.authority=m[5]?m[6]:null;this.path=m[7];this.query=m[9]?m[10]:null;this.fragment=m[12]?m[13]:null;return this;};this.toString=function(){var result="";if(this.scheme!=null){result=result+this.scheme+":";}if(this.authority!=null){result=result+"//"+this.authority;}if(this.path!=null){result=result+this.path;}if(this.query!=null){result=result+"?"+this.query;}if(this.fragment!=null){result=result+"#"+this.fragment;}return result;};this.toAbsolute=function(base){var base=new jscolor.URI(base);var r=this;var t=new jscolor.URI;if(base.scheme==null){return false;}if(r.scheme!=null&&r.scheme.toLowerCase()==base.scheme.toLowerCase()){r.scheme=null;}if(r.scheme!=null){t.scheme=r.scheme;t.authority=r.authority;t.path=removeDotSegments(r.path);t.query=r.query;}else{if(r.authority!=null){t.authority=r.authority;t.path=removeDotSegments(r.path);t.query=r.query;}else{if(r.path==""){t.path=base.path;if(r.query!=null){t.query=r.query;}else{t.query=base.query;}}else{if(r.path.substr(0,1)=="/"){t.path=removeDotSegments(r.path);}else{if(base.authority!=null&&base.path==""){t.path="/"+r.path;}else{t.path=base.path.replace(/[^\/]+$/,"")+r.path;}t.path=removeDotSegments(t.path);}t.query=r.query;}t.authority=base.authority;}t.scheme=base.scheme;}t.fragment=r.fragment;return t;};function removeDotSegments(path){var out="";while(path){if(path.substr(0,3)=="../"||path.substr(0,2)=="./"){path=path.replace(/^\.+/,"").substr(1);}else if(path.substr(0,3)=="/./"||path=="/."){path="/"+path.substr(3);}else if(path.substr(0,4)=="/../"||path=="/.."){path="/"+path.substr(4);out=out.replace(/\/?[^\/]*$/,"");}else if(path=="."||path==".."){path="";}else{var rm=path.match(/^\/?[^\/]*/)[0];path=path.substr(rm.length);out=out+rm;}}return out;}if(uri){this.parse(uri);}},color:function(target,prop){this.required=true;this.adjust=true;this.hash=true;this.caps=true;this.valueElement=target;this.styleElement=target;this.hsv=[0,1,0];this.rgb=[0,0,0];this.picker=true;this.pickerMode="HSV";this.pickerPosition="bottom";this.pickerFace=10;this.pickerFaceColor="ThreeDFace";this.pickerBorder=1;this.pickerBorderColor="ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight";this.pickerInset=1;this.pickerInsetColor="ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow";this.pickerZIndex=10000;for(var p in prop){this[p]=prop[p];}this.hidePicker=function(){$$('select').invoke('setStyle', 'visibility: visible');if(isPickerOwner()){removePicker();}};this.showPicker=function(){if(!isPickerOwner()){$$('select').invoke('setStyle', 'visibility: hidden');var tp=jscolor.getElementPos(target);var ts=jscolor.getElementSize(target);var vp=jscolor.getViewPos();var vs=jscolor.getViewSize();var ps=[2*this.pickerBorder+4*this.pickerInset+2*this.pickerFace+widthPad+2*widthArrow+widthSld,2*this.pickerBorder+2*this.pickerInset+2*this.pickerFace+height];var a,b,c;switch(this.pickerPosition.toLowerCase()){case"left":a=1;b=0;c=-1;break;case"right":a=1;b=0;c=1;break;case"top":a=0;b=1;c=-1;break;default:a=0;b=1;c=1;break;}var l=(ts[b]+ps[b])/2;var pp=[-vp[a]+tp[a]+ps[a]>vs[a]?-vp[a]+tp[a]+ts[a]/2>vs[a]/2&&tp[a]+ts[a]-ps[a]>=0?tp[a]+ts[a]-ps[a]:tp[a]:tp[a],-vp[b]+tp[b]+ts[b]+ps[b]-l+l*c>vs[b]?-vp[b]+tp[b]+ts[b]/2>vs[b]/2&&tp[b]+ts[b]-l-l*c>=0?tp[b]+ts[b]-l-l*c:tp[b]+ts[b]-l+l*c:tp[b]+ts[b]-l+l*c>=0?tp[b]+ts[b]-l+l*c:tp[b]+ts[b]-l-l*c];drawPicker(pp[a],pp[b]);}};this.importColor=function(){if(!valueElement){this.exportColor();}else{if(!this.adjust){if(!this.fromString(valueElement.value,leaveValue)){styleElement.style.backgroundColor=styleElement.jscStyle.backgroundColor;styleElement.style.color=styleElement.jscStyle.color;this.exportColor(leaveValue|leaveStyle);}}else if(!this.required&&/^\s*$/.test(valueElement.value)){valueElement.value="";styleElement.style.backgroundColor=styleElement.jscStyle.backgroundColor;styleElement.style.color=styleElement.jscStyle.color;this.exportColor(leaveValue|leaveStyle);}else if(this.fromString(valueElement.value)){}else{this.exportColor();}}};this.exportColor=function(flags){if(!(flags&leaveValue)&&valueElement){var value=this.toString();if(this.caps){value=value.toUpperCase();}if(this.hash){value="#"+value;}valueElement.value=value;}if(!(flags&leaveStyle)&&styleElement){styleElement.style.backgroundColor="#"+this.toString();styleElement.style.color=0.213*this.rgb[0]+0.715*this.rgb[1]+0.072*this.rgb[2]<0.5?"#FFF":"#000";}if(!(flags&leavePad)&&isPickerOwner()){redrawPad();}if(!(flags&leaveSld)&&isPickerOwner()){redrawSld();}};this.fromHSV=function(h,s,v,flags){h<0&&(h=0)||h>6&&(h=6);s<0&&(s=0)||s>1&&(s=1);v<0&&(v=0)||v>1&&(v=1);this.rgb=HSV_RGB(h==null?this.hsv[0]:(this.hsv[0]=h),s==null?this.hsv[1]:(this.hsv[1]=s),v==null?this.hsv[2]:(this.hsv[2]=v));this.exportColor(flags);};this.fromRGB=function(r,g,b,flags){r<0&&(r=0)||r>1&&(r=1);g<0&&(g=0)||g>1&&(g=1);b<0&&(b=0)||b>1&&(b=1);var hsv=RGB_HSV(r==null?this.rgb[0]:(this.rgb[0]=r),g==null?this.rgb[1]:(this.rgb[1]=g),b==null?this.rgb[2]:(this.rgb[2]=b));if(hsv[0]!=null){this.hsv[0]=hsv[0];}if(hsv[2]!=0){this.hsv[1]=hsv[1];}this.hsv[2]=hsv[2];this.exportColor(flags);};this.fromString=function(hex,flags){var m=hex.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i);if(!m){return false;}else{if(m[1].length==6){this.fromRGB(parseInt(m[1].substr(0,2),16)/255,parseInt(m[1].substr(2,2),16)/255,parseInt(m[1].substr(4,2),16)/255,flags);}else{this.fromRGB(parseInt(m[1].charAt(0)+m[1].charAt(0),16)/255,parseInt(m[1].charAt(1)+m[1].charAt(1),16)/255,parseInt(m[1].charAt(2)+m[1].charAt(2),16)/255,flags);}return true;}};this.toString=function(){return(256|Math.round(255*this.rgb[0])).toString(16).substr(1)+(256|Math.round(255*this.rgb[1])).toString(16).substr(1)+(256|Math.round(255*this.rgb[2])).toString(16).substr(1);};function RGB_HSV(r,g,b){var n=Math.min(Math.min(r,g),b);var v=Math.max(Math.max(r,g),b);var m=v-n;if(m==0){return[null,0,v];}var h=r==n?3+(b-g)/m:g==n?5+(r-b)/m:1+(g-r)/m;return[h==6?0:h,m/v,v];}function HSV_RGB(h,s,v){if(h==null){return[v,v,v];}var i=Math.floor(h);var f=i%2?h-i:1-(h-i);var m=v*(1-s);var n=v*(1-s*f);switch(i){case 0:case 6:return[v,n,m];case 1:return[n,v,m];case 2:return[m,v,n];case 3:return[m,n,v];case 4:return[n,m,v];case 5:return[v,m,n];default:;}}function removePicker(){delete jscolor.picker.owner;document.getElementsByTagName("body")[0].removeChild(jscolor.picker.boxB);}function drawPicker(x,y){if(!jscolor.picker){jscolor.picker={box:document.createElement("div"),boxB:document.createElement("div"),pad:document.createElement("div"),padB:document.createElement("div"),padM:document.createElement("div"),sld:document.createElement("div"),sldB:document.createElement("div"),sldM:document.createElement("div")};for(var i=0,segSize=4;i<height;i+=segSize){var seg=document.createElement("div");seg.style.height=segSize+"px";seg.style.fontSize="1px";seg.style.lineHeight="0";jscolor.picker.sld.appendChild(seg);}jscolor.picker.sldB.appendChild(jscolor.picker.sld);jscolor.picker.box.appendChild(jscolor.picker.sldB);jscolor.picker.box.appendChild(jscolor.picker.sldM);jscolor.picker.padB.appendChild(jscolor.picker.pad);jscolor.picker.box.appendChild(jscolor.picker.padB);jscolor.picker.box.appendChild(jscolor.picker.padM);jscolor.picker.boxB.appendChild(jscolor.picker.box);}var p=jscolor.picker;posPad=[x+THIS.pickerBorder+THIS.pickerFace+THIS.pickerInset,y+THIS.pickerBorder+THIS.pickerFace+THIS.pickerInset];posSld=[null,y+THIS.pickerBorder+THIS.pickerFace+THIS.pickerInset];p.box.onmouseup=p.box.onmouseout=function(){target.focus();};p.box.onmousedown=function(){abortBlur=true;};p.box.onmousemove=function(e){holdPad&&setPad(e);holdSld&&setSld(e);};p.padM.onmouseup=p.padM.onmouseout=function(){if(holdPad){holdPad=false;jscolor.fireEvent(valueElement,"change");}};p.padM.onmousedown=function(e){holdPad=true;setPad(e);};p.sldM.onmouseup=p.sldM.onmouseout=function(){if(holdSld){holdSld=false;jscolor.fireEvent(valueElement,"change");}};p.sldM.onmousedown=function(e){holdSld=true;setSld(e);};p.box.style.width=4*THIS.pickerInset+2*THIS.pickerFace+widthPad+2*widthArrow+widthSld+"px";p.box.style.height=2*THIS.pickerInset+2*THIS.pickerFace+height+"px";p.boxB.style.position="absolute";p.boxB.style.clear="both";p.boxB.style.left=x+"px";p.boxB.style.top=y+"px";p.boxB.style.zIndex=THIS.pickerZIndex;p.boxB.style.border=THIS.pickerBorder+"px solid";p.boxB.style.borderColor=THIS.pickerBorderColor;p.boxB.style.background=THIS.pickerFaceColor;switch(modeID){case 0:var img="hs.png";break;case 1:var img="hv.png";break;default:;}p.pad.style.width=widthPad+"px";p.pad.style.height=height+"px";p.pad.style.background="url('"+jscolor.getDir()+img+"') 0 0 no-repeat";p.padB.style.position="absolute";p.padB.style.left=THIS.pickerFace+"px";p.padB.style.top=THIS.pickerFace+"px";p.padB.style.border=THIS.pickerInset+"px solid";p.padB.style.borderColor=THIS.pickerInsetColor;p.padM.style.position="absolute";p.padM.style.left="0";p.padM.style.top="0";p.padM.style.width=THIS.pickerFace+2*THIS.pickerInset+widthPad+widthArrow+"px";p.padM.style.height=p.box.style.height;p.padM.style.cursor="crosshair";p.padM.style.background="url('"+jscolor.getDir()+"cross.gif') no-repeat";p.sld.style.overflow="hidden";p.sld.style.width=widthSld+"px";p.sld.style.height=height+"px";p.sldB.style.position="absolute";p.sldB.style.right=THIS.pickerFace+"px";p.sldB.style.top=THIS.pickerFace+"px";p.sldB.style.border=THIS.pickerInset+"px solid";p.sldB.style.borderColor=THIS.pickerInsetColor;p.sldM.style.position="absolute";p.sldM.style.right="0";p.sldM.style.top="0";p.sldM.style.width=widthSld+widthArrow+THIS.pickerFace+2*THIS.pickerInset+"px";p.sldM.style.height=p.box.style.height;p.sldM.style.background="url('"+jscolor.getDir()+"arrow.gif') no-repeat";try{p.sldM.style.cursor="pointer";}catch(eOldIE){p.sldM.style.cursor="hand";}redrawPad();redrawSld();jscolor.picker.owner=THIS;document.getElementsByTagName("body")[0].appendChild(p.boxB);}function redrawPad(){switch(modeID){case 0:var yComponent=1;break;case 1:var yComponent=2;break;default:;}var x=Math.round(THIS.hsv[0]/6*(widthPad-1));var y=Math.round((1-THIS.hsv[yComponent])*(height-1));jscolor.picker.padM.style.backgroundPosition=THIS.pickerFace+THIS.pickerInset+x-7+"px "+(THIS.pickerFace+THIS.pickerInset+y-7)+"px";var seg=jscolor.picker.sld.childNodes;switch(modeID){case 0:var rgb=HSV_RGB(THIS.hsv[0],THIS.hsv[1],1);for(var i=0;i<seg.length;i++){seg[i].style.backgroundColor="rgb("+rgb[0]*(1-i/seg.length)*100+"%,"+rgb[1]*(1-i/seg.length)*100+"%,"+rgb[2]*(1-i/seg.length)*100+"%)";}break;case 1:var rgb,s,c=[THIS.hsv[2],0,0];var i=Math.floor(THIS.hsv[0]);var f=i%2?THIS.hsv[0]-i:1-(THIS.hsv[0]-i);switch(i){case 0:case 6:rgb=[0,1,2];break;case 1:rgb=[1,0,2];break;case 2:rgb=[2,0,1];break;case 3:rgb=[2,1,0];break;case 4:rgb=[1,2,0];break;case 5:rgb=[0,2,1];break;default:;}for(var i=0;i<seg.length;i++){s=1-1/(seg.length-1)*i;c[1]=c[0]*(1-s*f);c[2]=c[0]*(1-s);seg[i].style.backgroundColor="rgb("+c[rgb[0]]*100+"%,"+c[rgb[1]]*100+"%,"+c[rgb[2]]*100+"%)";}break;default:;}}function redrawSld(){switch(modeID){case 0:var yComponent=2;break;case 1:var yComponent=1;break;default:;}var y=Math.round((1-THIS.hsv[yComponent])*(height-1));jscolor.picker.sldM.style.backgroundPosition="0 "+(THIS.pickerFace+THIS.pickerInset+y-5)+"px";}function isPickerOwner(){return jscolor.picker&&jscolor.picker.owner==THIS;}function blurTarget(){if(valueElement==target){THIS.importColor();}if(THIS.picker){THIS.hidePicker();}}function blurValue(){if(valueElement!=target){THIS.importColor();}}function setPad(e){var posM=jscolor.getMousePos(e);var x=posM[0]-posPad[0];var y=posM[1]-posPad[1];switch(modeID){case 0:THIS.fromHSV(x*(6/(widthPad-1)),1-y/(height-1),null,leaveSld);break;case 1:THIS.fromHSV(x*(6/(widthPad-1)),null,1-y/(height-1),leaveSld);break;default:;}}function setSld(e){var posM=jscolor.getMousePos(e);var y=posM[1]-posPad[1];switch(modeID){case 0:THIS.fromHSV(null,null,1-y/(height-1),leavePad);break;case 1:THIS.fromHSV(null,1-y/(height-1),null,leavePad);break;default:;}}var THIS=this;var modeID=this.pickerMode.toLowerCase()=="hvs"?1:0;var abortBlur=false;var valueElement=jscolor.fetchElement(this.valueElement),styleElement=jscolor.fetchElement(this.styleElement);var holdPad=false,holdSld=false;var posPad,posSld;var widthSld=16,widthArrow=7,widthPad=181,height=101;var leaveValue=1,leaveStyle=2,leavePad=4,leaveSld=8;jscolor.addEvent(target,"focus",function(){if(THIS.picker){THIS.showPicker();}});jscolor.addEvent(target,"blur",function(){if(!abortBlur){setTimeout(function(){abortBlur||blurTarget();abortBlur=false;},0);}else{abortBlur=false;}});if(valueElement){var updateField=function(){THIS.fromString(valueElement.value,leaveValue);};jscolor.addEvent(valueElement,"keyup",updateField);jscolor.addEvent(valueElement,"input",updateField);jscolor.addEvent(valueElement,"blur",blurValue);valueElement.setAttribute("autocomplete","off");}if(styleElement){styleElement.jscStyle={backgroundColor:styleElement.style.backgroundColor,color:styleElement.style.color};}this.importColor();}};jscolor.install();