//
//Copyright 2005-2006 Netopia Inc.
//
var gLoadImgTimeout=null;

function doRTEMouseover()
{
    //for backwards compatibility
}

function drawDetailView(dir)
{
    drawImage(dir);
    drawText();
}

var prevImg = new Image();
var nextImg = new Image();

function seekTo(dir,override)
{
    var errorMsg = document.getElementById("errMsg");
    if (errorMsg) errorMsg.style.display = "none";

    if (galItem.length < 2)
        return;
    
    var playBtn = document.getElementById("TGAutoPlay");
    var newIdx = galIndex+dir;

    if (newIdx < 0)
    {
        var currIdx = galItem.length-1;
        var prevIdx = currIdx-1;
        var nextIdx = 0;
    }
    else if (newIdx >= galItem.length)
    {
        var currIdx = 0;
        var prevIdx = galItem.length-1;
        var nextIdx = currIdx+1;
    }
    else
    {
        var currIdx = newIdx;
        var prevIdx = (currIdx == 0 ? galItem.length-1 : currIdx-1);
        var nextIdx = (currIdx == galItem.length-1 ? 0 : currIdx+1);
    }

    galIndex = currIdx;
    drawDetailView(dir);
    prevImg.src = galItem[prevIdx].lgScaledSrc;
    nextImg.src = galItem[nextIdx].lgScaledSrc;
    
    if (play)
    {
        if (override) 
        {
            play = false;
            playBtn.innerHTML = gstrPlay;
        }

        if (playTimeout)
            window.clearTimeout(playTimeout);
    }
}

var play = false;
var playTimeout = null;
function nxtImg()
{
    if (play)
    {
        var playTimeout = window.setTimeout("seekTo(1);", 5000);
    }
}


function drawImage(dir)
{
    actualSize = false;
    
    if (dir)
    {
        if (dir < 0)
            var cachedImg = prevImg;
        else
            var cachedImg = nextImg;
    }

    var aLink  = document.getElementById("TGLinkTag");
    var imgTag = document.getElementById("TGImgTag");
    
    if (aLink)
        aLink.href = galItem[galIndex].src;
    
    imgTag.alt = galItem[galIndex].alt;
    imgTag.title = gstrClickForActualSize;

    var imgPath = (cachedImg.src ? cachedImg.src : galItem[galIndex].lgScaledSrc);
    var bUseFilter=false;
    if (galItem[galIndex].filterPrefix != "")
    {
        imgTag.style.filter="alpha(opacity=0)";
        bUseFilter=true;
    }
    
    imgTag.style.width="";
    imgTag.style.height="";
    if (play && !bUseFilter)
    {//if this is a regular image in play mode
        transFade(imgPath, 1000);
    }
    else 
    {//This is a regulare image in non-play mode or png in either play or non-play mode

        
        imgTag.src = imgPath;
        
        if (bUseFilter)
        {//this is a png
        
            //must load image before setting filter to ensure proper dimensions
            imgTag.src = imgPath;    

            //if in play mode, it will set timer for next image
            nxtImg();
            loadSwapImg();

            //sets timer to set image to transpix so png filter will display transparency
            gLoadTimeout = setTimeout("handlePNGImage('TGImgTag')");
        }
    }
} 

var actualSize = false;
function showActual(imgObj)
{
    if (playTimeout)
        window.clearTimeout(playTimeout);
    
    if (actualSize)
    {
        imgObj.src = galItem[galIndex].lgScaledSrc;
        imgObj.title = gstrClickForActualSize;
        actualSize = false;
    }
    else
    {
        imgObj.src = galItem[galIndex].src;
        imgObj.title = gstrClickForScaledSize;
        actualSize = true;
    }
    

}

function autoPlay()
{
    if (galItem.length < 2)
        return;
    
    var playBtn = document.getElementById("TGAutoPlay");
    play = !play;

    if (play)
    {
        if ((galIndex+1) >= galItem.length)
            galIndex = -1;
        
        loadSwapImg();

        playBtn.innerHTML = "<strong style=\"color: #990000\">" + gstrPause + "</strong>";
        playTimeout = window.setTimeout("seekTo(1);",1000);
        
    }
    else
    {
        playBtn.innerHTML = gstrPlay;
        if (playTimeout)
            window.clearTimeout(playTimeout);
    }
    
}


