var is_nav, is_safari, is_ieMac;
           
function isNav()
{
    if (null == is_nav)
    {
        // convert all characters to lowercase to simplify testing
        var agt=navigator.userAgent.toLowerCase();
    
        // *** BROWSER VERSION ***
        // Note: On IE5, these return 4, so use is_ie5up to detect IE5.
        var is_major = parseInt(navigator.appVersion);
        var is_minor = parseFloat(navigator.appVersion);
    
        // Note: Opera and WebTV spoof Navigator.  We do strict client detection.
        // If you want to allow spoofing, take out the tests for opera and webtv.
        is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
          && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
          && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
        is_safari = isSafari();
    }
    //Safari emulates Nav 7
    return(is_nav || is_safari);
}

var detect;
var OS,browser,version,total,thestring;

function isIEMac()
{
    if (null == is_ieMac)
    {
        detect = navigator.userAgent.toLowerCase();
        if (checkIt('konqueror'))
        {
            browser = "Konqueror";
            OS = "Linux";
        }
        else if (checkIt('safari')) browser = "Safari"
        else if (checkIt('omniweb')) browser = "OmniWeb"
        else if (checkIt('opera')) browser = "Opera"
        else if (checkIt('webtv')) browser = "WebTV";
        else if (checkIt('icab')) browser = "iCab"
        else if (checkIt('msie')) browser = "Internet Explorer"
        else if (!checkIt('compatible'))
        {
            browser = "Netscape Navigator"
            version = detect.charAt(8);
        }
        else browser = "An unknown browser";
    
        if (!version) version = detect.charAt(place + thestring.length);
    
        if (!OS)
        {
            if (checkIt('linux')) OS = "Linux";
            else if (checkIt('x11')) OS = "Unix";
            else if (checkIt('mac')) OS = "Mac"
            else if (checkIt('win')) OS = "Windows"
            else OS = "an unknown operating system";
        }
        is_ieMac = (browser == "Internet Explorer" && OS == "Mac");
    }
    return is_ieMac;
}

function isSafari()
{
	detect = navigator.userAgent.toLowerCase();
	if (checkIt('konqueror'))
	{
		browser = "Konqueror";
		OS = "Linux";
	}
	else if (checkIt('safari')) browser = "Safari"
	else if (checkIt('omniweb')) browser = "OmniWeb"
	else if (checkIt('opera')) browser = "Opera"
	else if (checkIt('webtv')) browser = "WebTV";
	else if (checkIt('icab')) browser = "iCab"
	else if (checkIt('msie')) browser = "Internet Explorer"
	else if (!checkIt('compatible'))
	{
		browser = "Netscape Navigator"
		version = detect.charAt(8);
	}
	else browser = "An unknown browser";

	if (!version) version = detect.charAt(place + thestring.length);

	if (!OS)
	{
		if (checkIt('linux')) OS = "Linux";
		else if (checkIt('x11')) OS = "Unix";
		else if (checkIt('mac')) OS = "Mac"
		else if (checkIt('win')) OS = "Windows"
		else OS = "an unknown operating system";
	}
	return (browser == "Safari" && OS == "Mac");
}

function checkIt(string)
{
	place = detect.indexOf(string) + 1;
	thestring = string;
	return place;
}

function installEventHandler(node, handler, funcPtr)
{
    if (isNav())
    {
        //Netscrape-specific event handler:
        node.addEventListener(handler, funcPtr, false);
    }
    else
    {
        //Internet Exploder-specific event handler:
        node["on" + handler] = funcPtr;
    }
}

function getEventHoverTarget(e)
{
    if (isNav())
    {
        return e.target;
    }
    else
    {
        return window.event.toElement;
    }
}

function getEventLeaveTarget(e)
{
    if (isNav())
    {
        return e.target;
    }
    else
    {
        return window.event.srcElement;
    }
}

function openImageViewer(src, imgList)
{
    window.viewer       = new Object();
    window.viewer.src   = src;
    window.viewer.imgList   = imgList;
    var viewer      = window.open("viewer.shtml", "_viewer", "height=825,width=675,scrollbars=yes");
    viewer.focus();
}

function invokeViewerByPic(e)
{
    var target      = getEventLeaveTarget(e);
    openImageViewer(target.getAttribute("src"), IMG_TBL);
}

function invokeViewerByHTML(e)
{
    var target      = getEventLeaveTarget(e);
    openImageViewer(target.getAttribute("imgSrc"), IMG_TBL);
}

function invokeCopyright(e)
{
    alert("All images copyright 2001-4, Coyote Images.  For download and usage, please inquire at info@coyoteimages.com");
    if (isNav())
    {
       //NS-specific--stop the event:
       //e.stopPropagation();
       //e.preventDefault();
       e.returnValue = false;
       e.cancelBubble = true;
    }
    else
    {
        event.returnValue = false;
    	event.cancelBubble = true;
    }
    return false;
}

function buttonHover(e)
{
    var target = getEventHoverTarget(e);
    if (null != target)
    {
        while (target.tagName != "DIV") { target = target.parentNode; }
        target.className = "com-coyoteimages-linkHover";
    }
}

