
//
// (C): Adam Katona, 2006
//

var verticalPadding = 40;
var horizontalPadding = 5;  //BUGBUG - ennek nem kellene itt lennie...
var blurValue = 0;
var blurMaximum = 90;
var blurStep = 15;
var blurTimerSpeed = 5;
var scrollingTimerSpeed = 30;
var scrollingStepX = 2;
var scrollingStepY = 1;
var scrollingPaddingX = 50;
var scrollingPaddingY = 50;
var doScrolling = false;


var blurDiv = null;
var viewerDiv = null;
var image = null;
var blurTimerId = null;
var verticalScrollingTimerId = null;
var verticalScrollingEnabled = false;
var horizontalScrollingTimerId = null;
var horizontalScrollingEnabled = false;
var verticalScrollDirection = -1;
var horizontalScrollDirection = -1;
var scrollingEnabled = true;
var imageClicked = false;


//--- Show the chosen image
//--- originalImage: the preview image object 
//--- imageId: the id of the gallery image or 0 for a smartdisplay image.
//--- clicked: if true, only a click will close the image.
function ShowImage(originalImage, displayId, imageId, title, description, tags, clicked, items)
{
    //alert(originalImage.naturalWidth);

    //--- If not a gallery image, check size and exit if it's small
    //BUGBUG: no such property in IE
    if (imageId == 0 && originalImage.naturalWidth <= 660)
	return;

    //--- Find divs, init
    viewerDiv = GetObject("GalleryViewer");    
    verticalScrollingEnabled = false;
    horizontalScrollingEnabled = false;
    imageClicked = clicked;

    //--- Show image
    if (viewerDiv)
    {
    	//--- Set image uri
    	image = GetObject("GalleryImage");
    
    	if (image)
    	{
    	    image.onload = GalleryImageLoaded;

	    if (imageId > 0)
    		image.src = "Attachment.php?Id=" + imageId + "&Mode=Gallery";
	    else
		image.src = "Attachment.php?Id=" + displayId;
    	}
    	else
    	    alert("Can't find Image object.");
    
        //--- Set title
    	titleParagraph = GetObject("GalleryTitle");
    	if (titleParagraph)
    	    titleParagraph.innerHTML = title;
    	else
    	    alert("Can't find GalleryTitle object.");
    	    
        //--- Set description
    	descriptionParagraph = GetObject("GalleryDescription");
    	if (descriptionParagraph)
    	{
    	    descriptionParagraph.innerHTML = description;
    	}
    	else
    	    alert("Can't find GalleryDescription object.");

	//--- Set tags
    	tagsParagraph = GetObject("GalleryTags");
    	if (tagsParagraph)
    	{
    	    tagsParagraph.innerHTML = tags;
    	}
    	else
    	    alert("Can't find GalleryTags object.");

	//--- Set pagers
	if (items)
	{
	    pos = items.indexOf(imageId);
	    //alert(pos);
	    
	    if (pos > 0)
	    {
		galleryPrevious = GetObject("GalleryPrevious");
		if (galleryPrevious)
		{
		    galleryPrevious.href = "javascript:ShowImage( );";
		}
		else
		    alert("Can't find GalleryPrevious object.");
	    }

	    if (pos < items.length - 1)
	    {

	    }
	}
    }
    else
    	alert("Can't find GalleryViewer div.");
    
    //--- Show blur
    InitBlurIn();
}


function GalleryImageLoaded()
{
    viewerDiv = GetObject("GalleryViewer");    
    	image = GetObject("GalleryImage");

    //--- Show image
    if (viewerDiv && image)
    {
    
        //--- Show it - nedded to calculate div size...
	    viewerDiv.style.display = "inline";
    
    	if (image.height)
    	{
    		//--- Set div width - description can be large
    		viewerDiv.style.width = image.width + horizontalPadding + "px";
    
    		topPos = document.documentElement.scrollTop + (document.body.offsetHeight - viewerDiv.clientHeight) / 2;
    		if (topPos < document.documentElement.scrollTop)
    		{
    		    topPos = scrollingPaddingY + document.documentElement.scrollTop;
    		    verticalScrollingEnabled = true;
    		}
    		
    
    		leftPos = document.documentElement.scrollLeft + (document.body.offsetWidth - viewerDiv.clientWidth) / 2;
    		if (leftPos < document.documentElement.scrollLeft)
    		{
    		    leftPos = scrollingPaddingX + document.documentElement.scrollLeft;
    		    horizontalScrollingEnabled = true;
    		}
    	}
    	else
    	{
    		//--- Buggy IE hack...
    		topPos = 10;
    		leftPos = 10;
    	}	
    
    	viewerDiv.style.top = topPos + "px";
    	viewerDiv.style.left = leftPos + "px";    
    
    	//--- Init scrolling if necessary
	if (doScrolling)
    	    InitScrolling();
    }
    else
	alert("No viewer div or image found.");
}