function TG_altSrc(imgObj, srcStr)
{
    if (imgObj.src.indexOf(srcStr) != -1)
        imgObj.onerror = "";
    else
        imgObj.src = srcStr;
}

function drawText()
{
    var titleDiv = document.getElementById("TGItemTitle");
    var descDiv  = document.getElementById("TGItemDesc");
    var countDiv = document.getElementById("TGcurrIdx");
    var totalDiv = document.getElementById("TGtotIdx");
    
    titleDiv.innerHTML = galItem[galIndex].title;
    descDiv.innerHTML  = galItem[galIndex].desc;

    countDiv.innerHTML = galIndex+1;
    totalDiv.innerHTML = galItem.length;
} 

function closeDetail()
{
    try 
    {
        if (opener && !opener.closed)
        {
            opener.focus();
            window.close();
        }
        else
            back2Gallery();
    }
    catch (e)
    {
        back2Gallery();
    }
}

var galIndex = 0;
function init(imgIdx)
{
    window.focus();
    
    //if scripting is enabled, we want to do the slideshow functions dynamically via JS,
    //so modify the DOM elements to accept onclick events
    
    document.getElementById("TGQuickLinksExitSPAN").style.visibility = "visible";
    
    var prevLnk = document.getElementById("TGPrevLink");
    var nextLnk = document.getElementById("TGNextLink");
    var showLnk = document.getElementById("TGAutoPlay");
    var exitLnk = document.getElementById("TGQuickLinksExitSPAN");

    prevLnk.innerHTML = gstrPrev; //remove the a tags from the links
    nextLnk.innerHTML = gstrNext; 
    showLnk.innerHTML = gstrPlay;
    exitLnk.innerHTML = gstrBackToGallery; 
    
    var imgDiv  = document.getElementById("TGImgTag");
    var imgLnk  = document.getElementById("TGLinkTag");   
    var imgTag  = document.getElementById("TGFaderImage");
    
    imgTag.replaceChild(imgDiv, imgLnk); //remove the a tag link if scripting enabled

    var permLink = document.getElementById("permalink");
    permLink.innerHTML = gstrPermalink;
    
    galIndex = imgIdx;
    
}

function changeOpacity(opVal) 
{
	//cross-browser opacity change
    var img = document.getElementById("TGImgTag").style; 
        img.opacity = (opVal / 100);
    	img.Mozopacity = (opVal / 100);
    	img.Khtmlopacity = (opVal / 100);

        img.filter = "alpha(opacity=" + opVal + ")";
        
    if (opVal == 100)
    { 
        loadSwapImg();
        nxtImg();
    }
    
}

function loadSwapImg()
{
	    //set the current image as background
	    var fdImg = document.getElementById("TGFaderImage");
        
        if (galItem[galIndex].filterPrefix != "")
        {
            fdImg.style.backgroundImage = "";
        }
        else
        {
            fdImg.style.backgroundImage = "url("+document.getElementById("TGImgTag").src+")";
        }
}

function transFade(imgSrc, millisec) 
{
	var interval = Math.round(millisec / 100);
	var timer    = 0;
	changeOpacity(0);
	document.getElementById("TGImgTag").src = imgSrc;
	for(i = 0; i <= 100; i++) 
    {
		setTimeout("changeOpacity(" + i + ",'TGImgTag')",(timer * interval));
		timer++;
	}
}

function handlePNGImage(imgId)
{
    var hImg=document.getElementById(imgId);
    if (hImg)
    {
        // Do not set a timeout without removing this property
        hImg.onreadystatechange="";  //using hImg.removeAttribute("onreadystatechange") didn't really work, it made this function get hit with readystate=complete 2 times sometimes, which caused some problems
        if (hImg.readyState == "complete" && hImg.width && hImg.height)
        {
            gTimeoutCount = 0;
            if (gLoadImgTimeout) clearTimeout(gLoadImgTimeout);
            
            var h=hImg.height;
            var w=hImg.width;
            hImg.style.filter=galItem[galIndex].filterPrefix + escape(galItem[galIndex].lgScaledSrc) + galItem[galIndex].filterSuffix;
            hImg.src=gtranspiximg;
            hImg.style.height=h;
            hImg.style.width=w;
        }
        else
        {
            if (gLoadImgTimeout) clearTimeout(gLoadImgTimeout);
            gLoadTimeout = setTimeout("handlePNGImage('" + imgId + "')");
        }
    }
}