
function FakeTarget(id) {
    this.id = id;
}

function FakeEvent(target) {
    this.target = target;
}

function createFakeEvent(mId) {
    return new FakeEvent(new FakeTarget(mId));
}

function imgUrlFor(mId) {
    return "works08/full/" + mId + ".jpg";
}

function iconImgUrlFor(mId) {
    return "works08/icon/" + mId + ".jpg";
}


function makeColumnPicMenu(divId, picId, mIdArray, width, height, descHash, descDiv) {
    var picHeight = height / mIdArray.length;
    var html = "";
    var i;
    html += "<table border='0' cellpadding='0' cellspacing='0'>";
    for (i = 0; i < mIdArray.length; i++) {
        html += "<tr><td><img id='"+mIdArray[i]+"' src='"+iconImgUrlFor(mIdArray[i])+"'/></td></tr>";
    }
    html += "</table>";
    $("#" + divId).html(html);
    for (i = 0; i < mIdArray.length; i++) {
        $("#" + mIdArray[i]).css("height",picHeight+"px").css('cursor','hand');
        if (width != null) {
            $("#" + mIdArray[i]).css("width",width+"px");
        }
    }
    for (i = 0; i < mIdArray.length; i++) {
        $("#" + mIdArray[i]).click(function(event) {
            $("#" + picId).attr('src',
                imgUrlFor(event.target.id));
            if (descHash != null) {
                $("#" + descDiv).html(descHash[event.target.id]);
            }
        })
    }
    // Load first pic:
    $("#" + picId).attr('src',imgUrlFor(mIdArray[0]));
    if (descHash != null) {
        $("#" + descDiv).html(descHash[mIdArray[0]]);
    }
}

function makeRowCallbackMenu(divId, mIdArray, mDescArray, eventCallbackOrHash, width, rows, customLinkHash) {
    if (typeof(rows) == 'undefined') {
        rows = 1;
    }
    var perRow = mIdArray.length / rows;
    var i = 0;
    var html = "";
    var tableId = divId+"_table";
    html += "<table id='"+tableId+"' border='0' cellpadding='0' cellspacing='0'><tr>";
    var count = 0;
    var isLink = false;
    var linkUrl = "";
    for (i = 0; i < mIdArray.length; i++) {
        count += 1;
        if (count > perRow) {
            html += "</tr><tr>";
            count = 1;
        }
        var tdId = mIdArray[i] + '_td';
        html += "<td id = '"+tdId+"'>";
        
        isLink = ((customLinkHash != null) &&
            (customLinkHash[mIdArray[i]] != null));
        if (isLink) {
            html += "<a href='"+customLinkHash[mIdArray[i]]+"'>";
        }
        html += "<img border='0' class='menuRowImg' id='"+mIdArray[i]+"' src='"+iconImgUrlFor(mIdArray[i])+"'/>";
        if (isLink) {
            html += "</a>";
        }

        if (mDescArray != null) {
            html += "<div class='menuRowDesc'>" + mDescArray[i] + "</div>";
        }
        html += "</td>";
    }
    html += "</tr></table>"
    $("#" + divId).html(html);
    var f;
    for (i = 0; i < mIdArray.length; i++) {
        isLink = ((customLinkHash != null) &&
            (customLinkHash[mIdArray[i]] != null));
        if (!isLink) {
            $("#" + mIdArray[i]).
            click(typeof(eventCallbackOrHash) == 'function' ?
                eventCallbackOrHash :
                eventCallbackOrHash[mIdArray[i]]).              // Assume Hash of functions
            css('cursor','hand');
        }

    }
    if (width != null) {
        $("#" + tableId).css("width", width + "px");
    }
    // Call for first:
    if (typeof(eventCallbackOrHash) == 'function') {
        eventCallbackOrHash(createFakeEvent(mIdArray[0]));
    } else {
        //alert(eventCallbackOrHash);
        eventCallbackOrHash[mIdArray[0]](createFakeEvent(mIdArray[0]));
    }
}

function makeRowPicMenu(divId, picId, mIdArray, mDescArray, descHash, descDiv, width, rows) {
    makeRowCallbackMenu(divId, mIdArray, mDescArray, function(event) {
        //alert(imgUrlFor(event.target.id + "_full") + " --> " + picId);
        $("#" + picId).attr('src', imgUrlFor(event.target.id));
        if (descHash != null) {
            $("#" + descDiv).html(descHash[event.target.id]);
        }
    }, width, rows);
}


function makeRowPicSwitch(picIdLarge, divIdSmall, mIdArray, width, descHash, descDiv) {
    makeRowCallbackMenu(divIdSmall, mIdArray, null, function(event) {
        var id = event.target.id;
        var i;
        $('#' + picIdLarge).attr('src', imgUrlFor(id));
        for (i = 0; i < mIdArray.length; i++) {
            if (mIdArray[i] == id) {
                $('#' + mIdArray[i] + '_td').hide();
            } else {
                $('#' + mIdArray[i] + '_td').show();
            }
        }
        if (descHash != null) {
            $("#" + descDiv).html(descHash[event.target.id]);
        }
    }, width);
    // Show first (and hide from menu):
    $('#' + picIdLarge).attr('src', imgUrlFor(mIdArray[0]));
    $('#' + mIdArray[0] + '_td').hide();
    if (descHash != null) {
        $("#" + descDiv).html(descHash[mIdArray[0]]);
    }
}
