////////////////////////////////////////////////////////////////////////////////////
// ALL CODE, PHOTOS, AND CONTENTS COPYRIGHT (C) 2004-2007 NANCY HELLSTEN PHOTOGRAPHY
// All rights reserved. Using materials on this site without prior written 
// permission is expressly forbidden.
////////////////////////////////////////////////////////////////////////////////////

  	var npics;
    var currentSet;
    var current = 1;
    var currentPage = 1;
    var pics;
    var loaded = 0;
    var interval;
    var picReady = false;
    var gaCurrent;
    var gridX = 3;
    var gridY = 7;
    var t_gridX = 2;
    var t_gridY = 7;
    var paused = false;
    var gridSize;
    
    function clearGalleryThumbs() {
    	loadGalleryThumbs(new Array());	
    }
    
    function loadGalleryThumbs(ga) {
    	var img;
    	var thumbTable = document.getElementById('thumbTable');
    	gaCurrent = ga;
    	
    	thumbTable.style.visibility = 'hidden';
    	document.galleryslide.style.visibility = 'hidden';    	
    	for (var i = 1; i <= gridY; i++) {
    		img = document.getElementById("galleryThumb" + i);
    		if (i <= ga.length) {
    			img.src = 'galleries/' + ga[i-1][1] + '/thumbs/' + ga[i-1][0][0] + 't.jpg';
    			img.style.visibility = 'inherit';
    		} else {
    			img.src = "";
    			img.style.visibility = 'hidden';
    		}
    	}
    }
    
    function loadThumbsCurrent(n) {
    	loadThumbs(gaCurrent[n-1], 1, document.galleryslide);
    }

    function loadThumbs(gallery, page, targetPic, width, height, testimonial) {
        var img;
        var file;
        var count = gallery[0].length;
        gridSize = width * height;
        var n = gridSize;
        var thumbTable = document.getElementById('thumbTable');
        var nPages = Math.ceil(count / gridSize);

        if (page > Math.ceil(count / gridSize) || page < 1)
        	return;

       	currentSet = gallery;
        currentPage = page;
		targetImg = targetPic;
		showPic(1);
		
       	if (nPages > page)
       		document.nextImg.style.visibility = 'inherit';
       	else
       		document.nextImg.style.visibility = 'hidden';
       		
       	if (page > 1)
       		document.backImg.style.visibility = 'inherit';
       	else
       		document.backImg.style.visibility = 'hidden';

        if (n > count)
        	n = count;
        for (var i = 1; i <= gridSize; i++) {
            img = document.getElementById((testimonial ? "t_" : "g_") + "thumb" + i);
        	if (((page - 1) * gridSize + i) <= count) {
	            img.src = 'galleries/' + currentSet[1] + '/thumbs/t_' + currentSet[2] + currentSet[0][(page - 1) * gridSize + i - 1] + '.jpg';
	            img.style.visibility = 'inherit';
            } else {
            	img.src = '';
            	img.style.visibility = 'hidden';
            }
        }
    }

    function showPic(n) {
    	stopSlideShow(false);
		targetImg.src = 'galleries/' + currentSet[1] + '/' +  currentSet[2] + currentSet[0][(currentPage - 1) * gridSize + n - 1] + '.jpg';
        targetImg.style.visibility = 'inherit';
    }
    
    function switchPic(targetImg, pic) {
    	if (is_ie5_5up) {
    	    try {
	            targetImg.style.filter = "progid:DXImageTransform.Microsoft.Fade(duration=1)";
	            targetImg.filters[0].Apply();
	        } catch (e) {}
        }
        targetImg.src = pics[current - 1].src;
        targetImg.style.visibility = 'inherit';
        if (is_ie5_5up) {
            try { targetImg.filters[0].Play(); } catch (e) {}
        }

        if (targetImg == document.galleryslide) {
            var currentThumb = current % gridSize;
            if (currentThumb == 0)
                currentThumb = gridSize;
            var previousThumb = currentThumb - 1;
            if (previousThumb < 1)
                previousThumb = gridSize;
            document.getElementById('g_thumb' + previousThumb).style.borderColor = 'white';	
            document.getElementById('g_thumb' + (currentThumb)).style.borderColor = '#3a585f';
            if (currentPage != Math.ceil(current / gridSize)) {
                loadThumbs(currentSet, Math.ceil(current / gridSize), targetImg, gridX, gridY, false);
            }
        }
        
        if (++current > npics)
        	current = 1      
        
        loadPic(current);
        picReady = false;
        timer = setTimeout('nextPic()', interval);
    }

    function nextPic() {
        if (picReady) {
        	switchPic(targetImg, pics[current - 1]);
        } else {
			pics[current - 1].onLoad = switchPic(targetImg, pics[current - 1]);
        }
    }

    function picLoaded() {
    	picReady = true;
    }

    function loadPic(n) {
    	if (loaded < n) {
	        var img = new Image;
	        img.src = 'galleries/' + currentSet[1] + '/' + currentSet[2] + currentSet[0][n - 1] + '.jpg';
            img.onLoad = picLoaded();
	        pics[n - 1] = img;
            if (n > loaded)
            	loaded = n;
        }
    }

    function startSlideShow(set, targetid, delay, resume) {
        if (!resume) {
    	    stopSlideShow(false);
    	    npics = set[0].length;
    	    pics = new Array(npics);
            loaded = 0;
            current = 1;
            targetImg = targetid;
            currentSet = set;
            interval = delay;
    	    loadPic(current, currentSet);
    	}
        document.getElementById('playImg').style.visibility = 'hidden';
        document.getElementById('pauseImg').style.visibility = 'inherit';
    	nextPic(currentSet);
    }
       
    function stopSlideShow(pause) {
        paused = pause;
        document.getElementById('playImg').style.visibility = 'inherit';
        document.getElementById('pauseImg').style.visibility = 'hidden';
        if (gridSize)
            for (var i = 1; i <= gridSize; i++)
                document.getElementById('g_thumb' + i).style.borderColor = 'white';
	    if (timer)
   		    clearTimeout(timer);
	    if (!pause && targetImg)
		    targetImg.style.visibility = 'hidden';
    }

	function galleryThumbTable() {
		document.write('<div style="position: absolute; left: 10px; top: 27px; font-size: 9px; color:#555555">galleries</div>');
	    for (var i = 1; i <= 6; i++) {
		   	document.write('<img src="images/white1x1.png" style="position: absolute; left: 10px; top: ' + (40 + (i - 1) * 45) + 'px; visibility: hidden;" id="galleryThumb' + i + '" onclick="loadThumbsCurrent(' + i + ');" border="1" class="thumb" onmouseover="this.style.borderColor = \'black\';" onmouseout="this.style.borderColor = \'white\';">');
		}
	}

	function thumbTable(xPos, yPos, width, height, testimonial) {
		document.write('<div id="' + (testimonial ? 't_' : '') + 'thumbTable" style="position: absolute; left: ' + xPos + 'px; top: ' + yPos + 'px; visibility: inherit;">');
		for (var i = 0; i < height; i++) {
		    for (var j = 1; j < (width + 1); j++) {
		    	var n = i * width + j;
		        document.write('<img src="images/white1x1.png" style="position: absolute; left: ' + ((j-1) * 45)+ 'px; top: ' + (i * 45) + 'px; visibility: inherit;" id="' + (testimonial ? 't_' : 'g_') + 'thumb' + n + '" onclick="' + (testimonial ? 'loadTestimonial' : 'showPic') + '(' + n + ');" border="1" class="thumb" onmouseover="this.style.borderColor = \'black\';" onmouseout="this.style.borderColor = \'white\';"/>');
		    }
	    }
	    document.write('</div>');
	}
