var currGallery = -1;
var currImage = -1;
var gallery = "";
var imageRoot = "";
var imageHoverRoot = "";
var gif = ".gif";
var jpg = ".jpg";
var clicked = false;
var entered = false;
var preImages = new Array();
var preImagesCount = 0;
var prevCImage = -1;
var prev = getUrlParam("prev");
if (prev != null) {
    prm = prev.split("-");
    prevCImage = prm[0];
    prevDT = prm[1];
    if (prevCImage == null) prevCImage = -1;
    if (prevDT == null) prevDT = 0;
    newDT = new Date();
    if(newDT.getTime() - prevDT > 180000) {
       prevCImage = -1;
    }
}

function moveInImage(idx) {
    if (idx >= 0) {
        if (!clicked) {
            showDescDiv(false);
            setHoverImage(idx);
        }
    }
}

function moveOutImage(idx) {
    if (idx >= 0) {
        if (currImage < 0) {
            setNoImage();
            showDescDiv(true);
        } else {
            if (!clicked) {
                setMainImage(currImage);
            }
        }
    }
}

function moveInGallery(gId) {
    if (gId != currGallery) {
        moveIn(theGalleries[gId]);
    }
}

function moveOutGallery(gId) {
    if (gId != currGallery) {
        moveOut(theGalleries[gId]);
    }
}

function moveIn(pixId) {
    if (document.images) {
        document[pixId].src = "images/hover/"+pixId+".gif";
    }
}

function moveOut(pixId) {
    if (document.images) {
        document[pixId].src = "images/"+pixId+".gif";
    }
}

function fadeIn(objId, opacity) {
    if (document.getElementById) {
        obj = document.getElementById(objId);
        if (opacity <= 100) {
            setOpacity(obj, opacity);
            opacity += 2;
            window.setTimeout("fadeIn('"+objId+"',"+opacity+")", 5);
        } else {
            clicked = false;
            setNoBGImage();
        }
    }
}

function fadeColor(i) {
    if (document.getElementById) {
        j=15-i;
        x = "0123456789ABCDEF".substr(j,1);
        if (j>3) {
            document.body.style.backgroundColor = "#"+x+x+x;
            i++;
            window.setTimeout("fadeColor("+i+")", 15);
        } else {
            setBackground();
        }
    }
}

function changeImage(idx) {
    if (currImage >= 0)
        setPickImage(currImage, 0);
    currImage = idx;
    clicked = true;
    setLoadingImage(idx);
    setLoadingBGImage(idx)
    setPickImage(currImage,1);
    checkLoadedImage();
}

function setOpacity(obj, opacity) {
    opacty = (opacity == 100)?99.999:opacity;
    // IE/Win
    obj.style.filter = "alpha(opacity:"+opacity+")";
    // Safari<1.2, Konqueror
    obj.style.KHTMLOpacity = opacity/100;
    // Older Mozilla and Firefox
    obj.style.MozOpacity = opacity/100;
    // Safari 1.2, newer Firefox and Mozilla, CSS3
    obj.style.opacity = opacity/100;
}

function preloadBGImages() {
    if (document.images) {
        preImages = new Array();
        preImagesCount = 0;
        if (theImages[currGallery].length == 0) {
            showDesc("[ Under Construction ]");
            return;
        }
        document.getElementById("theImage").src = "images/loading.gif";
        showDescDiv(false);
        for (i in theImages[currGallery]) {
            preImages[i] = new Image();
            preImages[i].src = getHoverImage(i);
            checkPreloadImages(i);
        }
    }
}

function checkPreloadImages(idx) {
    if (preImages[idx].complete) {
        preImagesCount++;
        document.getElementById("apix"+idx).className = "aPick";
        if (preImagesCount == theImages[currGallery].length) {
            document.getElementById("theImage").src = "images/noimage.gif";
            showDesc(theGalleryDescs[currGallery]);
        }
    } else {
        window.setTimeout("checkPreloadImages("+idx+")",10);
    }
}

