﻿// JScript File

/************************************************************************************************************
(C) www.dhtmlgoodies.com, June 2006

This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.	

Terms of use:
You are free to use this script as long as the copyright message is kept intact. However, you may not
redistribute, sell or repost it without our permission.

Thank you!

www.dhtmlgoodies.com
Alf Magne Kalleland

************************************************************************************************************/	

function slider(innerDivID, outerDivID, colCount, cellCount, leftArrowID, rightArrowID, objectID, pager, hfLeftPosition, hfColIndex, identifiersClientIds, imageId)
{  
    this.slideSpeed = 1;	// Czas animacji
    this.slideSteps = 15;	// Liczba o ile pikseli przesowa sie obrazek - szerokosc diva musi byc podzielna przez ta liczbe
    var rest = cellCount - (colCount % cellCount);
    if(rest == cellCount)
        rest = 0;
    this.columnsOfThumbnails = parseInt((parseInt(colCount) + parseInt(rest)));
    this.cellCount = cellCount;
	
	this.hfLeftPosition = hfLeftPosition;
    
    this.hfColIndex = hfColIndex;
	
    this.thumbsColIndex = document.getElementById(hfColIndex).value; //0   

    this.thumbsLeftPos = false;
       
    this.DHTMLgoodies_slideWidth = false;
    this.DHTMLgoodies_thumbTotalWidth = false;
    this.DHTMLgoodies_viewableWidth = false;
	
    this.DHTMLgoodies_thumbDiv = document.getElementById(innerDivID);
    this.leftArrowObj = document.getElementById(leftArrowID);
    this.rightArrowObj = document.getElementById(rightArrowID);   
    
    this.DHTMLgoodies_thumbSlideInProgress = false;
    
    this.DHTMLgoodies_thumbs_outer_ID = outerDivID;
    
    this.Pager = pager.split(";");
    
    this.slideThumbs = slideThumbs;
    
    this.moveThumbnailsLeft = moveThumbnailsLeft;
    
    this.moveThumbnailsRight = moveThumbnailsRight;
        
    this.moveMultiplePages = moveMultiplePages;
        
    this.FindPage = FindPage;
    
    this.ID = objectID;   
    
    this.identifiersClientIds = identifiersClientIds.split(";");
    
    this.imageId = imageId;    
    
    this.innerDivID = innerDivID;
    
    if(this.columnsOfThumbnails > 0)
    {	
	    this.leftArrowObj.style.cursor = 'pointer';	
	    this.rightArrowObj.style.cursor = 'pointer';
	    var slider = this;	
	    this.leftArrowObj.onclick = function(e) 
	    {
	        moveThumbnailsLeft(slider);
	    }
	    this.rightArrowObj.onclick = function(e)
	    {
	        moveThumbnailsRight(slider);
	    }
	    this.DHTMLgoodies_slideWidth = this.DHTMLgoodies_thumbDiv.getElementsByTagName('DIV')[0].offsetWidth;

	    this.DHTMLgoodies_thumbDiv.style.left = document.getElementById(hfLeftPosition).value+"px";  //'0px'
	    this.thumbsLeftPos = this.DHTMLgoodies_thumbDiv.style.left.replace('px','')/1;       
		
	    var subDivs = this.DHTMLgoodies_thumbDiv.getElementsByTagName('DIV');
	    this.DHTMLgoodies_thumbTotalWidth = 0;
        var tmpLeft = 0;	        
	    for(var no = 0; no < subDivs.length; no++)
	    {
		    if(subDivs[no].className == 'strip_of_thumbnails')
		    {
			    this.DHTMLgoodies_thumbTotalWidth = this.DHTMLgoodies_thumbTotalWidth + this.DHTMLgoodies_slideWidth;
			    subDivs[no].style.left = tmpLeft + 'px';
			    subDivs[no].style.top = '0px';
			    tmpLeft = tmpLeft + subDivs[no].offsetWidth;
		    }
	    }
	    this.DHTMLgoodies_thumbTotalWidth = this.DHTMLgoodies_slideWidth * this.columnsOfThumbnails;
	    this.DHTMLgoodies_viewableWidth = document.getElementById(this.DHTMLgoodies_thumbs_outer_ID).offsetWidth;
	    this.DHTMLgoodies_slideWidth = this.DHTMLgoodies_slideWidth * cellCount;
	}	
	else
	{	
	    this.leftArrowObj.style.visibility = 'hidden';
	    this.rightArrowObj.style.visibility = 'hidden';
	}	
		
	for(var k=0; k< slider.Pager.length; k++)
	{
	    if(k == slider.thumbsColIndex)
	        document.getElementById(slider.Pager[k]).src = "/_img/content/imgPagerMiddle.gif";
	    else
	        document.getElementById(slider.Pager[k]).src = "/_img/content/imgPager.gif";
	}	
}

function moveThumbnailsLeft(slider)
{
	if(slider.DHTMLgoodies_thumbSlideInProgress)
	    return;
	slider.DHTMLgoodies_thumbSlideInProgress = true;
	
	slider.thumbsColIndex--;
	slider.slideThumbs(slider.slideSteps,0);
	
	for(var k=0; k < slider.Pager.length; k++)
	{
	    if(k == slider.thumbsColIndex)
	        document.getElementById(slider.Pager[k]).src = "/_img/content/imgPagerMiddle.gif";
	    else
	        document.getElementById(slider.Pager[k]).src = "/_img/content/imgPager.gif";
	}		
}