function HideGalleryImage(clicked)
{
    //--- If onmouseout triggered, only hide if the image was shown with onmouseover
    if (!clicked && imageClicked)
    {
	//alert(clicked + ", image: " + imageClicked);
	return;
    }

    if (blurDiv)
    {
	blurDiv.style.display = "none";
    }

    if (viewerDiv)
    {
	viewerDiv.style.display = "none";

	//--- Set image uri
	if (image)
	{
	    image.onload = null;
	    image.src = "images/empty.gif";
	}

	//--- Stop timers if any
	if (verticalScrollingTimerId)
	    clearTimeout(verticalScrollingTimerId);

	if (horizontalScrollingTimerId)
	    clearTimeout(horizontalScrollingTimerId);
    }
    else
	alert("Can't find GalleryViewer div.");
}

//--- Init blur animation
function InitBlurIn()
{
    blurDiv = GetObject("Blur");
    blurValue = 0;

    if (blurDiv)
    {
    	//--- No blur at first
    	blurDiv.style.opacity = "0";
    	blurDiv.style.filter = "alpha(opacity=0)";
    
    	//--- Fuckin buggy IE: set blur div style
	blurDiv.style.top = "0px";
	blurDiv.style.left = "0px";
    	blurDiv.style.width = document.body.offsetWidth + "px";
    	blurDiv.style.height = document.body.offsetHeight + "px";
	//blurDiv.style.width = window.innerWidth + "px";
	//blurDiv.style.height = window.innerHeight + "px";
	//alert(document.body.innerHeight);  

    	//--- Scroll correction	- not needed
    	//blurDiv.style.top = document.documentElement.scrollTop + "px";
    	//blurDiv.style.left = document.documentElement.scrollLeft + "px";
    
    	//alert(document.documentElement.scrollTop);
    	//alert(blurDiv.style.position);
    
    	//--- Show it
    	blurDiv.style.display = "inline";
    }

    //--- Start blurTimer
    blurTimerId = setTimeout("BlurInTimer()", blurTimerSpeed);

}

//--- Enhance blur
function BlurInTimer()
{
    if (blurDiv)
    {
	blurValue += blurStep;

	blurDiv.style.opacity = "." + blurValue;
	blurDiv.style.filter = "alpha(opacity=" + blurValue + ")";

	if (blurValue >= blurMaximum)
	{
	    clearTimeout(blurTimerId);
	}
	else
	    blurTimerId = setTimeout("BlurInTimer()", blurTimerSpeed);
    }
    else
    {
	clearTimeout(blurTimerId);
    }
}

//--- Init scrolling
function InitScrolling()
{
    if (verticalScrollingEnabled)
    {
	verticalScrollingDirection = -1;
	verticalScrollingTimerId = setTimeout("VerticalScrollingTimer()", scrollingTimerSpeed);
    }

    if (horizontalScrollingEnabled)
    {
	horizontalScrollingDirection = -1;
	horizontalScrollingTimerId = setTimeout("HorizontalScrollingTimer()", scrollingTimerSpeed);
    }

    scrollingEnabled = true;
}

//--- Vertical scrolling
function VerticalScrollingTimer()
{
    if (viewerDiv && image)
    {
	if (scrollingEnabled)
	{
	    viewerDiv.style.top = viewerDiv.offsetTop + (verticalScrollingDirection * scrollingStepY) + "px";

    	    if (viewerDiv.offsetTop > scrollingPaddingY + document.documentElement.scrollTop || 
	    viewerDiv.offsetTop < -viewerDiv.clientHeight + document.body.offsetHeight - scrollingPaddingY + document.documentElement.scrollTop)
	    verticalScrollingDirection *= -1;
	}

	verticalScrollingTimerId = setTimeout("VerticalScrollingTimer()", scrollingTimerSpeed);
    }
}

//--- Horizontal scrolling
function HorizontalScrollingTimer()
{
    if (viewerDiv && image)
    {
	if (scrollingEnabled)
	{
	    viewerDiv.style.left = viewerDiv.offsetLeft + (horizontalScrollingDirection * scrollingStepX) + "px";

	    if (viewerDiv.offsetLeft > scrollingPaddingX + document.documentElement.scrollLeft || 
	    viewerDiv.offsetLeft < -viewerDiv.clientWidth + document.body.offsetWidth - scrollingPaddingX + document.documentElement.scrollLeft)
	    horizontalScrollingDirection *= -1;
	}

	horizontalScrollingTimerId = setTimeout("HorizontalScrollingTimer()", scrollingTimerSpeed);
    }
}

//--- Stop scrolling is mouse is over the image
function DisableScrolling()
{
    scrollingEnabled = false;
}

//--- Enable scrolling if mouse is not over the image
function EnableScrolling()
{
    if (doScrolling)
	scrollingEnabled = true;
    else
	HideGalleryImage(true);
}


