/* 2010-06-10T07:06:54-08:00 - Add input for number of Light boxes displayed.*/
var com;com=com||{};com.YourFriendPaul=com.YourFriendPaul||{};
com.YourFriendPaul.pbColorSpace=com.YourFriendPaul.pbColorSpace||{};
(function($){var pbColorSpace=$;
pbColorSpace.run=function(){pbColorSpace.ui.init();
};
pbColorSpace.ColorSpace=function(){this.valHsl={h:0,s:0,l:0};
this.valRgb={r:0,g:0,b:0};
};
pbColorSpace.ColorSpace.prototype.setHSL=function(hVal,sVal,lVal){if(this.checkFFinputRange(hVal)!==null&&this.checkFFinputRange(sVal)!==null&&this.checkFFinputRange(lVal)!==null){this.valHsl.h=hVal/255;
this.valHsl.s=sVal/255;
this.valHsl.l=lVal/255;
}this._computeRGB();
};
pbColorSpace.ColorSpace.prototype.setRGB=function(rVal,gVal,bVal){if(this.checkFFinputRange(rVal)!==null&&this.checkFFinputRange(gVal)!==null&&this.checkFFinputRange(bVal)!==null){var rt=rVal/255;
var gt=gVal/255;
var bt=bVal/255;
var rgbMin=Math.min(rt,gt,bt);
var rgbMax=Math.max(rt,gt,bt);
var rgbDelta=rgbMax-rgbMin;
this.valHsl.l=(rgbMax+rgbMin)/2;
if(rgbDelta===0){this.valHsl.h=0;
this.valHsl.s=0;
}else{if(this.valHsl.l<0.5){this.valHsl.s=rgbDelta/(rgbMax+rgbMin);
}else{this.valHsl.s=rgbDelta/(2-rgbMax-rgbMin);
}var del_R=(((rgbMax-rt)/6)+(rgbDelta/2))/rgbDelta;
var del_G=(((rgbMax-gt)/6)+(rgbDelta/2))/rgbDelta;
var del_B=(((rgbMax-bt)/6)+(rgbDelta/2))/rgbDelta;
if(rt==rgbMax){this.valHsl.h=del_B-del_G;
}else{if(gt==rgbMax){this.valHsl.h=(1/3)+del_R-del_B;
}else{if(bt==rgbMax){this.valHsl.h=(2/3)+del_G-del_R;
}}}if(this.valHsl.h<0){this.valHsl.h+=1;
}if(this.valHsl.h>1){this.valHsl.h-=1;
}}}this._computeRGB();
};
pbColorSpace.ColorSpace.prototype.getHSLArray=function(){var tVal=[this.getH(),this.getS(),this.getL()];
return tVal;
};
pbColorSpace.ColorSpace.prototype.getRGBArray=function(){var rgb=[this.getR(),this.getG(),this.getB()];
return(rgb);
};
pbColorSpace.ColorSpace.prototype.getRgb=function(){return(this.getR()*65536+this.getG()*256+this.getB());
};
pbColorSpace.ColorSpace.prototype.getHsl=function(){var sum=this.getH()*65536+this.getS()*256+this.getL();
return sum;
};
pbColorSpace.ColorSpace.prototype.getH=function(){return Math.round(this.valHsl.h*255);
};
pbColorSpace.ColorSpace.prototype.getS=function(){return Math.round(this.valHsl.s*255);
};
pbColorSpace.ColorSpace.prototype.getL=function(){return Math.round(this.valHsl.l*255);
};
pbColorSpace.ColorSpace.prototype.getR=function(){return this.valRgb.r;
};
pbColorSpace.ColorSpace.prototype.getG=function(){return this.valRgb.g;
};
pbColorSpace.ColorSpace.prototype.getB=function(){return this.valRgb.b;
};
pbColorSpace.ColorSpace.prototype._computeRGB=function(){var rgb={r:0,g:0,b:0};
var var_2,var_1;
if(this.valHsl.s===0){rgb.r=this.valHsl.l*255;
rgb.g=this.valHsl.l*255;
rgb.b=this.valHsl.l*255;
}else{if(this.valHsl.l<0.5){var_2=this.valHsl.l*(1+this.valHsl.s);
}else{var_2=(this.valHsl.l+this.valHsl.s)-(this.valHsl.s*this.valHsl.l);
}var_1=2*this.valHsl.l-var_2;
rgb.r=255*this._computeRGBsub(var_1,var_2,this.valHsl.h+(1/3));
rgb.g=255*this._computeRGBsub(var_1,var_2,this.valHsl.h);
rgb.b=255*this._computeRGBsub(var_1,var_2,this.valHsl.h-(1/3));
}this.valRgb.r=Math.round(rgb.r);
this.valRgb.g=Math.round(rgb.g);
this.valRgb.b=Math.round(rgb.b);
};
pbColorSpace.ColorSpace.prototype._computeRGBsub=function(v1,v2,vH){if(vH<0){vH+=1;
}if(vH>1){vH-=1;
}if((6*vH)<1){return(v1+(v2-v1)*6*vH);
}if((2*vH)<1){return(v2);
}if((3*vH)<2){return(v1+(v2-v1)*((2/3)-vH)*6);
}return(v1);
};
pbColorSpace.ColorSpace.prototype.checkFFinputRange=function(num){return(pbColorSpace.numbers.checkFFinputRange(num));
};
pbColorSpace.ColorSpace.prototype.checkFFFFFFinputRange=function(num){return(pbColorSpace.numbers.checkFFFFFFinputRange(num));
};
})(com.YourFriendPaul.pbColorSpace);
(function($){var pbColorSpace=$;
var pbTableBuilder={};
pbColorSpace.pbTableBuilder=pbTableBuilder;
pbTableBuilder.SingleColorTableValues=function(){this.parentNode=null;
this.caption="";
this.baseColor=0;
this.satMin=0;
this.satMax=255;
this.satIntervals=8;
this.bSatOffset=false;
this.lightMin=0;
this.lightMax=255;
this.lightIntervals=15;
this.bIntOffset=false;
this.satCompression=0;
this.lightCompression=0;
this.textVisibility="visible";
this.tableId="singleColorTable";
};
pbTableBuilder.SingleColorTableValues.prototype.redraw=function(){this.erase();
this.draw();
};
pbTableBuilder.SingleColorTableValues.prototype.draw=function(){if(null!==this.parentNode){var tab1=pbTableBuilder.buildTableNodes(this);
this.parentNode.appendChild(tab1);
}};
pbTableBuilder.SingleColorTableValues.prototype.erase=function(){if(null!==this.parentNode){while(this.parentNode.hasChildNodes()){this.parentNode.removeChild(this.parentNode.firstChild);
}}};
pbTableBuilder.SingleColorTableValues.prototype.updateDisplayText=function(){pbTableBuilder.displayText(this.tableId,this.textVisibility);
};
pbTableBuilder.computeSteps=function(sMin,sMax,numIntervals,useOffset){var stepArray=[];
var intPortion=1/numIntervals;
var delta=sMax-sMin;
var yOffset=useOffset?(delta/2)*intPortion:0;
var yVal=0;
var iCount=0;
yVal=sMin+yOffset+iCount*delta*intPortion;
while(yVal<=sMax){stepArray.push(Math.round(yVal));
yVal=sMin+yOffset+(++iCount)*delta*intPortion;
}return stepArray;
};
pbTableBuilder.computeY=function(xVal,compVal){if(0===compVal){return xVal;
}var res=0;
if(xVal<0.5){res=compVal*Math.sin(xVal*Math.PI)/2+(1-compVal)*xVal;
}else{res=compVal/2+compVal*(1-Math.sin(xVal*Math.PI))/2+(1-compVal)*xVal;
}return res;
};
pbTableBuilder.computeStepsComp=function(xMin,xMax,numIntervals,useOffset,compVal){var stepArray=[];
var yOffset=0;
var delta=xMax-xMin;
var intPortion=1/numIntervals;
if(useOffset){yOffset=Math.round(delta/numIntervals/2);
delta=delta-2*yOffset;
numIntervals--;
intPortion=1/numIntervals;
}var yVal=0;
var iCount=0;
for(iCount=0;
iCount<=numIntervals;
iCount++){yVal=xMin+yOffset+(pbTableBuilder.computeY(iCount*intPortion,compVal))*delta;
stepArray.push(Math.round(yVal));
}return stepArray;
};
pbTableBuilder.displayText=function(elemId,textVisitility){var elem=document.getElementById(elemId);
if(null===elem){return;
}var tdList=elem.getElementsByTagName("td");
var visibilityStyle=textVisitility;
var iCount=0;
var spanElem=null;
for(iCount=0;
iCount<tdList.length;
iCount++){spanElem=tdList[iCount].getElementsByTagName("span");
spanElem[0].style.visibility=visibilityStyle;
}return;
};
pbTableBuilder.buildTableNodes=function(tableValues){var textColor=16777215;
var cellArray=[];
var cData=null;
var iCount=0;
var lCount=0;
var caption=tableValues.caption;
var baseColor=tableValues.baseColor;
var satMin=tableValues.satMin;
var satMax=tableValues.satMax;
var satIntervals=tableValues.satIntervals;
var bSatOffset=tableValues.bSatOffset;
var lightMin=tableValues.lightMin;
var lightMax=tableValues.lightMax;
var lightIntervals=tableValues.lightIntervals;
var bIntOffset=tableValues.bIntOffset;
var lightCompression=tableValues.lightCompression;
var textVisibility=tableValues.textVisibility;
var tableId=tableValues.tableId;
var satArray=pbTableBuilder.computeStepsComp(satMin,satMax,satIntervals,bSatOffset,0);
var lightArray=pbTableBuilder.computeStepsComp(lightMin,lightMax,lightIntervals,bIntOffset,lightCompression);
var testTable=new pbTableBuilder.domTable(tableId);
testTable.setClassName("colorTable");
if(caption.length>0){testTable.setCaption(caption);
}else{testTable.setCaption("Sat & Light for Hue "+pbColorSpace.numbers.toHexStringWithZeros(baseColor,2));
}testTable.addCaptionNode();
for(iCount=0;
iCount<satArray.length;
iCount++){cData=new pbTableBuilder.cellData();
cData.cellType="th";
cData.text="Sat="+pbColorSpace.numbers.toHexStringWithZeros(satArray[iCount],2);
cellArray.push(cData);
}testTable.addBodyRow(testTable.buildRow(cellArray));
cellArray=null;
cellArray=[];
for(lCount=0;
lCount<lightArray.length;
lCount++){if(lightArray[lCount]>=128){textColor=0;
}for(iCount=0;
iCount<satArray.length;
iCount++){var cso=new pbColorSpace.ColorSpace();
cso.setHSL(baseColor,satArray[iCount],lightArray[lCount]);
cData=new pbTableBuilder.cellData();
cData.text=pbColorSpace.numbers.toHexStringWithZeros(cso.getHsl(),6)+"<br />";
cData.text+="#"+pbColorSpace.numbers.toHexStringWithZeros(cso.getRgb(),6);
cData.tColor=textColor;
cData.tbgColor=cso.getRgb();
cData.tbgHslColor=cso.getHsl();
cData.tClass="tdColor";
cData.textVisibility=textVisibility;
cData.id="lacell"+pbColorSpace.numbers.toHexStringWithZeros(lCount,4)+pbColorSpace.numbers.toHexStringWithZeros(iCount,4);
cellArray.push(cData);
}testTable.addBodyRow(testTable.buildRow(cellArray));
cellArray=null;
cellArray=[];
}return testTable.getRootNode();
};
pbTableBuilder.tests=function(){var compression=function(vals){var iCount=0;
var iterSize=1/vals;
var aVals=[];
var aRes=[];
for(iCount=0;
iCount<vals;
iCount++){aVals[iCount]=(iterSize*iCount).toFixed(2);
aRes[iCount]=pbTableBuilder.computeY(iterSize*iCount,-1).toFixed(3);
}alert(aVals+"\n"+aRes);
};
return compression;
}();
pbTableBuilder.cellData=function(){this.cellType="td";
this.text="";
this.tColor=-1;
this.tbgColor=-1;
this.tbgHslColor=-1;
this.tClass=-1;
this.tSpan=0;
this.padding="";
this.id="";
this.textVisibility="visible";
};
pbTableBuilder.domTable=function(idName){this.base=document.createElement("table");
this.base.id="noIdName";
if(idName!="undefined"){this.base.id=idName;
}this.base.createTHead();
this.base.appendChild(document.createElement("tbody"));
this.captionText="";
};
pbTableBuilder.domTable.prototype.setClassName=function(tName){this.base.className=tName;
};
pbTableBuilder.domTable.prototype.buildCell=function(cData){var elem=null;
if(cData.cellType=="td"){elem=document.createElement("td");
}else{if(cData.cellType=="th"){elem=document.createElement("th");
}else{return null;
}}var spanElem=null;
if(cData.text.length>0){spanElem=document.createElement("span");
spanElem.style.visibility=cData.textVisibility;
elem.appendChild(spanElem);
spanElem.innerHTML=cData.text;
}if(cData.id!==""){elem.id=cData.id;
}if(cData.tClass!==""){elem.className=cData.tClass;
}if(cData.tColor>=0){elem.style.color="#"+pbColorSpace.numbers.toHexStringWithZeros(cData.tColor,6);
}if(cData.tbgColor>=0){elem.style.backgroundColor="#"+pbColorSpace.numbers.toHexStringWithZeros(cData.tbgColor,6);
}if(cData.padding!==""){elem.style.padding=cData.padding;
}elem.title="HSL: "+pbColorSpace.numbers.toHexStringWithZeros(cData.tbgHslColor,6)+", RGB: #"+pbColorSpace.numbers.toHexStringWithZeros(cData.tbgColor,6);
return elem;
};
pbTableBuilder.domTable.prototype.buildRow=function(tdArray){var elem=document.createElement("tr");
var iCount=0;
var tdNode;
for(iCount=0;
iCount<tdArray.length;
iCount++){tdNode=this.buildCell(tdArray[iCount]);
elem.appendChild(tdNode);
}return elem;
};
pbTableBuilder.domTable.prototype.addBodyRow=function(elem){this.base.tBodies[0].appendChild(elem);
};
pbTableBuilder.domTable.prototype.setCaption=function(text){this.captionText=text;
};
pbTableBuilder.domTable.prototype.addCaptionNode=function(){var cNode=document.createElement("caption");
cNode.appendChild(document.createTextNode(this.captionText));
this.base.appendChild(cNode);
};
pbTableBuilder.domTable.prototype.getRootNode=function(){return this.base;
};
})(com.YourFriendPaul.pbColorSpace);
(function($){var returns={};
var pbColorSpace=$;
$.ui={};
$.ui=returns;
var initData,setEventHandlers,addKeydownListener,filterKeys,outputRGBaString,outputHSLaString,outputRGBbString,outputHSLbString,makeRGBstring,makeHSLstring,replaceNodeText,allowTextToHex;
var showChangeButton={trueText:"Show text",falseText:"Hide text"};
var mainSCT=null;
returns.init=function(){initData();
setEventHandlers();
};
initData=function(){var elem;
var defHue="93";
var sMin="0";
var sMax="FF";
var lMin="08";
var lMax="F8";
var lBoxes="16";
mainSCT=new pbColorSpace.pbTableBuilder.SingleColorTableValues();
elem=document.getElementById("inputHSL");
elem.value="";
elem=document.getElementById("inputRGB");
elem.value="";
elem=document.getElementById("tableRGB");
elem.value="";
elem=document.getElementById("tableHSL");
elem.value="";
elem=document.getElementById("tableH");
elem.value=defHue;
mainSCT.baseColor=parseInt(allowTextToHex(defHue),16);
elem=document.getElementById("tableSmin");
elem.value=sMin;
mainSCT.satMin=parseInt(allowTextToHex(sMin),16);
elem=document.getElementById("tableSmax");
elem.value=sMax;
mainSCT.satMax=parseInt(allowTextToHex(sMax),16);
elem=document.getElementById("tableLmin");
elem.value=lMin;
mainSCT.lightMin=parseInt(allowTextToHex(lMin),16);
elem=document.getElementById("tableLmax");
elem.value=lMax;
mainSCT.lightMax=parseInt(allowTextToHex(lMax),16);
elem=document.getElementById("tableLqty");
elem.value=lBoxes;
mainSCT.lightIntervals=parseInt(lBoxes,10)-1;
elem=document.getElementById("tableShowText");
elem.value=showChangeButton.falseText;
elem=document.getElementById("tableLcompression");
elem.selectedIndex=10;
elem=document.getElementById("tableH");
returns.tableHChange(elem);
};
setEventHandlers=function(){var elem=document.getElementById("inputHSL");
elem.onchange=function(){pbColorSpace.ui.hslChange(this);
};
addKeydownListener(elem,pbColorSpace.ui.hslKeydown);
elem=document.getElementById("inputRGB");
elem.onchange=function(){pbColorSpace.ui.rgbChange(this);
};
addKeydownListener(elem,pbColorSpace.ui.rgbKeydown);
elem=document.getElementById("tableHSL");
elem.onchange=function(){pbColorSpace.ui.tableHslChange(this);
};
addKeydownListener(elem,pbColorSpace.ui.tableHslKeydown);
elem=document.getElementById("tableRGB");
elem.onchange=function(){pbColorSpace.ui.tableRgbChange(this);
};
addKeydownListener(elem,pbColorSpace.ui.tableRgbKeydown);
elem=document.getElementById("tableH");
elem.onchange=function(){pbColorSpace.ui.tableHChange(this);
};
addKeydownListener(elem,pbColorSpace.ui.tableHKeydown);
elem=document.getElementById("tableSmin");
elem.onchange=function(){pbColorSpace.ui.tableSminChange(this);
};
addKeydownListener(elem,pbColorSpace.ui.tableSminKeydown);
elem=document.getElementById("tableSmax");
elem.onchange=function(){pbColorSpace.ui.tableSmaxChange(this);
};
addKeydownListener(elem,pbColorSpace.ui.tableSmaxKeydown);
elem=document.getElementById("tableLmin");
elem.onchange=function(){pbColorSpace.ui.tableLminChange(this);
};
addKeydownListener(elem,pbColorSpace.ui.tableLminKeydown);
elem=document.getElementById("tableLmax");
elem.onchange=function(){pbColorSpace.ui.tableLmaxChange(this);
};
addKeydownListener(elem,pbColorSpace.ui.tableLmaxKeydown);
elem=document.getElementById("tableLqty");
elem.onchange=function(){pbColorSpace.ui.tableLqtyChange(this);
};
addKeydownListener(elem,pbColorSpace.ui.tableLqtyKeydown);
elem=document.getElementById("tableShowText");
elem.onclick=function(){pbColorSpace.ui.tableShowChange(this);
};
elem=document.getElementById("tableLcompression");
elem.onchange=function(){pbColorSpace.ui.tableLightCompressionChange(this);
};
};
addKeydownListener=function(elem,funcName){var el=0;
if(typeof document.addEventListener!="undefined"){elem.addEventListener("keydown",funcName,false);
el=1;
}else{if(typeof document.attachEvent!="undefined"){elem.attachEvent("onkeydown",funcName);
el=2;
}else{if(elem.onkeydown!==null){var oldOnkeydown=elem.onkeydown;
elem.onkeydown=function(e){oldOnkeydown(e);
funcName(e);
};
el=3;
}else{elem.onkeydown=funcName;
el=4;
}}}};
filterKeys=function(e){alert("key");
e=e?e:window.event;
var k=e.keyCode?e.keyCode:e.which?e.which:null;
if(k==13){alert("enter key");
}};
returns.eventInfo=function(e){var ei={event:e||window.event,target:null,keycode:null};
ei.keycode=ei.event.keyCode||ei.event.which;
ei.target=ei.event.target||ei.event.srcElement;
if(ei.target.nodeType==3){ei.target=ei.target.parentNode;
}return ei;
};
returns.hslKeydown=function(e){var ei=pbColorSpace.ui.eventInfo(e);
if(ei.keycode==13){pbColorSpace.ui.hslChange(ei.target);
}return(e);
};
returns.rgbKeydown=function(e){var ei=pbColorSpace.ui.eventInfo(e);
if(ei.keycode==13){pbColorSpace.ui.rgbChange(ei.target);
}return(e);
};
returns.tableRgbKeydown=function(e){var ei=pbColorSpace.ui.eventInfo(e);
if(ei.keycode==13){pbColorSpace.ui.tableRgbChange(ei.target);
}return(e);
};
returns.tableHslKeydown=function(e){var ei=pbColorSpace.ui.eventInfo(e);
if(ei.keycode==13){pbColorSpace.ui.tableHslChange(ei.target);
}return(e);
};
returns.tableHKeydown=function(e){var ei=pbColorSpace.ui.eventInfo(e);
if(ei.keycode==13){pbColorSpace.ui.tableHChange(ei.target);
}return(e);
};
returns.tableSminKeydown=function(e){var ei=pbColorSpace.ui.eventInfo(e);
if(ei.keycode==13){pbColorSpace.ui.tableSminChange(ei.target);
}return(e);
};
returns.tableSmaxKeydown=function(e){var ei=pbColorSpace.ui.eventInfo(e);
if(ei.keycode==13){pbColorSpace.ui.tableSmaxChange(ei.target);
}return(e);
};
returns.tableLminKeydown=function(e){var ei=pbColorSpace.ui.eventInfo(e);
if(ei.keycode==13){pbColorSpace.ui.tableLminChange(ei.target);
}return(e);
};
returns.tableLmaxKeydown=function(e){var ei=pbColorSpace.ui.eventInfo(e);
if(ei.keycode==13){pbColorSpace.ui.tableLmaxChange(ei.target);
}return(e);
};
returns.tableLqtyKeydown=function(e){var ei=pbColorSpace.ui.eventInfo(e);
if(ei.keycode==13){pbColorSpace.ui.tableLqtyChange(ei.target);
}return(e);
};
allowTextToHex=function(inText){if(inText.charAt(0)=="#"){return inText.slice(1);
}if(inText.slice(0,2)=="0x"||inText.slice(0,2)=="0X"){return inText.slice(2);
}return inText;
};
returns.hslChange=function(elem){var num=parseInt(allowTextToHex(elem.value),16);
if(num>=0&&num<=16777215){var hslArr=pbColorSpace.numbers.splitHex(num);
var tempCs=new pbColorSpace.ColorSpace();
tempCs.setHSL(hslArr[0],hslArr[1],hslArr[2]);
outputRGBaString(makeRGBstring(tempCs));
outputHSLaString(makeHSLstring(tempCs));
}else{outputRGBaString("unknown");
outputHSLaString("unknown");
}};
returns.rgbChange=function(elem){var num=parseInt(allowTextToHex(elem.value),16);
if(num>=0&&num<=16777215){var rgbArr=pbColorSpace.numbers.splitHex(num);
var tempCs=new pbColorSpace.ColorSpace();
tempCs.setRGB(rgbArr[0],rgbArr[1],rgbArr[2]);
outputRGBbString(makeRGBstring(tempCs));
outputHSLbString(makeHSLstring(tempCs));
}else{outputRGBbString("unknown");
outputHSLbString("unknown");
}};
makeRGBstring=function(CS){var hexParts=pbColorSpace.numbers.splitHex(CS.getRgb());
var text="0x";
text+=pbColorSpace.numbers.toHexStringWithZeros(CS.getRgb(),6)+" ";
text+="("+hexParts[0]+", "+hexParts[1]+", "+hexParts[2]+")";
text+=" ("+(hexParts[0]/255).toFixed(3)+", "+(hexParts[1]/255).toFixed(3)+", "+(hexParts[2]/255).toFixed(3)+")";
return text;
};
makeHSLstring=function(CS){var hexParts=pbColorSpace.numbers.splitHex(CS.getHsl());
var text="0x";
text+=pbColorSpace.numbers.toHexStringWithZeros(CS.getHsl(),6)+" ";
text+="("+hexParts[0]+", "+hexParts[1]+", "+hexParts[2]+")";
text+=" ("+(hexParts[0]/255).toFixed(3)+", "+(hexParts[1]/255).toFixed(3)+", "+(hexParts[2]/255).toFixed(3)+"), ";
text+="("+(360*hexParts[0]/255).toFixed(1)+"\u00B0)";
return text;
};
outputRGBaString=function(text){var outElem=document.getElementById("outputRGBa");
replaceNodeText(outElem,text);
};
outputHSLaString=function(text){var outElem=document.getElementById("outputHSLa");
replaceNodeText(outElem,text);
};
outputRGBbString=function(text){var outElem=document.getElementById("outputRGBb");
replaceNodeText(outElem,text);
};
outputHSLbString=function(text){var outElem=document.getElementById("outputHSLb");
replaceNodeText(outElem,text);
};
replaceNodeText=function(parentNode,text){while(parentNode.hasChildNodes()){parentNode.removeChild(parentNode.firstChild);
}parentNode.appendChild(document.createTextNode(text));
};
returns.tableRgbChange=function(elem){var num=parseInt(allowTextToHex(elem.value),16);
if(num>=0&&num<=16777215){var rgbArr=pbColorSpace.numbers.splitHex(num);
var tempCs=new pbColorSpace.ColorSpace();
tempCs.setRGB(rgbArr[0],rgbArr[1],rgbArr[2]);
var hue=tempCs.getH();
var outElem=document.getElementById("tableLoc");
mainSCT.parentNode=outElem;
mainSCT.caption="Base Web Page Color: "+pbColorSpace.numbers.toHexStringWithZeros(hue,2);
mainSCT.baseColor=hue;
mainSCT.redraw();
}};
returns.tableHslChange=function(elem){var num=parseInt(allowTextToHex(elem.value),16);
if(num>=0&&num<=16777215){var hslArr=pbColorSpace.numbers.splitHex(num);
var tempCs=new pbColorSpace.ColorSpace();
tempCs.setHSL(hslArr[0],hslArr[1],hslArr[2]);
var hue=tempCs.getH();
var outElem=document.getElementById("tableLoc");
mainSCT.parentNode=outElem;
mainSCT.caption="Base Web Page Color: "+pbColorSpace.numbers.toHexStringWithZeros(hue,2);
mainSCT.baseColor=hue;
mainSCT.redraw();
}};
returns.tableHChange=function(elem){var hue=parseInt(allowTextToHex(elem.value),16);
if(hue<=255&&hue>=0){var outElem=document.getElementById("tableLoc");
mainSCT.parentNode=outElem;
mainSCT.caption="Base Web Page Color: "+pbColorSpace.numbers.toHexStringWithZeros(hue,2);
mainSCT.baseColor=hue;
mainSCT.redraw();
}};
returns.tableSminChange=function(elem){var val=parseInt(allowTextToHex(elem.value),16);
if(val<=255&&val>=0){var outElem=document.getElementById("tableLoc");
mainSCT.parentNode=outElem;
mainSCT.satMin=val;
mainSCT.redraw();
}};
returns.tableSmaxChange=function(elem){var val=parseInt(allowTextToHex(elem.value),16);
if(val<=255&&val>=0){var outElem=document.getElementById("tableLoc");
mainSCT.parentNode=outElem;
mainSCT.satMax=val;
mainSCT.redraw();
}};
returns.tableLminChange=function(elem){var val=parseInt(allowTextToHex(elem.value),16);
if(val<=255&&val>=0){var outElem=document.getElementById("tableLoc");
mainSCT.parentNode=outElem;
mainSCT.lightMin=val;
mainSCT.redraw();
}};
returns.tableLmaxChange=function(elem){var val=parseInt(allowTextToHex(elem.value),16);
if(val<=255&&val>=0){var outElem=document.getElementById("tableLoc");
mainSCT.parentNode=outElem;
mainSCT.lightMax=val;
mainSCT.redraw();
}};
returns.tableLqtyChange=function(elem){var val=parseInt(elem.value,10);
if(val<=17&&val>=1){var outElem=document.getElementById("tableLoc");
mainSCT.parentNode=outElem;
mainSCT.lightIntervals=val-1;
mainSCT.redraw();
}};
returns.tableShowChange=function(elem){var curVal=elem.value;
if(curVal==showChangeButton.trueText){mainSCT.textVisibility="visible";
elem.value=showChangeButton.falseText;
}else{if(curVal==showChangeButton.falseText){mainSCT.textVisibility="hidden";
elem.value=showChangeButton.trueText;
}else{alert("tableShowChange, bad value: "+curVal);
}}mainSCT.updateDisplayText();
};
returns.tableLightCompressionChange=function(elem){var compValue=elem.options[elem.selectedIndex].value;
mainSCT.lightCompression=compValue;
mainSCT.redraw();
};
})(com.YourFriendPaul.pbColorSpace);
com.YourFriendPaul.pbColorSpace.numbers=function(){var returns={};
var tests={fLoc:com.YourFriendPaul.pbColorSpace.numbers,inputRangeFF:function(){alert("pbColorSpace.numbers.checkFFinputRange( 0 ) returns: "+this.fLoc.toHexString(this.fLoc.checkFFinputRange(0)));
alert("pbColorSpace.numbers.checkFFinputRange( 0xff ) returns: "+this.fLoc.toHexString(this.fLoc.checkFFinputRange(255)));
alert("pbColorSpace.numbers.checkFFinputRange( -1 ) returns: "+this.fLoc.toHexString(this.fLoc.checkFFinputRange(-1)));
alert("pbColorSpace.numbers.checkFFinputRange( 0x100 ) returns: "+this.fLoc.toHexString(this.fLoc.checkFFinputRange(256)));
},inputRangeFFFFFF:function(){alert("pbColorSpace.numbers.checkFFFFFFinputRange( 0 ) returns: "+this.fLoc.toHexString(this.fLoc.checkFFFFFFinputRange(0)));
alert("pbColorSpace.numbers.checkFFFFFFinputRange( 0xffffff ) returns: "+this.fLoc.toHexString(this.fLoc.checkFFFFFFinputRange(16777215)));
alert("pbColorSpace.numbers.checkFFFFFFinputRange( -1 ) returns: "+this.fLoc.toHexString(this.fLoc.checkFFFFFFinputRange(-1)));
alert("pbColorSpace.numbers.checkFFFFFFinputRange( 0x1000000 ) returns: "+this.fLoc.toHexString(this.fLoc.checkFFFFFFinputRange(16777216)));
},arrayToHexString:function(){alert("pbColorSpace.numbers.arrayToHexString( [ 1, 2, 3] ) returns: "+this.fLoc.arrayToHexString([1,2,3]));
alert("pbColorSpace.numbers.arrayToHexString( [ 0, 0x10, 0xff ] ) returns: "+this.fLoc.arrayToHexString([0,16,255]));
alert("pbColorSpace.numbers.arrayToHexString( [ 0xff, 0xfe, -1 ] ) returns: "+this.fLoc.arrayToHexString([255,254,-1]));
alert("pbColorSpace.numbers.arrayToHexString( [ 0xff, 0x100, 0xff ] ) returns: "+this.fLoc.arrayToHexString([255,256,255]));
},makeObjHSL:function(){var hslObj=new com.YourFriendPaul.pbColorSpace.ColorSpace();
var resArr;
hslObj.setHSL(1,0,240);
resArr=hslObj.getHSLArray();
alert("hslObj( [ 1, 0, 0xf0 ] ) getHSLArray() returns: "+this.fLoc.arrayToHexString(resArr));
resArr=hslObj.getRGBArray();
alert("hslObj( [ 1, 0, 0xf0 ] ) getRGBArray() returns: "+this.fLoc.arrayToHexString(resArr));
hslObj.setHSL(1,128,240);
resArr=hslObj.getHSLArray();
alert("hslObj( [ 1, 0x80, 0xf0 ] ) getHSLArray() returns: "+this.fLoc.arrayToHexString(resArr));
resArr=hslObj.getRGBArray();
alert("hslObj( [ 1, 0x80, 0xf0 ] ) getRGBArray() returns: "+this.fLoc.arrayToHexString(resArr));
},returnVals:function(){var hslObj=new com.YourFriendPaul.pbColorSpace.ColorSpace();
hslObj.setHSL(1,0,240);
var resArr=hslObj.getHSLArray();
alert("hslObj( [ 1, 0, 0xf0 ] ) getHSLArray() returns: "+this.fLoc.arrayToHexString(resArr));
var hsl=hslObj.getHsl();
alert(this.fLoc.arrayToHexString(resArr)+"\n"+hsl+"\n"+this.fLoc.toHexStringWithZeros(hsl,6));
}};
returns.splitHex=function(hexNum){if(this.checkFFFFFFinputRange(hexNum)===null){return null;
}var hVal=[0,0,0];
hVal[0]=(hexNum&16711680)>>16;
hVal[1]=(hexNum&65280)>>8;
hVal[2]=hexNum&255;
return hVal;
};
returns.toHexString=function(hexNum){if(typeof hexNum!="number"){return hexNum;
}return(hexNum.toString(16).toUpperCase());
};
returns.toHexStringWithZeros=function(hexNum,digits){var result=this.toHexString(hexNum);
while(digits>result.length){result="0"+result;
}return result;
};
returns.arrayToHexString=function(hexArray){var result="";
var tRes="";
var iCount=0;
for(iCount=0;
iCount<hexArray.length;
iCount++){if(this.checkFFinputRange(hexArray[iCount])===null){return null;
}tRes=hexArray[iCount].toString(16).toUpperCase();
if(tRes.length!=2){tRes="0"+tRes;
}result+=tRes;
}return result;
};
returns.checkFFinputRange=function(num){if(typeof num!="number"){alert("checkFFinputRange has non-numeric input: "+num);
return null;
}if(num>255||num<0){alert("checkFFinputRange is not 0-0xFF: "+num+", 0x"+this.toHexString(num));
return null;
}return num;
};
returns.checkFFFFFFinputRange=function(num){if(typeof num!="number"){alert("checkFFFFFFinputRange has non-numeric input: "+num);
return null;
}if(num>16777215||num<0){alert("checkFFFFFFinputRange is not 0-0xFFFFFF: 0x"+this.toHexString(num));
return null;
}return num;
};
return returns;
}();
function listProperties(obj,objName){var result="Properties:\n";
for(var i in obj){if(obj.hasOwnProperty(i)){result+=objName+"."+i+": "+obj[i]+"\n";
}}alert(result);
}