function buttonLeave(e)
{
    var target = getEventLeaveTarget(e);
    if (null != target)
    {
        while (target.tagName != "DIV") { target = target.parentNode; }
        target.className = "com-coyoteimages-linkNormal";
    }
}

function invokeCopyright(e)
{
    alert("All images copyright 2001-5, Coyote Images.  For download and usage, please inquire at info@coyoteimages.com");
    if (isNav())
    {
       //NS-specific--stop the event:
       //e.stopPropagation();
       //e.preventDefault();
       e.returnValue = false;
       e.cancelBubble = true;
    }
    else
    {
        event.returnValue = false;
        event.cancelBubble = true;
    }
    return false;
}

//For browser portability (thanks frickin IE5 on Mac!)
function createTable(insertNode)
{
    var tblRoot = document.createElement("table");
    var tblBody = document.createElement("tbody");
    tblRoot.appendChild(tblBody);
    insertNode.appendChild(tblRoot);   
    return tblBody;
}

//For browser portability (thanks frickin IE5 on Mac!)
function createTableRow(tblBody)
{
    var curRow  = document.createElement("tr");
    tblBody.appendChild(curRow);
    return curRow;
}

//For browser portability (thanks frickin IE5 on Mac!)
function createTableCell(tblRow)
{
    var curCell  = document.createElement("td");
    tblRow.appendChild(curCell);
    return curCell;
}

function initGallery(tnTbl)
{
    var insertNode = document.getElementById("imgTable");
    var tblBody = createTable(insertNode);
    var tblRoot = tblBody.parentNode;
    tblRoot.setAttribute("cellPadding", "5");
    tblRoot.setAttribute("borderSpacing", "0");
    tblRoot.style.border = "0";
    var curRow;
    installEventHandler(document.body, "contextmenu", invokeCopyright);
    for (var i=0; i<tnTbl.length; i++)
    {
        curRow  = createTableRow(tblBody);
        curRow.setAttribute("valign", "top");
        var col = createTableCell(curRow);
        col.setAttribute("width", "250px");
        var divElem = document.createElement("div");
        col.appendChild(divElem);
        divElem.setAttribute("align", "center");
        var pic     = document.createElement("img");
        pic.setAttribute("vspace", "15");
        divElem.appendChild(pic);
        pic.setAttribute("align", "center"); //a must for NN
        pic.setAttribute("src", tnTbl[i][0]);
        pic.setAttribute("id", i);
        pic.style.cursor    = "hand";
        col = createTableCell(curRow);
        col.setAttribute("valign", "top");
        var layoutTbl   = createTable(col);
        layoutTbl.parentNode.setAttribute("width", "100%");
        layoutTbl.parentNode.setAttribute("height", "100%");
        layoutTbl.parentNode.setAttribute("cellPadding", "8");
        var layoutCol = createTableCell(createTableRow(layoutTbl));
        var dataTbl = createTable(layoutCol);
        dataTbl.parentNode.setAttribute("width", "100%");
        var dataRow = createTableRow(dataTbl);
        var dataCol = createTableCell(dataRow);
        divElem = document.createElement("div");
        divElem.className = "com-coyoteimages-bodytext";
        divElem.style.textAlign = "left";
        divElem.style.fontStyle = "italic";
        divElem.style.fontWeight = "bold";
        dataCol.appendChild(divElem);
        divElem.appendChild(document.createTextNode("Title: " + tnTbl[i][1]));
        dataRow = createTableRow(dataTbl);
        dataCol = createTableCell(dataRow);
        divElem = document.createElement("div");
        divElem.className = "com-coyoteimages-bodytext";
        divElem.style.textAlign = "left";
        divElem.style.fontSize = "9pt";
        dataCol.appendChild(divElem);
        divElem.appendChild(document.createTextNode("Reference Number: " + tnTbl[i][2]));
        dataRow = createTableRow(dataTbl);
        dataCol = createTableCell(dataRow);
        divElem = document.createElement("div");
        divElem.style.fontSize = "9pt";
        divElem.style.textAlign = "left";
        divElem.className = "com-coyoteimages-bodytext";
        dataCol.appendChild(divElem);
        divElem.appendChild(document.createTextNode("Location: " + tnTbl[i][3]));
        dataRow = createTableRow(dataTbl);
        dataCol = createTableCell(dataRow);
        divElem = document.createElement("div");
        divElem.className = "com-coyoteimages-linkNormal";
        divElem.style.align = "left";
        installEventHandler(divElem, "mouseover", buttonHover);
        installEventHandler(divElem, "mouseout", buttonLeave);
        dataCol.appendChild(divElem);
        divElem.setAttribute("imgSrc", tnTbl[i][0]);
        var isElite   = (-1 != tnTbl[i][0].indexOf("elite"));
        divElem.appendChild(document.createTextNode(isElite ? "View larger version and story" : "View larger version"));
        installEventHandler(divElem, "click", invokeViewerByHTML);
        installEventHandler(pic, "click", invokeViewerByPic);
    }
}

