
var g_arySrc=new Array(0);
var g_aryDescr=new Array(0);
var g_aryWidth=new Array(0);
var g_aryHeight=new Array(0);
var g_aryTitle=new Array(0);
var g_aryExtra1=new Array(0);
var g_aryExtra2=new Array(0);
var g_aryExtra3=new Array(0);
var g_aryExtra4=new Array(0);
var g_aryDate=new Array(0);
var g_aryImg=new Array();
var g_aryIsLoaded=new Array();
var g_isSshow=false,
g_SshowIntId=null,
g_SshowLoopIdx=0;
var g_thisImg,
g_nextImg,
g_prevImg,
g_lastImg;
var g_ThmsPerPg,
g_firstImgThisPg;
var g_aryAllowed=new Array("file","description","width","height","title","date","extra1","extra2","extra3","extra4");
var g_aryAddArg=new Array(0);
g_aryAddArg=g_aryAddArg.concat(g_aryAllowed);
var g_callbackFn=pbtsNull;
var g_SshowDelay=4000;
var g_EID_Info="",
g_EID_Img="theimage",
g_EID_Descr="imgdescr",
g_EID_Title="",
g_EID_Extra1="",
g_EID_Extra2="",
g_EID_Extra3="",
g_EID_Extra4="",
g_EID_Date="",
g_EID_PgNav="",
g_EID_Thms="";
var g_ThmDir="images/photos/thumbs/",
g_ImgDir="images/photos/",
g_HTMLThmPg="",
g_HTMLImgPg="",
g_Spacer="images/shim.gif",
g_loadingImg=g_Spacer;
var g_ThmWidth=175,
g_ThmClass="",
g_ThmEmptyClass="",
g_ThmSpacing=2,
g_ThmCols=3,
g_ThmRows=3,
g_isThmTitles=false,
g_isThmAll=false;
var g_isWrap=true,
g_isRotate90=false;
var g_defDescr="",
g_defTitle="",
g_defDate="",
g_defExtra1="",
g_defExtra2="",
g_defExtra3="",
g_defExtra4="",
g_defWidth=1,
g_defHeight=1,
g_isSetDescrWidth=false;
function pbtsReadURLIdx(){
var l_tempStr=new String(window.location.search).toLowerCase();
var l_id=0;
var l_found=false;
if(l_tempStr.substr(1,3)=="img"){
l_tempStr=new String(l_tempStr.substr(5,l_tempStr.length-5));
if(l_tempStr.length<1)
l_tempStr="0";
else if(isNaN(l_tempStr))
alert("\""+l_tempStr+"\" is not a valid number.");
else
l_id=parseInt(l_tempStr);
if(l_id>=g_arySrc.length)
l_id=(g_arySrc.length-1);}else if(l_tempStr.substr(1,4)=="file"){
l_tempStr=l_tempStr.substr(6,l_tempStr.length-6);
for(var i=0;i<g_arySrc.length;i++){
if(g_arySrc[i].toLowerCase()==l_tempStr){
l_id=i;
l_found=true;
break;}}
if(!l_found)
alert("Sorry, did not find file \""+ l_tempStr+"\".");}
return l_id;}
function pbtsArrayFind(f_find,f_array){
var l_Found=false;
var j=0;
for(;j<=f_array.length;j++){
if(f_find==f_array[j]){
l_Found=true;
break;}}
return l_Found;}
function pbtsNull(){return true;}
function pbtsTimeLoadImg(){
if(g_aryImg[g_thisImg].complete){
document.getElementById(g_EID_Img).src=g_aryImg[g_thisImg].src;
g_aryIsLoaded[g_thisImg]=true;
clearInterval(g_TimerId);
g_callbackFn(g_thisImg);}}
function pbtsInitImgPg(){
g_nextImg=g_thisImg+1;
g_prevImg=g_thisImg-1;
g_lastImg=g_arySrc.length-1;
switchPic(g_thisImg);}
function pbtsInitThmbPg(){
g_ThmsPerPg=(g_ThmCols*g_ThmRows);
g_lastPage=Math.ceil(g_arySrc.length/g_ThmsPerPg);
pbtsGetFirstIdx();
pbtsWritePgNav();
pbtsWriteThmGrid();}
function pbtsGetFirstIdx(){
if((g_thisImg%g_ThmsPerPg)==0){
g_firstImgThisPg=g_thisImg;}else{
g_firstImgThisPg=g_thisImg-(g_thisImg%g_ThmsPerPg);}
return g_firstImgThisPg;}
function pbtsWriteThmGrid(){
var l_innerHTML="";
var l_title="";
var idx=1;
var l_start,l_stop,l_showAll;
var l_isOnePg=(g_HTMLThmPg==g_HTMLImgPg);
var l_spcHt=Math.round(g_ThmWidth*(g_defHeight/g_defWidth));
if(arguments.length>0)
l_showAll=arguments[0];
else
l_showAll=false;
if(l_showAll){
l_start=0;
l_stop=g_arySrc.length;}else{
l_start=g_firstImgThisPg;
l_stop=g_firstImgThisPg+g_ThmsPerPg;}
for(idx=l_start;idx<l_stop;idx++){
if((idx%g_ThmCols)==0)
l_innerHTML=l_innerHTML+"<tr>";
if(idx<g_arySrc.length){
if((g_isThmTitles)&&(g_aryTitle[idx].length>0))
l_title="<br>"+g_aryTitle[idx];
else
l_title="";
l_innerHTML=l_innerHTML+"<td valign=top \""+g_ThmClass+"\">";
if(g_aryWidth[idx]>g_aryHeight[idx]){
if(l_isOnePg)
l_innerHTML=l_innerHTML+"<a href='javascript:switchPic("+idx+");'>";
else
l_innerHTML=l_innerHTML+"<a href='"+g_HTMLImgPg+"?img="+idx+"'>";
l_innerHTML=l_innerHTML+"<img src='"+g_ThmDir+g_arySrc[idx]+"' border=0 alt=\"click for larger image\" width="+g_ThmWidth+"></a>"+l_title+"</td>";}else{
if(l_isOnePg)
l_innerHTML=l_innerHTML+"<a href='javascript:switchPic("+idx+");'>";
else
l_innerHTML=l_innerHTML+"<a href='"+g_HTMLImgPg+"?img="+idx+"'>";
l_innerHTML=l_innerHTML+"<img src='"+g_ThmDir+g_arySrc[idx]+"' border=0 alt=\"click for larger image\" height="+g_ThmWidth+"></a>"+l_title+"</td>";}}else{
l_innerHTML=l_innerHTML+"<td valign=top "+g_ThmEmptyClass+" ><img src=\""+g_Spacer+"\" width="+g_ThmWidth+" height="+l_spcHt+"></td>";}
if((idx%g_ThmCols)==(g_ThmCols-1))
l_innerHTML=l_innerHTML+"</tr>";}
document.getElementById(g_EID_Thms).innerHTML="<table cellspacing='"+g_ThmSpacing+"'>"+l_innerHTML+"</table>";}
function pbtsKeyEvent(f_e){
var l_action=0;
var l_idx=0;
if(typeof(f_e)=="undefined")
f_e=event;
if(typeof(f_e.which)=="number"){
l_action=f_e.which;}else if(typeof(f_e.keyCode)=="number"){
l_action=f_e.keyCode;}else if(typeof(f_e.charCode)=="number"){
l_action=f_e.charCode;}else{
l_action="";}
switch(l_action){
case 72:
case 104:
showHelp();
break;
case 83:
case 115:
if(!g_isSshow)
startSlideshow();
else
stopSlideshow();
break;
case 71:
case 103:
writeGoogle();
break;
case 80:
case 112:
gotoPrevPic();
break;
case 78:
case 110:
gotoNextPic();
break;
case 76:
case 108:
gotoLastPic();
break;
case 70:
case 102:
gotoFirstPic();
break;
case 85:
case 117:
if((g_firstImgThisPg+g_ThmsPerPg)<g_arySrc.length){
g_firstImgThisPg=g_firstImgThisPg+g_ThmsPerPg;
pbtsWriteThmGrid();}
break;
case 68:
case 100:
if(g_firstImgThisPg>=g_ThmsPerPg){
g_firstImgThisPg=g_firstImgThisPg-g_ThmsPerPg;
pbtsWriteThmGrid();}
break;
default:
if((l_action>=48)&&(l_action<=57)){
l_idx=l_action-48;
if(l_idx>0)
l_idx--;
else
l_idx=9;
if((g_firstImgThisPg+l_idx)<g_arySrc.length){
switchPic(g_firstImgThisPg+l_idx);}}}
return true;}
function pbtsWritePgNav(){
var l_innerHTML="";
var idx=1;
if(arguments.length>0)
g_EID_PgNav=arguments[0];
for(;idx<=g_lastPage;idx++){
if((g_firstImgThisPg>=((idx-1)*g_ThmsPerPg))&&(g_firstImgThisPg<=((idx*g_ThmsPerPg)-1))){
l_innerHTML=l_innerHTML+" <b>"+idx+"</b> ";}else{
l_innerHTML=l_innerHTML+" <a href='javascript:rePgIdx("+((idx-1)*g_ThmsPerPg)+");'>"+idx+"</a> ";}}
if(g_isThmAll&&(g_lastPage>1))
l_innerHTML=l_innerHTML+" <a href='javascript:showAll();'>all</a> ";
document.getElementById(g_EID_PgNav).innerHTML=l_innerHTML;}
function rePgIdx(f_imgIdx){
g_thisImg=f_imgIdx;
pbtsGetFirstIdx();
pbtsWritePgNav();
pbtsWriteThmGrid();
if(g_HTMLThmPg==g_HTMLImgPg)
switchPic(f_imgIdx);}
function switchPic(f_idx){
var l_pic=document.getElementById(g_EID_Img);
if(f_idx<0){
if(g_isWrap)
switchPic(g_lastImg);
else
alert("this is the first picture");}else if(f_idx>g_lastImg){
if(g_isWrap)
switchPic(0);
else
alert("this is the first picture");}else{
if(!g_aryIsLoaded[f_idx]){
l_pic.src=g_loadingImg;}else{
l_pic.src=g_ImgDir+g_arySrc[f_idx];}
l_pic.width=g_aryWidth[f_idx];
l_pic.height=g_aryHeight[f_idx];
if(g_isSetDescrWidth)
document.getElementById(g_EID_Descr).innerHTML="<p style=\"width:" +g_aryWidth[f_idx]+ "px;\">"+g_aryDescr[f_idx]+"</p>";
else
document.getElementById(g_EID_Descr).innerHTML=g_aryDescr[f_idx];
if(g_EID_Info!="")document.getElementById(g_EID_Info).innerHTML="file: "+g_arySrc[f_idx]+" ("+g_aryWidth[f_idx]+"W x "+g_aryHeight[f_idx]+"H)";
if(g_EID_Title!="")document.getElementById(g_EID_Title).innerHTML=g_aryTitle[f_idx];
if(g_EID_Extra1!="")document.getElementById(g_EID_Extra1).innerHTML=g_aryExtra1[f_idx];
if(g_EID_Extra2!="")document.getElementById(g_EID_Extra2).innerHTML=g_aryExtra2[f_idx];
if(g_EID_Extra3!="")document.getElementById(g_EID_Extra3).innerHTML=g_aryExtra3[f_idx];
if(g_EID_Extra4!="")document.getElementById(g_EID_Extra4).innerHTML=g_aryExtra4[f_idx];
if(g_EID_Date!=""){
if(g_aryDate[f_idx]!="")
document.getElementById(g_EID_Date).innerHTML="taken :"+g_aryDate[f_idx];
else
document.getElementById(g_EID_Date).innerHTML="";}
g_thisImg=f_idx;
g_nextImg=f_idx+1;
g_prevImg=f_idx-1;
if(!g_aryIsLoaded[f_idx]){
g_aryImg[f_idx]=new Image();
g_aryImg[f_idx].src=g_ImgDir+g_arySrc[f_idx];
g_TimerId=setInterval("pbtsTimeLoadImg()",250);}else{
g_callbackFn(f_idx);}}}
function writeMaxWidthShim(f_id){
var idx=1;
var l_maxWidth=0;
for(idx=g_firstImgThisPg;idx<(g_firstImgThisPg+g_ThmsPerPg);idx++){
if(idx<g_arySrc.length){
if(g_aryWidth[idx]>l_maxWidth)
l_maxWidth=g_aryWidth[idx];}}
document.getElementById(f_id).innerHTML="<img src=\""+g_Spacer+"\" width="+l_maxWidth+" height=\"1\">";}
function writeGoogle(){
var i=0;
var l_outStr="";
for(;i<g_arySrc.length;i++){
l_outStr=l_outStr+"<p>"+
"<a href=\""+ location.pathname +"?file="+g_arySrc[i]+"\">"+
"<img src=\""+ g_ImgDir+ g_arySrc[i]+"\" alt=\"["+i+"]"+g_aryDescr[i]+"("+document.title+")\">"+
"</a>"+
"</p>\n\n";}
document.getElementById(g_EID_Thms).innerHTML="<textarea align=\"left\" rows=10 cols=50>\n"+
"<title>"+document.title+"</title>\n\n"+
"<meta http-equiv=\"refresh\" content=\"10;url="+location.pathname+"\">\n\n"+
"<a href=\""+location.pathname+"\">Click Here to visit "+location.pathname+"</a>\n\n"+
l_outStr+
"</textarea>";}
function addImg(){
var i=0;
var j=g_arySrc.length;
if(arguments.length>g_aryAddArg.length){
alert("Photo Gallery function \"addImg\" received too many arguments. Call had "+arguments.length+" arguments.");
return false;}
g_arySrc[j]="";
g_aryDescr[j]=g_defDescr;
g_aryWidth[j]=g_defWidth;
g_aryHeight[j]=g_defHeight;
g_aryTitle[j]=g_defTitle;
g_aryDate[j]=g_defDate;
g_aryExtra1[j]=g_defExtra1;
g_aryExtra2[j]=g_defExtra2;
g_aryExtra3[j]=g_defExtra3;
g_aryExtra4[j]=g_defExtra4;
g_aryIsLoaded[j]=false;
for(i=0;i<arguments.length;i++){
if(arguments[i]!=null){
switch(g_aryAddArg[i]){
case "file":g_arySrc[j]=arguments[i];break;
case "description":g_aryDescr[j]=arguments[i];break;
case "width":g_aryWidth[j]=arguments[i];break;
case "height":g_aryHeight[j]=arguments[i];break;
case "title":g_aryTitle[j]=arguments[i];break;
case "date":g_aryDate[j]=arguments[i];break;
case "extra1":g_aryExtra1[j]=arguments[i];break;
case "extra2":g_aryExtra2[j]=arguments[i];break;
case "extra3":g_aryExtra2[j]=arguments[i];break;
case "extra4":g_aryExtra4[j]=arguments[i];break;}}}
if(g_isRotate90){
g_aryWidth[j]=g_defHeight;
g_aryHeight[j]=g_defWidth;}
g_isRotate90=false;
return j;}
function addImg90(){
var i=0;
var f_ary=new Array(g_aryAllowed.length);
for(i=0;i<g_aryAllowed.length;i++)f_ary[i]=null;
for(i=0;i<arguments.length;i++)f_ary[i]=arguments[i];
g_isRotate90=true;
return addImg(f_ary[0],f_ary[1],f_ary[2],f_ary[3],f_ary[4],f_ary[5],f_ary[6],f_ary[7],f_ary[8],f_ary[9]);}
function gotoPrevPic(){return switchPic(g_prevImg);}
function gotoNextPic(){return switchPic(g_nextImg);}
function gotoFirstPic(){return switchPic(0);}
function gotoLastPic(){return switchPic(g_lastImg);}
function gotoThumbs(){
window.location=g_HTMLThmPg+"?img="+g_thisImg;
return false;}
function showHelp(){
alert("Photo Gallery Help (v2.2.4)\nwww.pizzabytheslice.com\n\nF= First image\nL= Last\n\nN= Next Image\nP=Previous\n\n1-9,0 enlarge thumbnail 1-10\n\nS= Start/Stop Slideshow (delay is "+(g_SshowDelay/1000)+" seconds)\n\nU= page Up (next thumbnail page)\nD= page Down");}
function showAll(){pbtsWriteThmGrid(true);}
function startSlideshow(){
stopSlideshow();
g_SshowIntId=window.setInterval("gotoNextPic()",g_SshowDelay);
g_isSshow=true;
g_SshowLoopIdx=0;}
function stopSlideshow(){
if(g_isSshow){
g_isSshow=false;
clearInterval(g_SshowIntId);}}
function enableQuickKeys(){
document.onkeypress=pbtsKeyEvent;}
function writeGallery(){
var l_tempStr=new String(window.location.pathname).toLowerCase();
var l_thm=new String(g_HTMLThmPg).toLowerCase();
var l_img=new String(g_HTMLImgPg).toLowerCase();
if(g_arySrc.length<1){
alert("Photo Gallery function \"writeGallery\" failed because the gallery contains no images.");
return false;}
if(arguments.length>0)
g_thisImg=arguments[0];
else
g_thisImg=pbtsReadURLIdx();
if(l_thm.toString()==l_img.toString()){
pbtsInitThmbPg();
pbtsInitImgPg();}else if((l_thm.length>0)&&(l_tempStr.indexOf(l_thm.toString())>=0)){
pbtsInitThmbPg();}else if((l_img.length>0)&&(l_tempStr.indexOf(l_img.toString())>=0)){
pbtsInitImgPg();}else{
alert("Photo Gallery function \"writeGallery\" failed to recognize Thumbnail or Image page");}}
function reorderArgs(){
var i=0,
l_Str=new String,
l_Ary=new Array(0);
for(i=0;i<arguments.length;i++){
l_Str=arguments[i];
l_Ary[l_Ary.length]=l_Str.toLowerCase();
if(!pbtsArrayFind(l_Ary[i],g_aryAllowed)){
alert("Photo Gallery function \"reorderArgs\" did not recognize attribute \""+l_Ary[i]+"\"");
return false;}}
for(i=0;i<g_aryAllowed.length;i++){
if(!pbtsArrayFind(g_aryAllowed[i],l_Ary)){
l_Ary[l_Ary.length]=g_aryAllowed[i];}}
for(i=0;i<l_Ary.length;i++){
g_aryAddArg[i]=l_Ary[i];}
return true;}
function setElementId(p_attrb,p_id){
switch(new String(p_attrb).toLowerCase()){
case "image":g_EID_Img=p_id;break;
case "description":g_EID_Descr=p_id;break;
case "title":g_EID_Title=p_id;break;
case "extra1":g_EID_Extra1=p_id;break;
case "extra2":g_EID_Extra2=p_id;break;
case "extra3":g_EID_Extra3=p_id;break;
case "extra4":g_EID_Extra4=p_id;break;
case "date":g_EID_Date=p_id;break;
case "info":g_EID_Info=p_id;break;
case "pages":g_EID_PgNav=p_id;break;
case "thumbs":g_EID_Thms=p_id;break;
default:
alert("Photo Gallery function \"setElementId\" did not recognize attribute \""+p_attrb+"\"");
break;}}
function setDefault(f_attribute,f_defaultValue){
if(!pbtsArrayFind(f_attribute,g_aryAllowed)){
alert("Photo Gallery function \"setDefault\" did not recognize attribute \""+f_attribute+"\"");
return false;}
switch(f_attribute){
case "description":g_defDescr=f_defaultValue;break;
case "width":g_defWidth=f_defaultValue;break;
case "height":g_defHeight=f_defaultValue;break;
case "title":g_defTitle=f_defaultValue;break;
case "date":g_defDate=f_defaultValue;break;
case "extra1":g_defExtra1=f_defaultValue;break;
case "extra2":g_defExtra2=f_defaultValue;break;
case "extra3":g_defExtra3=f_defaultValue;break;
case "extra4":g_defExtra4=f_defaultValue;break;
default:
alert("Photo Gallery function \"setDefault\" \""+p_attribute+"\" does not accept defaults.");
break;}}
function setThumbDir(p_path){g_ThmDir=p_path;}
function setImgDir(p_path){g_ImgDir=p_path;}
function setThumbPage(p_val){g_HTMLThmPg=p_val;}
function setImgPage(p_val){g_HTMLImgPg=p_val;}
function setSpacer(p_val){g_Spacer=p_val;}
function setLoadingImg(p_Image){g_loadingImg=p_Image;}
function setRows(p_rows){g_ThmRows=p_rows;}
function setCols(p_cols){g_ThmCols=p_cols;}
function setThumbClass(p_class){g_ThmClass=" class='"+p_class+"'";}
function setThumbEmptyClass(p_class){g_ThmEmptyClass=" class='"+p_class+"'";}
function setThumbWidth(p_val){g_ThmWidth=p_val;}
function setThumbSpacing(p_val){g_ThmSpacing=p_val;}
function setThumbTitles(p_on){g_isThmTitles=p_on;}
function setThumbAll(p_on){g_isThmAll=p_on;}
function setDelay(p_miliseconds){g_SshowDelay=p_miliseconds;}
function setWrap(p_on){g_isWrap=p_on;}
function setDefDims(p_width,p_height){
if(p_width<1)p_width=1;
g_defWidth=p_width;
if(p_height<1)p_height=1;
g_defHeight=p_height;}
function setImageId(p_id){g_EID_Img=p_id;}
function setImageDescrId(p_id){g_EID_Descr=p_id;}
function setImageInfoId(p_id){g_EID_Info=p_id;}
function setImageTitleId(p_id){g_EID_Title=p_id;}
function setThumbIndexId(p_id){g_EID_PgNav=p_id;}
function setThumbGridId(p_id){g_EID_Thms=p_id;}
function setCallback(f_fn){g_callbackFn=f_fn;}
function setSetDescrWidth(p_on){g_isSetDescrWidth=p_on;}
function getCount(){return g_arySrc.length;}
function getIsSlideshow(){return g_isSshow;}
function getValue(p_attribute){
var l_idx=g_thisImg;
if(arguments.length>1)
l_idx=arguments[1];
switch(new String(p_attribute).toLowerCase()){
case "file":return g_arySrc[l_idx];
case "description":return g_aryDescr[l_idx];
case "width":return g_aryWidth[l_idx];
case "height":return g_aryHeight[l_idx];
case "title":return g_aryTitle[l_idx];
case "extra1":return g_aryExtra1[l_idx];
case "extra2":return g_aryExtra2[l_idx];
case "extra3":return g_aryExtra3[l_idx];
case "extra4":return g_aryExtra4[l_idx];
case "date":return g_aryDate[l_idx];
case "dir":return g_ImgDir;
case "thumbdir":return g_ThmDir;
case "pathname":return g_ImgDir+g_arySrc[l_idx];
case "count":return g_arySrc.length;
case "current":return g_thisImg;
case "maxwidth":
var i=0;
var l_max=-1;
for(;i<g_aryWidth.length;i++)
l_max=Math.max(l_max,g_aryWidth[i]);
return l_max;
break;
case "maxheight":
var i=0;
var l_max=-1;
for(;i<g_aryHeight.length;i++)
l_max=Math.max(l_max,g_aryHeight[i]);
return l_max;
break;
default:
alert("Photo Gallery function \"getValue\" did not recognize attribute \""+p_attribute+"\"");
break;}}