function checkLoadedImage() {
    divImg = document.getElementById("theLoadingImage");
    if (divImg.complete) {
        setBGImage(currImage);
        setMainImage(currImage);
        fadeIn("theImage",0);
        window.setTimeout("setPickImage("+currImage+",2)",250);
    } else {
        window.setTimeout("checkLoadedImage()",10);
    }
}



function fadeInImage() {
    setBGImage(currImage);
    setMainImage(currImage);
    fadeIn("theImage",0);
}

function initGallery(idx) {
    // current gallery
    if (idx == currGallery) { return; }
    setCurrGallery(idx);
    currImage = -1;
    gallery = theGalleries[currGallery];
    imageRoot = "images/"+gallery;
    imageHoverRoot = "images/"+gallery+"/hover";
    if (document.getElementById) {
        // show main
        showDiv("main");
        // no image
        setNoImage();
        // picks
        imgPicks = document.getElementById("picks");
        innerHTMLTxt  = "<table cellspacing='0' cellpadding='0' height='100%'>";
        innerHTMLTxt += "<tr align='bottom'>";
        for (i in theImages[currGallery]) {
            innerHTMLTxt += "<td align='center'>";
            innerHTMLTxt += "<a id='apix"+i+"' class='aPickLoading' onmouseover='moveInImage("+i+")' onmouseout='moveOutImage("+i+")' href='javascript:changeImage("+i+")'>";
            innerHTMLTxt += "<img id='pix"+i+"' src='images/noimage.gif' border='0' width='16' height='16'/>";
            innerHTMLTxt += "</a>";
            innerHTMLTxt += "</td>";
        }
        innerHTMLTxt += "</tr>";
        innerHTMLTxt += "</table>";
        imgPicks.innerHTML = innerHTMLTxt;
        // preload
        preloadBGImages();
    }
}

function showDiv(divId) {
    if (document.getElementById) {
        divObj = document.getElementById(divId);
        document.getElementById("info").style.display = "none";
        document.getElementById("contact").style.display = "none";
        document.getElementById("email").style.display = "none";
        document.getElementById("emailReturn").style.display = "none";
        document.getElementById("main").style.display = "none";
        divObj.style.display = "block";
        if (divId != "main") {
            currImage = -1;
            fadeIn(divId, 0);
            setCurrGallery(-1);
        }
    }
}

function showDescDiv(vis) {
    if (document.getElementById) {
        visi = "none"; if (vis) {visi = "block";}
        document.getElementById("theGalleryDescription").style.display = visi;
    }
}

function showDesc(txt) {
    if (document.getElementById) {
        showDescDiv(true);
        document.getElementById("theGalleryDescription").innerHTML = "<img src='images/divider.gif'/><p>"+txt+"</p><img src='images/divider.gif'/>";
        fadeIn("theGalleryDescription",0);
    }
}

function showGalleries(divId) {
    if (!entered && document.getElementById) {
        headDiv = document.getElementById("header");
        gallDiv = document.getElementById("galleries");
        copyDiv = document.getElementById("copyright");
        document.getElementById("filler").style.display  = "none";
        document.getElementById("contactInfo").className = "splashNot";
        headDiv.style.display = "block";
        gallDiv.style.display = "block";
        copyDiv.style.display = "block";
        showDiv(divId);
        if (divId == "contact") {
            document.getElementById("smallImageBox").style.cursor = "default";
            hideEnter();
            fadeIn("header",-10);
            fadeIn("galleries",-10);
            fadeIn("copyright",-10);
            fadeColor(0);
        } else {
            setBackground();
        }
        entered = true;
    }
}

function setBackground() {
    document.body.style.backgroundColor = "#333";
    document.body.style.backgroundImage = "url('images/bgArea.gif')";
    document.body.style.backgroundRepeat = "repeat";
    document.body.style.backgroundPosition = "center center";
    document.getElementById("bg").style.backgroundImage = "url('images/bgborder.gif')";
    document.getElementById("bg").style.backgroundRepeat = "repeat-y";
    document.getElementById("bg").style.backgroundPosition = "center center";
}

