var opacitySpeed = 2;	// Speed of opacity - switching between large images - Lower = faster
var opacitySteps = 10; 	// Also speed of opacity - Higher = faster
var slideSpeed = 5;	// Speed of thumbnail slide - Lower = faster
var slideSteps = 8;	// Also speed of thumbnail slide - Higher = faster
var columnsOfThumbnails = 5	// Hardcoded number of thumbnail columns, use false if you want the script to figure it out dynamically.

/* Don't change anything below here */
var DHTMLgoodies_largeImage = false;
var DHTMLgoodies_imageToShow = false;
var DHTMLgoodies_currentOpacity = 100;
var DHTMLgoodies_slideWidth = false;
var DHTMLgoodies_thumbTotalWidth = false;
var DHTMLgoodies_viewableWidth = false;

var currentUnqiueOpacityId = false;
var DHTMLgoodies_currentActiveImage = false;
var DHTMLgoodies_thumbDiv = false;
var DHTMLgoodies_thumbSlideInProgress = false;

var browserIsOpera = navigator.userAgent.indexOf('Opera')>=0?true:false;
var leftArrowObj;
var rightArrowObj;
var thumbsColIndex = 1;
var thumbsLeftPos = false;

var ssid = 0;
var sssubid = 0;
var ssitemid = 0;

var imageStorage = new Array();
var currentpageindex = 0;
var currentSelectedImage = 0;
var colsperpage = 5;
var itemspercol = 5;
var totalitems = 0;
var rows = 5;
var cols = 0;
var pages = 0;
var pageWidth = 0;

function initGalleryScript()
{
	leftArrowObj = document.getElementById('DHTMLgoodies_leftArrow');		
	leftArrowObj.style.visibility='hidden';
	rightArrowObj = document.getElementById('DHTMLgoodies_rightArrow');	
	leftArrowObj.style.cursor = 'pointer';	
	rightArrowObj.style.cursor = 'pointer';	
	leftArrowObj.onclick = moveThumbnails;
	rightArrowObj.onclick = moveThumbnails;
	DHTMLgoodies_largeImage = document.getElementById('DHTMLgoodies_largeImage').getElementsByTagName('IMG')[0];
	var innerDiv = document.getElementById('DHTMLgoodies_thumbs_inner');
	DHTMLgoodies_slideWidth = innerDiv.getElementsByTagName('DIV')[0].offsetWidth;
	DHTMLgoodies_thumbDiv = document.getElementById('DHTMLgoodies_thumbs_inner');
	DHTMLgoodies_thumbDiv.style.left = '0px';
	
	var subDivs = DHTMLgoodies_thumbDiv.getElementsByTagName('DIV');
	DHTMLgoodies_thumbTotalWidth = 0;
	var tmpTop = 0;
	var imgIndex = 0;
	var tmpColIndex = 0;
	var tmpRow = 0;

	

	for (var no = 0; no < subDivs.length; no++)
	{
	    if (subDivs[no].className == 'strip_of_thumbnails')
	    {
	        var tmpPage = no > 0 ? Math.floor(tmpColIndex / colsperpage) : 0;

	        //alert(tmpPage);
			DHTMLgoodies_thumbTotalWidth = DHTMLgoodies_thumbTotalWidth + DHTMLgoodies_slideWidth;
			//subDivs[no].style.left = tmpLeft + 'px';
			//subDivs[no].style.top = '0px';

			subDivs[no].style.top = ( tmpRow * subDivs[no].offsetHeight ) + 'px';
			subDivs[no].style.left = ( tmpPage * 190 ) + 'px';
			//tmpTop = tmpTop + subDivs[no].offsetHeight;

			var subImages = subDivs[no].getElementsByTagName('A');

			for (var i = 0; i < subImages.length; i++)
			{
			    if (subImages[i].parentNode.className == "linkContainer")
			    {
			        imageStorage[totalitems] = subImages[i];
			        subImages[i].id = "thumbLink" + imgIndex;
			        imgIndex++;
			        totalitems++;
			    }
			}

			tmpColIndex++;

			if (tmpRow < 4)
			    tmpRow++;
			else
			    tmpRow = 0;
		}
    }

    cols = Math.ceil( totalitems / rows );
    pages = Math.ceil(cols / colsperpage);
    pageWidth = 191;
    
	DHTMLgoodies_viewableWidth = document.getElementById('DHTMLgoodies_thumbs').offsetWidth;

	var qs = new Querystring();

	ssid = qs.get("ssid");
	sssubid = qs.get("sssubid");

	if (qs.contains("ssitemid"))
	{
	    ssitemid = qs.get("ssitemid");
	    currentSelectedImage = ssitemid;
	}

	DHTMLgoodies_currentActiveImage = document.getElementById("thumbLink" + ssitemid).getElementsByTagName('IMG')[0];
	DHTMLgoodies_currentActiveImage.className = 'activeImage';

	var imagePath = document.getElementById("thumbLink" + ssitemid).href;

	DHTMLgoodies_imageToShow = imagePath;
	var tmpImage = new Image();
	tmpImage.src = imagePath;
	currentUnqiueOpacityId = Math.random();
	moveOpacity(opacitySteps * -1, currentUnqiueOpacityId);

	setCaption(document.getElementById("thumbLink" + ssitemid));
	setAddThisUrl();

	currentpageindex = getPageByItemIndex(ssitemid);

	thumbsLeftPos = (pageWidth * currentpageindex * -1);
	DHTMLgoodies_thumbDiv.style.left = thumbsLeftPos + 'px';

	setButtonVisibility();
}

function getPageByItemIndex(item)
{
    item++;
    var col = item < itemspercol ? 0 : Math.ceil(item / itemspercol);
    return col < colsperpage ? 0 : Math.ceil(col / colsperpage) - 1;
}