function moveThumbnailsRight(slider)
{
	if(slider.DHTMLgoodies_thumbSlideInProgress)
	    return;
	slider.DHTMLgoodies_thumbSlideInProgress = true;

	slider.thumbsColIndex++;
	var t = slider.slideThumbs((slider.slideSteps * -1), 0);

	for(var k=0; k< slider.Pager.length; k++)
	{
	    if(k == slider.thumbsColIndex)
	        document.getElementById(slider.Pager[k]).src = "/_img/content/imgPagerMiddle.gif";
	    else
	        document.getElementById(slider.Pager[k]).src = "/_img/content/imgPager.gif";
	}
}

function moveMultiplePages(pageIndex, slider)
{
    

    //slide left
    var temp = slider.thumbsColIndex;

    if(temp > pageIndex)
    {
        for(var i = 0; i < (temp - pageIndex); i++)
        {
            slider.moveThumbnailsLeft(slider);
        }
    }
    //slide right
    else if(temp < pageIndex)
    {
        for(var i = 0; i < (pageIndex - temp); i++)
        {
            slider.moveThumbnailsRight(slider);
        }
    } 	        
}

function slideThumbs(speed,currentPos)
{
	var leftPos;
	if(this.thumbsLeftPos)
		leftPos = this.thumbsLeftPos;
	else
	{
		var leftPos = this.DHTMLgoodies_thumbDiv.style.left.replace('px','')/1;
		this.thumbsLeftPos = leftPos;
	}
	currentPos = currentPos + Math.abs(speed);	
	var tmpLeftPos = leftPos;
	leftPos = leftPos + speed;
	this.thumbsLeftPos = leftPos;
	this.DHTMLgoodies_thumbDiv.style.left = leftPos + 'px';
	if(currentPos < this.DHTMLgoodies_slideWidth)
	    setTimeout(this.ID + '.slideThumbs(' + speed + ',' + currentPos + ')', this.slideSpeed);
	    else
	    {	        
	    	document.getElementById(this.hfLeftPosition).value = this.thumbsLeftPos;
	        document.getElementById(this.hfColIndex).value = this.thumbsColIndex;
	    }
	this.DHTMLgoodies_thumbSlideInProgress = false;
	if(leftPos <= -this.DHTMLgoodies_thumbTotalWidth)
	{
	    this.thumbsLeftPos = this.DHTMLgoodies_slideWidth;
	    currentPos = 0;
	    this.thumbsColIndex = 0;
	    
	    for(var k=0; k < this.Pager.length; k++)
	    {
	        if(k == this.thumbsColIndex)
	            document.getElementById(this.Pager[k]).src = "/_img/content/imgPagerMiddle.gif";
	        else
	            document.getElementById(this.Pager[k]).src = "/_img/content/imgPager.gif";
	    }
	    
	    if(currentPos < this.DHTMLgoodies_slideWidth)
	        setTimeout(this.ID + '.slideThumbs(' + speed + ',' + currentPos + ')', this.slideSpeed);
	    else
	    {
	    	document.getElementById(this.hfLeftPosition).value = this.thumbsLeftPos;
	        document.getElementById(this.hfColIndex).value = this.thumbsColIndex;
	    }
	}
	if(leftPos >= this.DHTMLgoodies_slideWidth)
	{
	    this.DHTMLgoodies_thumbDiv.style.left = -this.DHTMLgoodies_thumbTotalWidth + 'px';
	    this.thumbsLeftPos = -this.DHTMLgoodies_thumbTotalWidth;
	    currentPos = 0;
	    this.thumbsColIndex = (this.columnsOfThumbnails / this.cellCount) - 1;
	    
	    for(var k=0; k < this.Pager.length; k++)
	    {
	        if(k == this.thumbsColIndex)
	            document.getElementById(this.Pager[k]).src = "/_img/content/imgPagerMiddle.gif";
	        else
	            document.getElementById(this.Pager[k]).src = "/_img/content/imgPager.gif";
	    }
	    
	    if(currentPos < this.DHTMLgoodies_slideWidth)
	        setTimeout(this.ID + '.slideThumbs(' + speed + ',' + currentPos + ')', this.slideSpeed);
	        	    else
	    {
	    	document.getElementById(this.hfLeftPosition).value = this.thumbsLeftPos;
	        document.getElementById(this.hfColIndex).value = this.thumbsColIndex;
	    }
	}	
	
	return this.thumbsColIndex;
}

function FindPage(slider)
{
    var image = document.getElementById(slider.imageId);
    
    for(var k=0; k< slider.identifiersClientIds.length; k++)
    {
        ctr = document.getElementById(slider.identifiersClientIds[k]);
                
        if (ctr!=null)
        {       
            if (ctr.value == image.defaultValue)
            {
                //alert('FindPage '+image.defaultValue);
                
                // w IE: slider.DHTMLgoodies_thumbDiv.childNodes[k].offsetLeft
                // w IE i Firefoxie: slider.DHTMLgoodies_thumbDiv.getElementsByTagName("DIV")[k].offsetLeft
                                      
                return Math.floor(slider.DHTMLgoodies_thumbDiv.getElementsByTagName("DIV")[k].offsetLeft/slider.DHTMLgoodies_viewableWidth);
            }
        }
    }
}