function setSmallImage() {
    if (prevCImage < 0) { prevCImage = Math.floor(Math.random()*theSmalls.length); }
    if (document.getElementById) {
        document.getElementById("smallImage").src = "images/smalls/"+theSmalls[prevCImage]+jpg;
    }

}

function revealEnter() {
    if (document.getElementById && !entered) {
        setOpacity(document.getElementById("smallImage"),30);
    }
}

function hideEnter() {
    if (document.getElementById && !entered) {
        setOpacity(document.getElementById("smallImage"),100);
    }
}

function setCurrGallery(idx) {
    if (document.getElementById) {
        if (currGallery >= 0) {
            document.getElementById(theGalleries[currGallery]).src = "images/"+theGalleries[currGallery]+".gif";
        }
        if (idx >= 0) {
            document.getElementById(theGalleries[idx]).src = "images/hover/"+theGalleries[idx]+".gif";
        }
        currGallery = idx;
    }
}

function setMainImage(idx) {
    if (document.images) {
        document.getElementById("theImage").src = getMainImage(idx);;
    }
}

function setHoverImage(idx) {
    if (document.images) {
        document.getElementById("theImage").src = getHoverImage(idx);
    }
}

function setHover50Image(idx) {
    if (document.images) {
        document.getElementById("theImage").src = getHoverImage(idx);
    }
}

function setLoadingImage(idx) {
    if (document.images) {
        document.getElementById("theLoadingImage").src = getMainImage(idx);;
    }
}

function setNoImage() {
    if (document.images) {
        document.getElementById("theImage").src = "images/noimage.gif";
    }
}

function setNoBGImage() {
    if (document.images) {
        document.getElementById("theImageBox").style.backgroundImage = "url('images/noimage.gif')";
    }
}

function setLoadingBGImage(idx) {
    if (document.images) {
        document.getElementById("theImageBox").style.backgroundImage = "url('images/loading.gif')";
    }
}

function setBGImage(idx) {
    if (document.images) {
        document.getElementById("theImageBox").style.backgroundImage = "url('"+getHoverImage(idx)+"')";
    }
}

function setPickImage(idx, iid) {
    if (document.images) {
        if (iid == 0) {
            document.getElementById("apix"+idx).className = "aPick";
        } else if (iid == 1) {
            document.getElementById("apix"+idx).className = "aPickLoadingCircle";
            setOpacity(document.getElementById("theImage"),50);
            setHoverImage(idx);
            setLoadingBGImage(idx);
        } else {
            document.getElementById("apix"+idx).className = "aPickLoading";
        }
    }
}

function getMainImage(idx) {
    return imageRoot + "/" + theImages[currGallery][idx] + jpg;
}

function getHoverImage(idx) {
    return imageHoverRoot + "/" + theImages[currGallery][idx] + gif;
}

function submitEmail() {
    isInvalid = false;
    cErr = "1px dotted #b22222";
    cVal = "1px solid #888";
    if (emailForm.realname.value == "") {
        emailForm.realname.style.border = cErr;
        isInvalid = true;
    } else {
        emailForm.realname.style.border = cVal;
    }

    if (emailForm.emailaddr.value == "") {
        emailForm.emailaddr.style.border = cErr;
        isInvalid = true;
    } else {
        emailForm.emailaddr.style.border = cVal;
    }
    if (emailForm.message.value == "") {
        emailForm.message.style.border = cErr;
        isInvalid = true;
    } else {
        emailForm.message.style.border = cVal;
    }
    if (isInvalid) {
        document.getElementById("emailError").style.display = "block";
        return;
    }
    dt = new Date();
    emailForm.redirect.value += "?prev="+prevCImage+"-"+dt.getTime();
    emailForm.submit();
}

function getUrlParam(name) {
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var tmpURL = window.location.href;
    var results = regex.exec( tmpURL );
    if (results == null)
        return null;
    else
        return results[1];
}

window.onload = function() {
    if (prevCImage >= 0) {
        showGalleries("emailReturn");
    }
    setSmallImage();
}
