//enable passthrough of errors from YUI Event:
if ((typeof YAHOO !== "undefined") && (YAHOO.util) && (YAHOO.util.Event)) {
    YAHOO.util.Event.throwErrors = true;
}

var magnify;

function magnifyPhoto(path) {
    if (!magnify) {
        magnify =
                new YAHOO.widget.Panel("magnify",
                          { width: "700px",
                            height: "560px",
                            fixedcenter: true,
                            close: true,
                            draggable: true,
                            zindex:4,
                            modal: true,
                            visible: false
                          }
                      );
    }

    // modify body
    magnify.setBody("<a href=\"#\" onClick=\"magnify.hide(); return false;\"><img src=\"" + path + "\" border=\"0\"/></a>");
    magnify.render(document.body);

    // Show the Panel
    magnify.show();
}

function getFilename(path) {
    return "photos/" + path.substring(path.lastIndexOf("/") + 1);
}

function onImageClick(num) {
    var src = document.getElementById("blendimage" + num).src;
    var name = getFilename(src);
    var imagename = imgName(name.substring(0, name.lastIndexOf(thumbSuffix())));
    magnifyPhoto(imagename);
}

function changeOpacity(id, i) {
    if (i > 100) {
        timeNextImageBlend(id.substring("blendimage".length));
    } else {
        setOpacity(id, i);
        setTimeout("changeOpacity('" + id + "'," + (i+5) + ")", 30);
    }
}

function setOpacity(id, opacity) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
    //window.status = id + ": " + getFilename(document.getElementById(id).src) + " @ " + opacity + "%";
}

var g_img_arr = new Array();

function getNextImageName() {
    if (g_img_arr.length == 0) {
        g_img_arr = g_img_arr.concat(IMGARR_PROT);
        for(var j, x, i = g_img_arr.length; i;
            j = parseInt(Math.random() * i), x = g_img_arr[--i], g_img_arr[i] = g_img_arr[j], g_img_arr[j] = x);
    }
    return g_img_arr.shift();
}

function getImageSrc(id) {
    var src = document.getElementById(id).src;
    var idx = src.lastIndexOf("photos");
    if (idx < 0) return src;
    return src.substring(idx);
}

function getDivBg(id) {
    var divbg = document.getElementById(id).style.backgroundImage;
    var idx = divbg.indexOf("url(");
    if (idx >= 0) {
        divbg = divbg.substring(idx+4, divbg.length-idx-1);
    }
    idx = divbg.lastIndexOf("photos");
    if (idx < 0) return divbg;
    return divbg.substring(idx);
}

function getNextThumbname() {
    var img1src = getImageSrc("blendimage1");
    var img2src = getImageSrc("blendimage2");
    var img3src = getImageSrc("blendimage3");

    var div1bg = getDivBg("blenddiv1");
    var div2bg = getDivBg("blenddiv2");
    var div3bg = getDivBg("blenddiv3");

    for (var i = 0; i < 10; i++) {
        var thumbname = thumbName(getNextImageName());
        if ((img1src != thumbname) &&
            (img2src != thumbname) &&
            (img3src != thumbname) &&
            (div1bg != thumbname) &&
            (div2bg != thumbname) &&
            (div3bg != thumbname)) {
            return thumbname;
        }
    }

    return thumbName(getNextImageName());
}

function blendImage(num, opacity) {
    var divid = "blenddiv" + num;
    var imageid = "blendimage" + num;

    var div = document.getElementById(divid);
    var img = document.getElementById(imageid);

    var thumbname = getNextThumbname();

    div.style.backgroundImage = "url(" + img.src + ")";
    setOpacity(imageid, 0);
    img.src = thumbname;

    g_image_id = imageid;

    // preload
    var preloadImg = new Image(240,180);
    preloadImg.onload = imageLoaded;
    preloadImg.src = thumbname;
}

function timeNextImageBlend(num) {
    var i;
    do {
        i = parseInt(Math.random() * 3) + 1;
    } while(i == num);
    setTimeout("blendImage(" + i + ", 0)", 3000);
}

var g_image_id;

function imageLoaded() {
    changeOpacity(g_image_id, 0);
}

function setThumbs(num) {
    var divid = "blenddiv" + num;
    var imageid = "blendimage" + num;

    var div = document.getElementById(divid);
    var img = document.getElementById(imageid);

    var thumbname = getNextThumbname();

    div.style.backgroundImage = "url(" + thumbname + ")";
    setOpacity(imageid, 0);
    img.src = thumbname;
}

function onLoad() {    
    setThumbs(1);
    setThumbs(2);
    setThumbs(3);

    if (IMGARR_PROT.length > 6) {
        timeNextImageBlend(3);
    }
}

function thumbName(name) {
    return name + thumbSuffix();
}

function imgName(name) {
    return name + imageSuffix();
}