// Web software by DavidRegier.com
function showTable(){document.getElementById("masterTable").className="show";}
function DynamicIndex(){this.msg=new Array();this.msg.show="Click to show content";this.msg.hide="Click to hide content";this.getPlusMinus=getPlusMinus;this.reset=reset;this.switchDisplay=switchDisplay;this.showTip=showTip;this.init=init;function init(){var path=document.location.pathname;var delimeter=(path.indexOf("\\")>=0)?"\\":"/";var Path=path.split(delimeter);var fileName=Path[Path.length-1];this.cookieName=fileName.split(".")[0];var diState=GetCookie(this.cookieName);if(diState){var AllLinks=document.getElementsByTagName("a");var DiState=diState.split("_");for(var i=0;i<AllLinks.length;i++){for(var k in DiState){if(DiState[k]&&parseInt(DiState[k])==i){try{DI.switchDisplay(AllLinks[i],AllLinks[i].id)} catch(e){};}}}}}
function getPlusMinus(Link){return Link.previousSibling;}
function reset(OtherID){for(var i=0;i<OtherID.length;i++){var PlusMinus=document.getElementById("plusMinus_"+OtherID[i]);if(PlusMinus){PlusMinus.innerHTML="-";this.switchDisplay(null,OtherID[i]);}
else{alert("ERROR: DI.reset unable to initialize PlusMinus as an Object.\nPROBLEM: \"plusMinus_"+OtherID[i]+"\" cannot be found.");return;}}}
function switchDisplay(Link,contentID){if(!Link)Link=document.getElementById(contentID);var PlusMinus=getPlusMinus(Link);var expanding=(PlusMinus.innerHTML=="+"),contracting=!expanding;var Caption=document.getElementById("caption_"+Link.id);if(Caption)Caption.className=(expanding)?"diCaptionOn":"diCaptionOff";var Img=document.getElementById("img_"+Link.id);if(Img)Img.className=(expanding)?"borderOn":"borderOff";PlusMinus.innerHTML=(expanding)?"-":"+";var AllLinks=document.getElementsByTagName("a");var valOld=GetCookie(this.cookieName),valNew="";for(var i=0;i<AllLinks.length;i++){if(AllLinks[i]==Link){if(valOld){var key="_"+i+"_";if(valOld.indexOf(key)>=0){if(contracting){var ValOld=valOld.split(key);valNew=((ValOld[0])?ValOld[0]:"")+"_"+((ValOld[1])?ValOld[1]:"");(valNew=="_")?DeleteCookie(this.cookieName):SetCookie(this.cookieName,valNew);}
break;}
if(expanding)valNew=valOld+i+"_";}
else if(expanding)valNew="_"+i+"_";if(valNew)SetCookie(this.cookieName,valNew);break;}}
if(contentID)var Content=document.getElementById("content_"+contentID);else
var Content=(Link.parentNode.nextSibling.style)?Link.parentNode.nextSibling:Link.parentNode.nextSibling.nextSibling;try{Content.style.display=(contracting)?"none":"block";}
catch(Err){var problem=(contentID)?"\nPROBLEM: \"content_"+contentID+"\" cannot be found.":"";alert("ERROR: DI.switchDisplay unable to initialize Content as an Object."+problem);}
showTip(Link);}
function showTip(Link,msgOn,msgOff){var PlusMinus=getPlusMinus(Link);if(PlusMinus.innerHTML=="+"){Link.title=(msgOn)?msgOn:DI.msg.show;self.status=(msgOn)?msgOn:DI.msg.show;}
else{Link.title=(msgOff)?msgOff:DI.msg.hide;self.status=(msgOff)?msgOff:DI.msg.hide;}}}
function SlideShow(){try{Images.length=Images.length-1;}
catch(E){var eMsg="";for(var i in E)eMsg+="\n"+i+": "+E[i];reportErr("Slide-Show Error","ERROR: Images data-array cannot be initialized for one of the following reasons:\n 1) Data file \""+window.dataFile+"\" is non-existent.\n 2) Data file \""+window.dataFile+"\" exists but it's data is malformed.\n"+eMsg,1);}
this.slideNum=(Settings.SS.randomStart)?Math.floor(Math.random()*Images.length):0;this.nFirstSlide=this.slideNum;this.speedActual=Settings.SS.speed;this.automated=(this.speedActual<86400000);this.SPEED_FAST=500;this.preLoadTimer=0;this.NextImage=null;this.slideDelay=0;this.running=true;this.forward=true;this.buttons=false;this.maxDissolveMZ=800*550;this.maxImgWid=this.maxImgWid;this.maxImgHgt=this.maxImgHgt;this.longestCaption="";this.init=init;this.start=start;this.showSlide=showSlide;this.skipErrantSlide=skipErrantSlide;this.preLoadNext=preLoadNext;this.imgClickHandler=imgClickHandler;this.back=back;this.stop=stop;this.reStart=reStart;this.next=next;this.showMsg=showMsg;this.getCoordinates=getCoordinates;this.moveImgOverlay=moveImgOverlay;this.pauseSS=pauseSS;this.getControls=getControls;this.getGUI=getGUI;window.onresize=this.moveImgOverlay;this.msg=new Array();this.msg.ssRunning="Slide Show Running...";this.msg.downloadingImg="Preparing next slide...";this.msg.pleaseWait="Downloading image, please wait...";this.msg.ssPaused="Slide Show Paused, re-click \"Pause\" to continue...";this.msg.ssPausedSF="Slide Show Paused, click \"Run\" to continue...";this.msg.next="Jump forward";this.msg.back="Go back";this.msg.tn="View slide-show photos as clickable thumbnails";function start(){if(Settings.SS.console){var Console=document.getElementById("ssConsole");Console.style.height=Console.offsetHeight;}
this.showMsg();if(Settings.SS.console)Console.style.visibility="visible";this.preLoadNext();}
function getCoordinates(TheImage){var x=0;var y=0;TheElement=TheImage;var parPosAbs=false;while(TheElement){if(SF){if(!parPosAbs)parPosAbs=(TheElement.style.position=="absolute");if(parPosAbs&&TheElement==document.body)break;}
y+=TheElement.offsetTop;x+=TheElement.offsetLeft;TheElement=TheElement.offsetParent;}
return[x,y];}
function moveImgOverlay(){if(SS.ImgOverlay){var OverlayPos=SS.getCoordinates(document.images.slideShow.parentNode);SS.ImgOverlay.style.left=OverlayPos[0]+"px";SS.ImgOverlay.style.top=OverlayPos[1]+"px";}}
function showSlide(){if(this.NextImage){this.showMsg();var TheImage=document.images.slideShow;var widNew=Images[this.slideNum][1];var hgtNew=Images[this.slideNum][2];var imgArea=widNew*hgtNew;var widReal=this.NextImage.width,hgtReal=this.NextImage.height;if(widReal>1&&hgtReal>1){if((local||SS.speedActual==SS.SPEED_FAST)&&(widReal!=widNew||hgtReal!=hgtNew))alert("Error: "+Images[this.slideNum][0]+"; slide #"+(this.slideNum+1)+" has incorrect dimensions...\n 1) "+widReal+"x"+hgtReal+" are the true values\n 2) "+widNew+"x"+hgtNew+" are the errant values");}
if(this.forward&&(winIE||(MZ&&imgArea<=this.maxDissolveMZ)||(SF&&Settings.dissolveSF)||OP)&&Settings.transNum>=1&&this.speedActual>this.SPEED_FAST){var nNewImg=(Images.length==this.slideNum)?0:this.slideNum;var nOldImg=(nNewImg==0)?Images.length-1:nNewImg-1;TheImage.width=Images[nOldImg][1];TheImage.height=Images[nOldImg][2];TheImage.src=Settings.folder+Images[nOldImg][0];if(Settings.borderWid)TheImage.style.borderColor="rgb( "+getRGB(Images[nOldImg][4])+" )";var imgStyle=(Settings.borderWid)?" style='border:"+Settings.borderWid+"px solid rgb("+getRGB(Images[nNewImg][4])+");'":"";var newImg="<img name='slideShowNew' src='"+Settings.folder+Images[nNewImg][0]+"' width='"+Images[nNewImg][1]+"' height='"+Images[nNewImg][2]+"' title='"+TheImage.title+"'"+imgStyle+" onmousedown='SS.imgClickHandler( event );'>";if(!SS.ImgOverlay){SS.ImgOverlay=document.createElement("DIV");SS.ImgOverlay.style.top=(screen.height*-1)+"px";SS.ImgOverlay.style.left=(screen.width*-1)+"px";SS.ImgOverlay.style.zIndex=1000;SS.ImgOverlay.style.position="absolute";SS.ImgOverlay.style.backgroundColor="rgb( "+Settings.SS.bkgColor+" )";document.body.appendChild(SS.ImgOverlay);}
SS.ImgOverlay.style.width=this.maxImgWid+"px";SS.ImgOverlay.style.height=this.maxImgHgt+"px";if(winIE)SS.ImgOverlay.style.visibility="hidden";if(MZ)SS.ImgOverlay.style.opacity=0;else SS.ImgOverlay.style.opacity=0;var OverlayPos=SS.getCoordinates(TheImage.parentNode);SS.ImgOverlay.style.left=OverlayPos[0]+"px";SS.ImgOverlay.style.top=OverlayPos[1]+"px";SS.ImgOverlay.innerHTML=newImg;startFade(SS.ImgOverlay,Settings.transNum,Settings.transDur,0);}
else{if(this.ImgOverlay){document.body.removeChild(this.ImgOverlay);this.ImgOverlay=null;}
TheImage.style.visibility="hidden";TheImage.width=widNew;TheImage.height=hgtNew;if(Settings.borderWid)TheImage.style.borderColor="rgb( "+getRGB(Images[this.slideNum][4])+" )";TheImage.src=this.NextImage.src;TheImage.style.visibility="visible";}
this.forward=true;}}
function showMsg(){if(Settings.SS.statusBar||Settings.SS.console){var imgTitle=(Images[this.slideNum][3])?Images[this.slideNum][3].replace(/\^/g, "\"" ) : "";
var colon=(imgTitle)?": ":"";var slideNumDisplay=this.slideNum-this.nFirstSlide+1;if(slideNumDisplay<1)slideNumDisplay=Images.length+slideNumDisplay;var slideCount=slideNumDisplay+" of "+Images.length
if(imgTitle=="*")imgTitle=Settings.pageTitle;else if(imgTitle.indexOf("*+")==0)imgTitle=Settings.pageTitle+imgTitle.split("+")[1];else if(imgTitle.indexOf("+*")>=0)imgTitle=imgTitle.split("+")[0]+Settings.pageTitle;if(Settings.SS.statusBar)self.status="Slide "+slideCount+colon+imgTitle;if(Settings.SS.console){if(document.getElementById("ssConsoleAlt")){document.getElementById("ssConsoleAlt").innerHTML=slideCount;document.getElementById("ssConsole").innerHTML=imgTitle;}
else
document.getElementById("ssConsole").innerHTML=slideCount+colon+imgTitle;}}}
function skipErrantSlide(){if(local||SS.speedActual==SS.SPEED_FAST){if(!SS.errReported){alert("Slide #"+(SS.slideNum+1)+"; "+SS.NextImage.src+" failed to load");SS.errReported=true;}}
SS.NextImage=null;}
function preLoadNext(){if(!Settings.SS.statusBar&&this.automated)self.status=this.msg.ssRunning;var recursionTimer=100;this.slideDelay+=recursionTimer;if(!this.NextImage){this.slideNum++;if(this.slideNum==Images.length)this.slideNum=0;this.NextImage=new Image();this.NextImage.onerror=this.skipErrantSlide;this.NextImage.src=Settings.folder+Images[this.slideNum][0];}
if(this.NextImage&&this.NextImage.complete&&this.slideDelay>this.speedActual){this.slideDelay=0;this.showSlide();this.NextImage=null;clearTimeout(this.preLoadTimer);this.preLoadNext();if(Settings.SS.controls&&document.getElementById("backBut"))document.getElementById("backBut").disabled=false;if(Settings.SS.scrollSlide)window.scroll(Settings.SS.scrollSlide[0],Settings.SS.scrollSlide[1]);}
else
this.preLoadTimer=setTimeout("SS.preLoadNext()",recursionTimer);}
function imgClickHandler(e){if(!e)e=window.event;if(e.ctrlKey||e.metaKey){if(this.speedActual==Settings.SS.speed)this.speedActual=this.SPEED_FAST;else
this.speedActual=Settings.SS.speed;}
if(e.shiftKey){if(this.running)this.pauseSS(true);else
this.pauseSS(false);}}
function back(){if(Settings.SS.console)document.getElementById("ssConsole").innerHTML=this.msg.pleaseWait;if(Settings.SS.statusBar)self.status=this.msg.pleaseWait;clearTimeout(this.preLoadTimer);this.forward=false;this.slideNum-=3;if(this.slideNum==-2)this.slideNum=Images.length-2;if(this.slideNum==-3)this.slideNum=Images.length-3;this.NextImage=null;this.pauseSS(false);}
function stop(){clearTimeout(this.preLoadTimer);}
function reStart(){this.slideDelay=Settings.SS.speed+1;this.preLoadNext();}
function next(){if(Settings.SS.console)document.getElementById("ssConsole").innerHTML=this.msg.pleaseWait;if(Settings.SS.statusBar)self.status=this.msg.pleaseWait;clearTimeout(this.preLoadTimer);this.forward=true;this.pauseSS(false);}
function pauseSS(pause){var Button=(this.buttons)?document.getElementById("pauseButton"):null;if(pause){if(SF){if(Button)Button.value="Run";self.status=this.msg.ssPausedSF;}
else{if(Button)Button.className="ssButtonOn";self.status=this.msg.ssPaused;}
this.stop();this.running=false;if(Button)Button.title="Resume";}
else{this.reStart();if(this.automated)self.status=this.msg.ssRunning;if(Button){if(SF)Button.value="Pause";Button.className="ssButton";Button.title="Pause";}
this.running=true;}}
function getControls(){this.buttons=true;return "<input type='button' id='backBut' class='ssButton' value='&lt;&lt;' onClick='SS.back();' title='"+this.msg.back+"'>&nbsp;&nbsp;<input name='pauseButton' class='ssButton' id='pauseButton' type='button' value='Pause' onClick='SS.pauseSS( ( ( SS.running ) ? true : false ) );' title='Pause'"+((SF)?" style='width:60px;'":"")+">&nbsp;&nbsp;<input type='button' class='ssButton' value='&gt;&gt;' onClick='SS.next();' title='"+this.msg.next+"'>";}
function init(){var maxWid=-1,maxHgt=-1,bordWid=Settings.borderWid*2;for(var i=0;i<Images.length;i++){if(Images[i][1]>maxWid)maxWid=Images[i][1];if(Images[i][2]>maxHgt)maxHgt=Images[i][2];}
this.maxImgWid=maxWid+bordWid;this.maxImgHgt=maxHgt+bordWid;var nChars=0;for(var i=0;i<Images.length;i++){if(!Images[i][4])Images[i][4]=Settings.borderCol;var caption=Images[i][3];if(caption){if(caption.length>nChars){this.longestCaption=Images[i][3];nChars=caption.length;}}}}
function getGUI(guiAlign,consoleLoc,buttonsLoc){this.init();var bordCol=(Images[this.slideNum][4])?Images[this.slideNum][4]:Settings.borderCol;var imgStyle=(Settings.borderWid)?" style='border-color:rgb("+getRGB(bordCol)+");'":"";var img1Title=(Images[0][3])?Images[0][3].replace(/\^/g, "\"" ) : "";
var console="",buttons="";if(Settings.SS.console)console="<tr><td align='center'><div class='ssConsole' id='ssConsole' style='visibility:hidden; width:"+this.maxImgWid+"px;'>"+Images.length+" of "+Images.length+((img1Title)?": ":"")+this.longestCaption+"</div></td></tr>";if(Settings.SS.controls)buttons="<tr><td align='center'><div class='ssControls' style='white-space:nowrap;'>"+SS.getControls()+"</div></td></tr>";var htm="<table align='"+guiAlign+"' border='0' cellspacing='0' cellpadding='0' id='ssGUI'>";if(Settings.pageTitle)htm+="<tr><td align='center'><div class='ssTnTitle'>"+Settings.pageTitle+"</div></td></tr>";if(buttonsLoc=="above")htm+=buttons;if(consoleLoc=="above")htm+=console;htm+="<tr><td valign='top' align='center'><table align='center' border='0' cellspacing='0' cellpadding='0'><tr><td valign='top'><table align='center' border='0' cellspacing='0' cellpadding='0'><tr><td align='center' valign='top' style='width:"+this.maxImgWid+"px; height:"+this.maxImgHgt+"px;'><img name='slideShow' src='"+Settings.folder+Images[this.slideNum][0]+"' onError='SS.skipErrantSlide(); SS.preLoadNext(); this.slideDelay = this.speedActual + 1;' width='"+Images[this.slideNum][1]+"' height='"+Images[this.slideNum][2]+"' title='Slide-Show' onmousedown='SS.imgClickHandler( event );'"+imgStyle+" galleryimg='no' onAbort='this.src=this.src;' class='ssImage'></td></tr>";if(consoleLoc=="below")htm+=console;if(buttonsLoc=="below")htm+=buttons;htm+="</table></td></tr></table></td></tr></table>";return htm;}}
function initTestimonials(){try{var Divs=document.getElementsByTagName("div");var testNum=0;for(var i=0;i<Divs.length;i++){if(Divs[i].id.indexOf("test")==0){Images[testNum][3]=Divs[i].innerHTML;testNum++;}}}
catch(Err){self.status="Initializing testimonials...";setTimeout("initTestimonials();",2500);}}
function PrinterFriendly(){this.dText=["Printer-Friendly Song List","Revert to Web-Layout","Compacts page & maximizes it for your printer..","Reformat page back to default \"web\" layout..."];this.init=init;this.setView=setView;this.printPage=printPage;function init(){try{var PrnLink=document.getElementById("prnFrLink");PrnLink.innerHTML=this.dText[0];PrnLink.title=this.dText[2];}
catch(e){setTimeout("PF.init();",250);}}
function setView(TheLink,divArr){self.status="Setting styles of page elements, one moment please...";var makePF=(TheLink.innerHTML==this.dText[0]);for(member in divArr){var TheDiv=document.getElementById(divArr[member]);try{if(makePF)TheDiv.style.display="none";else TheDiv.style.display="block";}
catch(e){alert("ERROR: Div element \""+divArr[member]+"\" not found in method PF.setView");}}
if(makePF){with(document.body){if(PAGE_STYLE.bkgImg)style.backgroundImage="url( none )";if(PAGE_STYLE.bkgCol)style.backgroundColor="white";if(PAGE_STYLE.margin)style.margin="10px 10px 10px 10px";}
TheLink.innerHTML=this.dText[1];TheLink.title=this.dText[3];}
else{with(document.body){if(PAGE_STYLE.bkgImg)style.backgroundImage=PAGE_STYLE.bkgImg;if(PAGE_STYLE.bkgCol)style.backgroundColor=PAGE_STYLE.bkgCol;if(PAGE_STYLE.margin)style.margin=PAGE_STYLE.margin;}
TheLink.innerHTML=this.dText[0];TheLink.title=this.dText[2];}
if(TheLink.focus&&!SF){TheLink.focus();TheLink.blur();}
self.status=" ";}
function printPage(TheLink){if(window.print&&TheLink.innerHTML==this.dText[1])self.print();}}