function setCaption( container )
{
    var captionContainer = document.getElementById("imageCaption");
    captionContainer.innerHTML = container.parentNode.getElementsByTagName('DIV')[0].innerHTML;
}

function setAddThisUrl()
{
    addThisSlideShowUrl = addThisRootUrl + "?ssid=" + ssid + "&sssubid=" + sssubid + "&ssitemid=" + ssitemid;
}

function slideToPage( targetPage )
{
    var targetLeft = pageWidth * targetPage * -1;
    var threshold = targetLeft < thumbsLeftPos ? -20 : 20;

    if (((thumbsLeftPos < targetLeft) && threshold > 0) || ((thumbsLeftPos > targetLeft) && threshold < 0))
    {
        if (threshold > 0 && (targetLeft - thumbsLeftPos) < threshold)
            thumbsLeftPos = targetLeft;
        else if( threshold < 0 && ( targetLeft - thumbsLeftPos ) > threshold )
            thumbsLeftPos = targetLeft;
        else
            thumbsLeftPos += threshold;

        DHTMLgoodies_thumbDiv.style.left = thumbsLeftPos + 'px';
        setTimeout("slideToPage(" + targetPage + ")", 40);
    }
    else
    {
        currentpageindex = targetPage;
        DHTMLgoodies_thumbSlideInProgress = false;
        setButtonVisibility();
    }
}

function setButtonVisibility()
{
    if (currentSelectedImage <= 0)
        leftArrowObj.style.visibility = 'hidden';
    else
        leftArrowObj.style.visibility = 'visible';

    if (currentSelectedImage >= ( totalitems - 1 ) )
        rightArrowObj.style.visibility = 'hidden';
    else
        rightArrowObj.style.visibility = 'visible';

    setPagingDetails();
}
	
function moveThumbnails()
{
	if(DHTMLgoodies_thumbSlideInProgress)return;

	var onVisiblePage = true;

	var minItemForPageCheck = currentpageindex * 25;
	var maxItemForPageCheck = (currentpageindex + 1) * 25;

	if (this.id == 'DHTMLgoodies_leftArrow')
	{
	    if( currentSelectedImage > 0 )
	    {
	        currentSelectedImage--;
	        showPreview(imageStorage[currentSelectedImage]);

	        if (currentSelectedImage < minItemForPageCheck )
	        {
	            DHTMLgoodies_thumbSlideInProgress = true;
	            setTimeout("slideToPage(" + (currentpageindex - 1) + ")", 100);
	        }
	    }
    } 
    else
    {
        if ( currentSelectedImage < ( totalitems - 1 ) )
        {
            currentSelectedImage++;
            showPreview(imageStorage[currentSelectedImage]);

            if (currentSelectedImage >= maxItemForPageCheck)
            {
                DHTMLgoodies_thumbSlideInProgress = true;
                setTimeout("slideToPage(" + (currentpageindex + 1) + ")", 100);
            }
        }
    }
}

function setPagingDetails()
{
    var item = document.getElementById("thumbPageDetails");
    item.innerHTML = "page " + (currentpageindex + 1) + " of " + pages + ", item " + (currentSelectedImage + 1) + " of " + totalitems;
}

function showPreview(inputObj)
{		
	if(DHTMLgoodies_currentActiveImage){
		if(DHTMLgoodies_currentActiveImage==inputObj.getElementsByTagName('IMG')[0])return;
		DHTMLgoodies_currentActiveImage.className='';
    }

    var imagePath = inputObj.href;

	DHTMLgoodies_currentActiveImage = inputObj.getElementsByTagName('IMG')[0];
	DHTMLgoodies_currentActiveImage.className='activeImage';
	ssitemid = parseInt(inputObj.id.replace("thumbLink", ""));
	currentSelectedImage = ssitemid;
	DHTMLgoodies_imageToShow = imagePath;
	var tmpImage = new Image();
	tmpImage.src = imagePath;
	currentUnqiueOpacityId = Math.random();
	moveOpacity(opacitySteps * -1, currentUnqiueOpacityId);

	setCaption(inputObj);
	setAddThisUrl();

	setButtonVisibility();
}
	
function setOpacity()
{
	if(document.all)
		DHTMLgoodies_largeImage.style.filter = 'alpha(opacity=' + DHTMLgoodies_currentOpacity + ')';
	else
		DHTMLgoodies_largeImage.style.opacity = DHTMLgoodies_currentOpacity/100;
}
	
function moveOpacity(speed,uniqueId)
{
	
	if(browserIsOpera){
		DHTMLgoodies_largeImage.src = DHTMLgoodies_imageToShow;
		return;
	}
	
	DHTMLgoodies_currentOpacity = DHTMLgoodies_currentOpacity + speed;
	if(DHTMLgoodies_currentOpacity<=5 && speed<0){
	
		var tmpParent = DHTMLgoodies_largeImage.parentNode; 
		DHTMLgoodies_largeImage.parentNode.removeChild(DHTMLgoodies_largeImage);
		DHTMLgoodies_largeImage = document.createElement('IMG');
		tmpParent.appendChild(DHTMLgoodies_largeImage);
		setOpacity();
		DHTMLgoodies_largeImage.src = DHTMLgoodies_imageToShow;
	
		speed=opacitySteps;
	}
	if(DHTMLgoodies_currentOpacity>=99 && speed>0)DHTMLgoodies_currentOpacity=99;		
	setOpacity();	
	if(DHTMLgoodies_currentOpacity>=99 && speed>0)return;		
	if(uniqueId==currentUnqiueOpacityId)setTimeout('moveOpacity(' + speed + ',' + uniqueId + ')',opacitySpeed);		
}
