var imgdivwidth=0;
var imgdivheight=0;
var mainimagerule;
var images;
var imagedata;
var picidx=-1;
var picdelay=5000;
var firstdelay=500;
var slowdelay=1000;
var fadedelay=10;
var imgtimerid;
var fadetimerid;
var details=0;
var winw;
var winh;
var auto=1;
var imgidx=0;
var fader=0;
var ready=1;

function getwindowsize() {
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    winw = window.innerWidth;
    winh = window.innerHeight;
    fader=0;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    winw = document.documentElement.clientWidth;
    winh = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    winw = document.body.clientWidth;
    winh = document.body.clientHeight;
  }
}
function setsize() {
    getwindowsize();
    if (!mainimagerule) {
	if (document.styleSheets[0].cssRules) {
	    var rules=document.styleSheets[0].cssRules;
	}
	else {
	    var rules=document.styleSheets[0].rules
	}
	for (var i=0;i<rules.length;i++) {
//	    alert(rules[i].selectorText);
// 	    console.log("rule",i, rules[i].cssText);
	    if (rules[i].selectorText.match("mainImage")) {
// 		console.log("css",rules[i].style.width);
		mainimagerule=rules[i];
		break;
	    }
	}
    }
//     alert("rulesdone");
    imgdivwidth=winw-20;
    imgdivheight=winh -120;
//     console.log("ih",imgdivheight);
//     alert(imgdivheight);
    mainimagerule.style.width=imgdivwidth  + "px";
    mainimagerule.style.height=imgdivheight  + "px";
//     console.log("css2",mainimagerule.style.height);
}
function slowload() {
//     console.log("slowload",imgidx,imagedata.length);
    if (imgidx < imagedata.length) {
        imgurl=imagedata[imgidx][2];
	images[imgidx] = new Image;
        images[imgidx].src=imgurl;
        imgidx+=1;
        slowid=setTimeout('slowload()',slowdelay);
    }
}
function cleanPage() {
    var imgdiv=document.getElementById("mainImage");
    var imghtml="<p>Loading...</p>"
    imgdiv.innerHTML=imghtml;
}
function startup() {
    cleanPage();
    preload();
    slowload();
    var delaydiv=document.getElementById("delay");
    delaysecs=picdelay/1000;
    delayhtml=delaysecs + " Seconds";
    delaydiv.innerHTML=delayhtml;
    imgtimerid=setTimeout('NextPic()',firstdelay);
}
function NextPic() {
//     console.log("NextPic start",picidx);
//     console.log("next",ready);
    if (!ready) {
// 	console.log("next: do nothing");
        imgtimerid=setTimeout('FadeOut()',picdelay);
	return;
    }
//     console.log("next: go");

    if (picidx+1 >= images.length) {
	clearTimeout(imgtimerid);
//     console.log("next: pause ",picidx,",",images.length);
	Pause();
    }
    else {
//         console.log("next: nopause ",picidx);
        picidx+=1;
        setpic()
	if (auto) {
	    FadeIn();
	    ready=0;
	}
	else {
	    var imgdiv=document.getElementById("mainImage");
	    imgdiv.style.opacity=1;
	}

    }
//     console.log("NextPic end",picidx);

}
function PreviousPic() {
//     console.log("PreviousPic",picidx);
    if (picidx > 0) {
        picidx-=1;
        setpic()
    }

}
function FirstPic() {
    picidx=0;
    setpic();
}
function Details() {
    var det=document.getElementById('imageDetails');
    if (details == 0) {
	details=1;
        det.style.visibility="visible";
    }
    else {
	details=0;
        det.style.visibility="hidden";
    }
}
function FadeOut() {
    if (picidx+1 >= images.length) {
	//don't fade last image
	Pause();
//	picidx=-1;
	return;
    }
    if (fader == 0) {
	// no fader
	NextPic();
	return;
    }
    var imgdiv=document.getElementById("mainImage");
    opacity=parseFloat(imgdiv.style.opacity);
    if (!opacity) {
	opacity=1;
    }
    if (opacity > 0) {
        opacity-=0.2;
    }
    imgdiv.style.opacity=opacity;
//     console.log("set op out ",imgdiv.style.opacity);
    if (opacity <= 0) {
	opacity=0;
	NextPic();
    }
    else {
        fadetimerid=setTimeout('FadeOut()',fadedelay);
    }
	
}
function FadeIn() {
//     console.log("fade in");
    if (fader == 0) {
	// no fader, setup next pic
//         console.log("nofader");
        imgtimerid=setTimeout('FadeOut()',picdelay);
	return;
    }
    var imgdiv=document.getElementById("mainImage");
    opacity=parseFloat(imgdiv.style.opacity); 
    if (!opacity) {
	opacity=0;
    }
//     console.log("in",imgdiv.style.opacity);
    if (opacity < 1) {
        opacity+=0.2;
    }
    else {
	opacity=1;
    }
    imgdiv.style.opacity=opacity;
//     console.log("set op in ",imgdiv.style.opacity);
    if (opacity >= 1) {
        imgtimerid=setTimeout('FadeOut()',picdelay);
    }
    else {
        fadetimerid=setTimeout('FadeIn()',fadedelay);
    }
	
}
function Pause() {
    clearTimeout(imgtimerid);
    clearTimeout(fadetimerid);
    var imgdiv=document.getElementById("mainImage");
    imgdiv.style.opacity=1;
    auto=0;
    var playdiv=document.getElementById("playpause");
    playhtml="<a href=\"javascript:Play()\"><img class=\"panel\" height='20' src='/furniture/play.png' alt='Play slideshow' title='Play slideshow' /></a>";
    playdiv.innerHTML=playhtml
}
function Play() {
    auto=1;
    var playdiv=document.getElementById("playpause");
    var delaydiv=document.getElementById("delay");
    playhtml="<a href=\"javascript:Pause()\"><img class=\"panel\" height='20' src='/furniture/pause.png' alt='Pause slideshow' title='Pause slideshow' /></a>";
    delaysecs=picdelay/1000;
    delayhtml=delaysecs + " Seconds";
    playdiv.innerHTML=playhtml
    delaydiv.innerHTML=delayhtml;
    imgtimerid=setTimeout('NextPic()',firstdelay);
    
}
function Minus () {
    if (picdelay > 1000) {
	picdelay -= 1000;
    }
    var delaydiv=document.getElementById("delay");
    delaysecs=picdelay/1000;
    delayhtml=delaysecs + " Seconds";
    delaydiv.innerHTML=delayhtml;
}

