
var com=com||{};com.YourFriendPaul=com.YourFriendPaul||{};if(typeof com.YourFriendPaul.splendidFretboard!="undefined"){alert("Namespace com.YourFriendPaul.splendidFretboard is already defined");throw new Error("Namespace com.YourFriendPaul.splendidFretboard is already defined");}
if(typeof com.YourFriendPaul.splendidFretboard=="undefined"||null===com.YourFriendPaul.splendidFretboard){(function(){com.YourFriendPaul.splendidFretboard={};var splendidFretboard=com.YourFriendPaul.splendidFretboard;window.splendidFretboard=splendidFretboard;splendidFretboard.ModeTextInfo=function(modeName,seventhType,statusText){this.name=modeName||"";this.seventh=seventhType||"";this.status=statusText||"";};splendidFretboard.ButtonState=function(){this.scaleType=0;this.mode=0;this.noteFilterMode=0;this.key=0;this.status=null;};splendidFretboard.ButtonState.prototype.copy=function(){var nw=new splendidFretboard.ButtonState();nw.scaleType=this.scaleType;nw.mode=this.mode;nw.noteFilterMode=this.noteFilterMode;nw.key=this.key;nw.status=this.status;return nw;};splendidFretboard.ButtonState.prototype.unequal=function(nw){var diff=0;if(null===nw){return-1;}
if(nw.scaleType!==this.scaleType){diff++;}
if(nw.mode!==this.mode){diff++;}
if(nw.noteFilterMode!==this.noteFilterMode){diff++;}
if(nw.key!==this.key){diff++;}
if(nw.status!==this.status){diff++;}
return diff;};splendidFretboard.global={displayStyle:0,currentTuning:0,needErase:true,currentButtonState:null,lastButtonState:null,debugMode:false,codeVersion:"0.2",wheReami:""};splendidFretboard.getEbyId=function(eName){var elem=document.getElementById(eName);if(elem===null){alert("getElement failed: "+eName);throw new Error("getElementById failed: "+eName);}
return(elem);};splendidFretboard.consts={maxFrets:17,modeText:{},initModeText:function(){var mT={};mT.diatonic=[new splendidFretboard.ModeTextInfo("1 Ionian","Maj 7","Diatonic Ionian"),new splendidFretboard.ModeTextInfo("2 Dorian","Min 7","Diatonic Dorian"),new splendidFretboard.ModeTextInfo("3 Phrygian","Min 7","Diatonic Phrygian"),new splendidFretboard.ModeTextInfo("4 Lydian","Maj 7","Diatonic Lydian"),new splendidFretboard.ModeTextInfo("5 Mixolydian","Dom 7","Diatonic Mixolydian"),new splendidFretboard.ModeTextInfo("6 Aeolian","Min 7","Diatonic Aeolian"),new splendidFretboard.ModeTextInfo("7 Locrian","Min 7b5","Diatonic Locrian")];mT.melodicMinor=[new splendidFretboard.ModeTextInfo("1 Melodic Minor","Min/Maj 7","Melodic Minor"),new splendidFretboard.ModeTextInfo("2 Dorian b2","Min 7","Dorian b2 (Melodic Minor ii)"),new splendidFretboard.ModeTextInfo("3 Lydian augmented","Min 7","Lydian augmented (Melodic Minor iii)"),new splendidFretboard.ModeTextInfo("4 Lydian dominant","Maj 7","Lydian dominant (Melodic Minor iv)"),new splendidFretboard.ModeTextInfo("5 Mixolydian b6","Dom 7","Mixolydian b6 (Hindu) (Melodic Minor v)"),new splendidFretboard.ModeTextInfo("6 Half diminished","Min 7","Half diminished (Melodic Minor vi)"),new splendidFretboard.ModeTextInfo("7 Super Locrian","Min 7b5","Super Locrian (Melodic Minor vii)")];mT.harmonicMinor=[new splendidFretboard.ModeTextInfo("1 Harmonic Minor","Min/Maj 7","Harmonic Minor"),new splendidFretboard.ModeTextInfo("2 Harmonic Minor","Min 7b5","Harmonic Minor mode 2"),new splendidFretboard.ModeTextInfo("3 Harmonic Minor","Aug Maj 7","Harmonic Minor mode 3"),new splendidFretboard.ModeTextInfo("4 Harmonic Minor","Min 7","Harmonic Minor mode 4"),new splendidFretboard.ModeTextInfo("5 Harmonic Minor","Dom 7","Harmonic Minor mode 5"),new splendidFretboard.ModeTextInfo("6 Harmonic Minor","Maj 7","Harmonic Minor mode 6"),new splendidFretboard.ModeTextInfo("7 Harmonic Minor","Dim 7","Harmonic Minor mode 7")];this.modeText=mT;},scaleType:{diatonic:0,melodicMinor:1,harmonicMinor:2,majorPentatonic:5,minorPentatonic:6,diminished:7,wholeStep:8},intervals:{0:[2,2,1,2,2,2,1],1:[2,1,2,2,2,2,1],2:[2,1,2,2,1,3,1],5:[2,2,3,2,3],6:[3,2,2,3,2],7:[2,1,2,1,2,1,2,1],8:[2,2,2,2,2,2]},buttonStatusText:{"buttonModalScale":"Use table","buttonMajorTriad":"Major Triad","buttonMinorTriad":"Minor Triad","buttonDimTriad":"Diminished Triad","buttonSuspTriad":"Suspended Triad (sus or sus4)","buttonMajorSeventh":"Seventh chord: Maj. 7th (M7)","buttonMinorSeventh":"Seventh chord: Min. 7th (m7)","buttonDomSeventh":"Seventh chord: Dom. 7th (7 or dom7)","buttonDimSeventh":"Seventh chord: Dim. 7th (dim7)","buttonMinb5Seventh":"Seventh chord: Half-diminished, Min. 7 flat 5 (m7b5)","buttonMinMajSeventh":"Seventh chord: Minor-major (m/M7)","buttonMajorScale":"Major Scale (Diatonic Ionian)","buttonMinorScale":"Minor Scale (Diatonic Aeolian)","buttonHarMinScale":"Harmonic Minor Scale","buttonMelMinScale":"Melodic Minor Scale","buttonMajPentatonicScale":"Major Pentatonic Scale","buttonMinPentatonicScale":"Minor Pentatonic Scale","buttonDiminishedScale":"Diminished Scale","buttonWholeStepScale":"Whole Step Scale"},keyNames:["C ","C#","D ","D#","E ","F ","F#","G ","G#","A ","A#","B"],qtyNotesDisplayed:{allNotes:0,triadNotes:1,seventhNotes:2,majorPentatonic:3,minorPentatonic:4,suspNotes:5},cellDisplayType:{cellNormal:0,cellEnhanced:1,cellNumbered:2},parkPlace:"luapdneirfruoy",lT1:"ptth",lT2:"ucod",lT3:"acol",boardwalk:"/LMTH/gnihtyrevE/stnemucoD02%yM/luaP/sgnitteS02%dna02%stnemucoD/"};splendidFretboard.program={init:function(){var elem=splendidFretboard.getEbyId("ui");elem.style.display="none";document.body.style.scrollbarBaseColor="#A0CAE0";splendidFretboard.displayFretboard.imagesLoaded=false;splendidFretboard.debug.debugModeInit();splendidFretboard.status.init();splendidFretboard.consts.initModeText();splendidFretboard.displayFretboard.preloadCellImages();elem=splendidFretboard.getEbyId("displaySelect0");elem.checked="checked";elem=splendidFretboard.getEbyId("tuningSelect");elem.selectedIndex=0;splendidFretboard.global.wheReami=splendidFretboard.debug.findWheReami();splendidFretboard.global.wheReami=eval(splendidFretboard.global.wheReami);splendidFretboard.util.updateExternalLinks();this.checkload();},finalizeInit:function(){splendidFretboard.button.rebuildModeSelect();var elem=splendidFretboard.getEbyId("ui");splendidFretboard.util.addButtonHandlers();elem.style.visibility="visible";elem.style.display="block";splendidFretboard.status.defaultMsg();},loadIter:100,checkload:function(){if(splendidFretboard.displayFretboard.imagesLoaded!==true){if(0<this.loadIter--){splendidFretboard.status.dspMessage("Image(s) are not done loading, please wait ( "+
splendidFretboard.displayFretboard.imageLoadCount+", "+this.loadIter+" )");setTimeout(function(){splendidFretboard.program.checkload();},50);}else{splendidFretboard.status.dspMessage("Image(s) are missing, unable to start program.");alert("Image(s) are missing, unable to start program.");}}else{this.finalizeInit();}},processCurrentButtonState:function(){var updateFretboard=function(cbs){var fretboard=[];var sfc=splendidFretboard.consts;if(null===cbs||null===cbs.scaleType){return;}
fretboard=splendidFretboard.computeFretboard.computeAll(sfc.intervals[cbs.scaleType],cbs.mode,cbs.noteFilterMode);splendidFretboard.displayFretboard.update(fretboard);};var checkValidity=function(cbs){if(splendidFretboard.debug.validateParking()!==true){return"Ionian";}
return cbs;};checkValidity(splendidFretboard.global.currentButtonState);updateFretboard(splendidFretboard.global.currentButtonState);splendidFretboard.status.update(splendidFretboard.global.currentButtonState);}};splendidFretboard.util={addListener:function(eType,elem,funcName){var oldE,onName="on"+eType;if(document.addEventListener){elem.addEventListener(eType,funcName,false);}
else if(document.attachEvent){elem.attachEvent(onName,funcName);}
else{if(elem[onName]!==null){oldE=elem[onName];elem[onName]=function(e){oldE(e);funcName(e);};}else{elem[onName]=funcName;}}},addButtonHandlers:function(){var elems=null;var iCount;var findScaleButton=new RegExp("\\b"+"scaleButton"+"\\b","g");elems=splendidFretboard.getEbyId("guitarForm").getElementsByTagName("input");for(iCount=0;iCount<elems.length;iCount++){if(elems[iCount].className.match(findScaleButton)){this.addListener("click",elems[iCount],splendidFretboard.util.scaleEvent);}
else if(elems[iCount].parentNode.parentNode.id=="dspStyleSel"){this.addListener("click",elems[iCount],splendidFretboard.util.displayStyleEvent);}
else if(elems[iCount].id=="buttonErase"){this.addListener("click",elems[iCount],splendidFretboard.button.eraseFrets);}
else if(elems[iCount].id=="buttonShowLast"){this.addListener("click",elems[iCount],splendidFretboard.button.showLast);}
else{alert("new button? "+elems[iCount].className+" : "+elems[iCount].id+" : "+elems[iCount].parentNode.parentNode.id);}}
elems=splendidFretboard.getEbyId("guitarForm").getElementsByTagName("select");for(iCount=0;iCount<elems.length;iCount++){if(elems[iCount].id=="modeBasisSelect"){this.addListener("change",elems[iCount],splendidFretboard.button.rebuildModeSelect);}
else if(elems[iCount].id=="tuningSelect"){this.addListener("change",elems[iCount],splendidFretboard.util.tuningEvent);}}},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;},tuningEvent:function(e){splendidFretboard.button.tuningButton(splendidFretboard.util.eventInfo(e).target);},scaleEvent:function(e){splendidFretboard.button.scaleButton(splendidFretboard.util.eventInfo(e).target.id);},displayStyleEvent:function(e){splendidFretboard.button.displayButton(splendidFretboard.util.eventInfo(e).target.id);},updateExternalLinks:function(){if(!document.getElementsByTagName){return;}
var anchors=document.getElementsByTagName("a");var count,anch;for(count=0;count<anchors.length;count++){anch=anchors[count];if(anch.getAttribute("href")&&anch.getAttribute("rel")=="external"){anch.target="_blank";}}},selectBox:{deleteAll:function(eId){var elem=splendidFretboard.getEbyId(eId);while(elem.length>0){elem.remove(0);}},addOption:function(eId,optText){var elem=splendidFretboard.getEbyId(eId);var iCount;if(typeof optText=="string"){var objOption=document.createElement("option");objOption.appendChild(document.createTextNode(optText));elem.appendChild(objOption);}
else{for(iCount=0;iCount<optText.length;iCount++){this.addOption(eId,optText[iCount]);}}}}};splendidFretboard.button={eraseFrets:function(){splendidFretboard.displayFretboard.clear();},showLast:function(){var tempState;if(null!==splendidFretboard.global.lastButtonState&&null!==splendidFretboard.global.currentButtonState){tempState=splendidFretboard.global.lastButtonState.copy();splendidFretboard.global.lastButtonState=splendidFretboard.global.currentButtonState.copy();splendidFretboard.global.currentButtonState=tempState.copy();splendidFretboard.global.needErase=true;splendidFretboard.program.processCurrentButtonState();}},tuningButton:function(elem){var val=parseInt(elem.value,10);if(val!=splendidFretboard.global.currentTuning){splendidFretboard.global.currentTuning=val;splendidFretboard.global.needErase=true;splendidFretboard.program.processCurrentButtonState();}},displayButton:function(eId){var sfc=splendidFretboard.consts;switch(eId){case"displaySelect0":splendidFretboard.global.displayStyle=sfc.cellDisplayType.cellNormal;break;case"displaySelect1":splendidFretboard.global.displayStyle=sfc.cellDisplayType.cellEnhanced;break;case"displaySelect2":splendidFretboard.global.displayStyle=sfc.cellDisplayType.cellNumbered;break;default:alert("displayButton error:\n"+eId);}
splendidFretboard.program.processCurrentButtonState();},scaleButton:function(eId){function updateStates(scaleType,scaleMode,noteFilterMode,statusText){var stateChanged=false;var bs=new splendidFretboard.ButtonState();bs.scaleType=scaleType;bs.noteFilterMode=noteFilterMode;bs.key=parseInt(splendidFretboard.getEbyId("keySelect").value,10);bs.mode=scaleMode;bs.status=statusText||null;if(bs.unequal(splendidFretboard.global.currentButtonState)){if(null!==splendidFretboard.global.currentButtonState){splendidFretboard.global.lastButtonState=splendidFretboard.global.currentButtonState.copy();}
splendidFretboard.global.currentButtonState=bs.copy();splendidFretboard.global.needErase=true;stateChanged=true;}
return stateChanged;}
var sfc=splendidFretboard.consts;var mtp;var scaleTypeNumber,noteDspType;var statusText=sfc.buttonStatusText[""+eId]||null;var scaleMode=null;switch(eId){case"buttonModalScale":var elem=splendidFretboard.getEbyId("modeBasisSelect");var currMode=elem.selectedIndex;var currName=elem.options[currMode].value;scaleTypeNumber=sfc.scaleType[currName];scaleMode=splendidFretboard.getEbyId("modeSelect").selectedIndex;noteDspType=sfc.qtyNotesDisplayed.allNotes;mtp=sfc.modeText[currName][splendidFretboard.getEbyId("modeSelect").selectedIndex];statusText=mtp.status+" ("+mtp.seventh+")";break;case"buttonMajorScale":scaleTypeNumber=sfc.scaleType.diatonic;scaleMode=0;noteDspType=sfc.qtyNotesDisplayed.allNotes;break;case"buttonMinorScale":scaleTypeNumber=sfc.scaleType.diatonic;scaleMode=5;noteDspType=sfc.qtyNotesDisplayed.allNotes;break;case"buttonMajorTriad":scaleTypeNumber=sfc.scaleType.diatonic;scaleMode=0;noteDspType=sfc.qtyNotesDisplayed.triadNotes;break;case"buttonMinorTriad":scaleTypeNumber=sfc.scaleType.diatonic;scaleMode=5;noteDspType=sfc.qtyNotesDisplayed.triadNotes;break;case"buttonDimTriad":scaleTypeNumber=sfc.scaleType.diminished;noteDspType=sfc.qtyNotesDisplayed.triadNotes;break;case"buttonSuspTriad":scaleTypeNumber=sfc.scaleType.diatonic;scaleMode=0;noteDspType=sfc.qtyNotesDisplayed.suspNotes;break;case"buttonMajorSeventh":scaleTypeNumber=sfc.scaleType.diatonic;scaleMode=0;noteDspType=sfc.qtyNotesDisplayed.seventhNotes;break;case"buttonMinorSeventh":scaleTypeNumber=sfc.scaleType.diatonic;scaleMode=5;noteDspType=sfc.qtyNotesDisplayed.seventhNotes;break;case"buttonDimSeventh":scaleTypeNumber=sfc.scaleType.diminished;noteDspType=sfc.qtyNotesDisplayed.seventhNotes;break;case"buttonDomSeventh":scaleTypeNumber=sfc.scaleType.diatonic;scaleMode=4;noteDspType=sfc.qtyNotesDisplayed.seventhNotes;break;case"buttonMinb5Seventh":scaleTypeNumber=sfc.scaleType.diatonic;scaleMode=6;noteDspType=sfc.qtyNotesDisplayed.seventhNotes;break;case"buttonMinMajSeventh":scaleTypeNumber=sfc.scaleType.harmonicMinor;scaleMode=0;noteDspType=sfc.qtyNotesDisplayed.seventhNotes;break;case"buttonHarMinScale":scaleTypeNumber=sfc.scaleType.harmonicMinor;noteDspType=sfc.qtyNotesDisplayed.allNotes;break;case"buttonMelMinScale":scaleTypeNumber=sfc.scaleType.melodicMinor;noteDspType=sfc.qtyNotesDisplayed.allNotes;break;case"buttonMajPentatonicScale":scaleTypeNumber=sfc.scaleType.diatonic;scaleMode=0;noteDspType=sfc.qtyNotesDisplayed.majorPentatonic;break;case"buttonMinPentatonicScale":scaleTypeNumber=sfc.scaleType.diatonic;scaleMode=5;noteDspType=sfc.qtyNotesDisplayed.minorPentatonic;break;case"buttonDiminishedScale":scaleTypeNumber=sfc.scaleType.diminished;noteDspType=sfc.qtyNotesDisplayed.allNotes;break;case"buttonWholeStepScale":scaleTypeNumber=sfc.scaleType.wholeStep;noteDspType=sfc.qtyNotesDisplayed.allNotes;break;default:alert("scaleButton error:\n"+eId);}
if(true===updateStates(scaleTypeNumber,scaleMode,noteDspType,statusText)){splendidFretboard.program.processCurrentButtonState();}},rebuildModeSelect:function(){var elem=splendidFretboard.getEbyId("modeBasisSelect");var currMode=elem.selectedIndex;var currName=elem.options[currMode].value;var iCount;var modeName=splendidFretboard.consts.modeText[currName];splendidFretboard.util.selectBox.deleteAll("modeSelect");for(iCount=0;iCount<modeName.length;iCount++){splendidFretboard.util.selectBox.addOption("modeSelect",modeName[iCount].name);}}};splendidFretboard.displayFretboard={clear:function(){var strNum,fretNum,cellName;for(strNum=1;strNum<7;strNum++){for(fretNum=0;fretNum<=splendidFretboard.consts.maxFrets;fretNum++){cellName=this.cellNameStr(strNum,fretNum);document.images[cellName].src=this.cellImages[0].src;}}
splendidFretboard.global.needErase=false;splendidFretboard.status.defaultMsg();},update:function(fretboard){var strNum;if(splendidFretboard.global.needErase===true){this.clear();splendidFretboard.global.needErase=false;}
for(strNum=1;strNum<7;strNum++){this.displayString(strNum,fretboard[strNum]);}},displayString:function(strNum,strData){var fretNum,cellName,noteNum,val;for(fretNum=0;fretNum<=splendidFretboard.consts.maxFrets;fretNum++){noteNum=strData[fretNum];val=this.createImageNumber(noteNum);if(isNaN(val)){alert("val is NaN for fret "+fretNum+", noteNum "+noteNum);}
if(val!==0){cellName=this.cellNameStr(strNum,fretNum);if(val>14){alert("Cell image number: "+val);}
else if(val>8&&val<10){alert("Cell image number: "+val);}
if(typeof this.cellImages[val]!="object"){alert("cellImages["+val+"] is not an object");}
document.images[cellName].src=this.cellImages[val].src;}}},cellImages:[],countLoadedImages:function(){splendidFretboard.displayFretboard.imageLoadCount++;if(splendidFretboard.displayFretboard.imageTotal==splendidFretboard.displayFretboard.imageLoadCount){splendidFretboard.displayFretboard.imagesLoaded=true;}},imagesLoaded:false,imageLoadCount:0,imageTotal:500,newImage:function(src,width,height){var img=new Image(width,height);img.onload=this.countLoadedImages;img.src=src;return img;},preloadCellImages:function(){this.imageTotal=13;this.cellImages[0]=this.newImage("Fingerboard%20cell.gif",40,40);this.cellImages[1]=this.newImage("Num1Cell.gif",40,40);this.cellImages[2]=this.newImage("Num2Cell.gif",40,40);this.cellImages[3]=this.newImage("Num3Cell.gif",40,40);this.cellImages[4]=this.newImage("Num4Cell.gif",40,40);this.cellImages[5]=this.newImage("Num5Cell.gif",40,40);this.cellImages[6]=this.newImage("Num6Cell.gif",40,40);this.cellImages[7]=this.newImage("Num7Cell.gif",40,40);this.cellImages[8]=this.newImage("Num8Cell.gif",40,40);this.cellImages[9]=0;this.cellImages[10]=this.newImage("SquBlkCell.gif",40,40);this.cellImages[11]=this.newImage("RndBlkCell.gif",40,40);this.cellImages[12]=this.newImage("RndBlkCell2.gif",40,40);this.cellImages[13]=this.newImage("RndBlkCell3.gif",40,40);},cellNameStr:function(strNum,fretNum)
{var cellName;cellName="c"+strNum;if(fretNum<10){cellName+="0";}
cellName+=fretNum;return cellName;},createImageNumber:function(inval){var imgDspMode=splendidFretboard.global.displayStyle;var val=0;if(inval===0){val=0;}else if(imgDspMode==splendidFretboard.consts.cellDisplayType.cellNumbered){val=inval;}else if(imgDspMode==splendidFretboard.consts.cellDisplayType.cellNormal){val=(inval==1)?10:11;}else{if(inval==1){val=10;}
else if(inval==3){val=12;}
else if(inval==5){val=11;}
else{val=13;}}
return val;}};splendidFretboard.computeFretboard={computeAll:function(intervalList,startingInt,noteFilterMode){var numberedScale=[];var fretboard=[];numberedScale=this.createTwelveNoteValues(intervalList,startingInt,noteFilterMode);fretboard=this.makeFretboardNoteNumbers(numberedScale);return(fretboard);},createTwelveNoteValues:function(intervalList,startingInt,scaleFilter){var result=[];var text="";function twelveStepBuild(inIntervals,startingInt){var notes=[];var noteNum=0;var nextNote=0;var iCount=0;var intervalList=[];var noteNumList=[1,2,3,4,5,6,7,8,9,10,11,12];var len=inIntervals.length;if(startingInt===0){intervalList=inIntervals;}
else{for(iCount=0;iCount<len;iCount++){intervalList[iCount]=inIntervals[(iCount+startingInt)%len];}}
for(iCount=0;iCount<12;iCount++){if(iCount==nextNote){notes[iCount]=noteNumList[noteNum];nextNote+=intervalList[noteNum++];}
else{notes[iCount]=0;}}
return notes;}
function twelveStepFilter(noteValues,scaleFilter){var count;var filter=[];var noteFilter={showAll:[1,1,1,1,1,1,1,1,1,1,1,1],showTriad:[1,0,3,0,5,0,0,0,0,0,0,0,0],showSusp:[1,0,0,4,5,0,0,0,0,0,0,0,0],show7th:[1,0,1,0,1,0,1,0,0,0,0,0,0],showMajorPent:[1,1,1,0,1,1,0,0,0,0,0,0],showMinorPent:[1,0,1,1,1,0,1,0,0,0,0,0]};switch(scaleFilter){case(splendidFretboard.consts.qtyNotesDisplayed.allNotes):filter=noteFilter.showAll;break;case(splendidFretboard.consts.qtyNotesDisplayed.triadNotes):filter=noteFilter.showTriad;break;case(splendidFretboard.consts.qtyNotesDisplayed.suspNotes):filter=noteFilter.showSusp;break;case(splendidFretboard.consts.qtyNotesDisplayed.seventhNotes):filter=noteFilter.show7th;break;case(splendidFretboard.consts.qtyNotesDisplayed.majorPentatonic):filter=noteFilter.showMajorPent;break;case(splendidFretboard.consts.qtyNotesDisplayed.minorPentatonic):filter=noteFilter.showMinorPent;break;default:alert("Invalid scaleFilter in: twelveStep.filter()");break;}
for(count=0;count<noteValues.length;count++){noteValues[count]=filter[noteValues[count]-1]?noteValues[count]:0;}
return noteValues;}
text="<br />createTwelveNoteValues<br />";text+="Intervals: "+intervalList+", start: "+startingInt+"<br />";result=twelveStepBuild(intervalList,startingInt);text+=result+"<br />";result=twelveStepFilter(result,scaleFilter);text+=result+"<br />";splendidFretboard.debug.dspMessage(text);return result;},makeFretboardNoteNumbers:function(numberedScale){var tuningArrays=[[0,5,5,5,4,5],[-2,7,5,5,4,5],[-2,7,5,5,2,5],[-2,7,5,4,3,5]];var strNum,intervalStart=0;var fretboard=[];var tuningSteps=[];var intervalList=[];var steps=12;function adjustKey(numberedScale,key){var count,built=[];for(count=0;count<steps;count++){built[(steps+count-4+key)%steps]=numberedScale[count];}
return built;}
function makeOneString(intList,intStart){var stringData=[];var fretNum,listLen;listLen=intList.length;for(fretNum=0;fretNum<=splendidFretboard.consts.maxFrets;fretNum++){stringData[fretNum]=intList[(intStart+fretNum)%listLen];}
return stringData;}
fretboard[0]="0 not used as string";intervalList=adjustKey(numberedScale,splendidFretboard.global.currentButtonState.key);tuningSteps=tuningArrays[splendidFretboard.global.currentTuning];for(strNum=1;strNum<7;strNum++){intervalStart=(steps+intervalStart+tuningSteps[strNum-1])%steps;fretboard[strNum]=makeOneString(intervalList,intervalStart);}
return fretboard;}};splendidFretboard.status={elem:null,update:function(bs){if(null===bs){this.defaultMsg();return;}
var text="Key: <b>"+this.getKeyText(bs.key)+"</b> &nbsp; ";text+="Mode/type: <b>";text+=bs.status||"";text+="</b>";this.dspMessage(text);},defaultMsg:function(){this.dspMessage("Press a button to display a scale");},init:function(){this.elem=splendidFretboard.getEbyId("statusDiv");if(null===this.elem){alert("statusDiv element not found");}
this.defaultMsg();},dspMessage:function(text){this.elem.innerHTML=text;},getKeyText:function(val){var result="";if(val<splendidFretboard.consts.keyNames.length){result=splendidFretboard.consts.keyNames[val];}
return result;}};splendidFretboard.debug={dspMessage:function(text){if(splendidFretboard.global.debugMode===true){var elem=splendidFretboard.getEbyId("debugDiv");elem.innerHTML+=text;}},showLastFretState:function(){this.listProperties(splendidFretboard.global.lastButtonState,"Last");},showCurrentFretState:function(){this.listProperties(splendidFretboard.global.currentButtonState,"Curr");},debugModeInit:function(){if(splendidFretboard.global.debugMode===true){var elem=splendidFretboard.getEbyId("debugDiv");elem.style.display="block";}},validateParking:function(){var c="";var iF2;c+=this.revIt(splendidFretboard.consts.lT1);c+=String.fromCharCode(58);c+="//";var re=new RegExp(c,"i");var tS=""+splendidFretboard.global.wheReami;var iF1=tS.match(re);if(iF1!==null){c=this.revIt(splendidFretboard.consts.parkPlace);re=new RegExp(c,"i");iF2=tS.match(re);}
else{c=this.revIt(splendidFretboard.consts.boardwalk);this.dspMessage(" ( "+c+" ) ");re=new RegExp(c,"i");iF2=tS.match(re);}
return(iF2!==null?true:false);},findWheReami:function(){var c=""+this.revIt(splendidFretboard.consts.lT2)+"ment.";c+=this.revIt(splendidFretboard.consts.lT3)+"tion";return(c);},displayArray:function(arr){var count,text="";for(count=0;count<arr.length;count++){text+=arr[count]+"\n";}
return text;},dspArrayMsg:function(msg,arr){var text=msg;text+=this.displayArray(arr);alert(text);},listProperties:function(obj,objName){var result="Properties:\n";for(var i in obj){if(obj.hasOwnProperty(i)){result+=objName+"."+i+": "+obj[i]+"\n";}}
alert(result);},showAnchors:function(){if(!document.getElementsByTagName){return;}
var anchors=document.getElementsByTagName("a");var anch,text="";for(var i=0;i<anchors.length;i++){anch=anchors[i];if(anch.getAttribute("href")&&anch.getAttribute("rel")=="external"){anch.target="_blank";}
text+=anch.getAttribute("href")+" target="+anch.getAttribute("target")+"\n";}
alert(text);},revIt:function(fInp){var fOup;var iCount;var iPos=fInp.length-1;fOup="";for(iCount=iPos;iCount>=0;iCount--){fOup+=fInp.charAt(iCount);}
return(fOup);}};})();}