function Plus () {
    picdelay += 1000;
    var delaydiv=document.getElementById("delay");
    delaysecs=picdelay/1000;
    delayhtml=delaysecs + " Seconds";
    delaydiv.innerHTML=delayhtml;
}

function setready() {
 //   console.log("setready",ready);
    ready=1;
}
function setpic() {
//     console.log("setpic",picidx);
    if (!picidx) picidx=0;
    if (picidx >= images.length) {
// 	console.log("oob");
	return;
    }
//     alert("size");
    setsize();
//    console.log("sp1",title);
    var imgdiv=document.getElementById("mainImage");
//     console.log("sp2",imgdivwidth,imgdivheight);
    var src=images[picidx].src;
    var w=images[picidx].width;
    var h=images[picidx].height;

    maxw=imgdivwidth - 20;
    maxh=imgdivheight-10;

    if (w < maxw) {
        dw=w;
        dh=h;
    }
    else {
        dh=(h/w)*maxw
        dw=maxw;
    }
    if (dh> maxh) {
	dw=(dw/dh)*maxh;
        dh=maxh;
    }
    var margin=(imgdivheight -dh)/2;
//     console.log("paddingtop",margin,imgdivheight,dh);
//     mainimagerule.style.paddingTop=margin +"px";
    

//     console.log("pt",h,imgdivheight,mainimagerule.style.paddingTop);
    var imghtml= "<a href='"+src+"' target='_blank'><img src='" + src + "'";
    imghtml += " alt='Click here for larger picture'";
    imghtml += " class='bigImage'";
    imghtml += " title='Click here for larger picture'";
    imghtml += " width='" + dw + "'";    
    imghtml += " height='" + dh + "'";    
    imghtml += " onload='setready()'";
    imghtml += " /></a>";

    var descdiv=document.getElementById("imageDescription");
    var detdiv=document.getElementById("imageDetails");
    if (imagedata[picidx]) {
	if ((havesubtitle == 0) && (imagedata[picidx][3] != "")) {
	    subtitle=imagedata[picidx][3] + ", ";
	}
	else {
	    subtitle="";
	}
	if ((havepage == 0) && (imagedata[picidx][4] != "")) {
	    page=imagedata[picidx][4] + ", ";
	}
	else {
	    page="";
	}
// 	console.log("imda",imagedata[picidx]);
	deschtml="<div class=\"caption\">"+subtitle + page + imagedata[picidx][0] + "</div>";
    }
    else {
	deschtml="";
    }

    if (imagedata[picidx]) {
// 	console.log("imda",imagedata[picidx]);
	dethtml="<p>"+imagedata[picidx][1]+"</p>";
    }
    else {
	dethtml="";
    }
//     console.log("img",imghtml);
    imgdiv.innerHTML=imghtml+"<br>"+deschtml;
    detdiv.innerHTML=dethtml;


//     console.log("result",imghtml);
//     console.log("loaded",images);
}

function ShowPic(pic,w,h) {
//     console.log("pic",pic,w,h);
    setsize();
    var imgdiv=document.getElementById("mainImage");
//     console.log("id",imgdiv);

    if (!imgdiv) {
	return;
    }
//     console.log("ready");

    maxw=imgdivwidth - 20;
    maxh=imgdivheight-10;

    if (w < maxw) {
        dw=w;
        dh=h;
    }
    else {
        dh=(h/w)*maxw
        dw=maxw;
    }
    if (dh> maxh) {
        dw=(dw/dh)*maxh;
        dh=maxh;
    }
    var margin=(imgdivheight -dh)/2;

   var imghtml= "<a href='"+pic+"' target='_blank'><img src='" + pic + "'";
    imghtml += " alt='Click here for larger picture'";
    imghtml += " class='bigImage'";
    imghtml += " title='Click here for larger picture'";
    imghtml += " width='" + dw + "'";
    imghtml += " height='" + dh + "'";
    imghtml += " /></a>";

    imgdiv.innerHTML=imghtml;
    
}

