﻿// HScroll
// By Denis Korenic
// rework 2007/03/13 by Gordan Novoselec

function hscroll(viewportId,itemwidth,spacewidth,rightmargin,itemcount,aspeed,titleId,useimg){
   
    var title=document.getElementById(titleId);
    
    var viewportDiv=document.getElementById(viewportId);
    viewportDiv.scrollLeft=0;
    var itemWidth=itemwidth-spacewidth;
    var spaceWidth=spacewidth;
    var width=itemwidth*itemcount - spacewidth - rightmargin;
    var viewportwidth=viewportDiv.offsetWidth;
     
    var holderDiv=document.createElement("div")
    holderDiv.innerHTML=viewportDiv.innerHTML
    holderDiv.setAttribute('style','width:0px');
    holderDiv.id=(viewportId + '_holder');
    viewportDiv.innerHTML='';
    viewportDiv.appendChild(holderDiv);
    
    holderDiv=document.getElementById(viewportId + '_holder');
    holderDiv.style.width=(width + rightmargin) + 'px';
    //alert(holderDiv.style.width)
    
    if (!useimg){
    this.imgitems=holderDiv.getElementsByTagName("img");
    }
    
    this.items=itemcount;
    this.holderDiv=holderDiv;
     
    var viewportitems = parseInt((viewportwidth+spacewidth+rightmargin)/itemwidth);
    

    var currleftitem = 0;
    
    this.curritem=function(){return currleftitem+1};
    this.itemcount=function(){return itemcount}
    
    
    var maxleftitem = this.items-viewportitems;

    var currpos=0;
    var targetpos=0;
    
    viewportDiv.scrollLeft=0;
    
    if (this.imgitems) this.imgitems[0].src=this.imgitems[0].alt;

    this.moveRight=function(places){        
        if (places==null) places = 1;
        this.slide(Math.min(currleftitem+Math.abs(places), maxleftitem) - currleftitem);
        
        if (title && this.imgitems){
             var t=this.imgitems[currleftitem].title;
             if (t=''){
                title.style.display='none';
             }
             else
             {
                title.style.display='block';
                title.innerHTML=this.imgitems[currleftitem].title
             }
        }
    }
    
    this.moveLeft=function(places){
        if (places==null) places = 1; 
        this.slide(Math.max(currleftitem-Math.abs(places), 0) - currleftitem); 
        
        if (title && this.imgitems){
             var t=this.imgitems[currleftitem].title;
             if (t=''){
                title.style.display='none';
             }
             else
             {
                title.style.display='block';
                title.innerHTML=this.imgitems[currleftitem].title
             }
        }
    }
   
    this.moveTo=function(place){
        if (place!=null)
        this.slide(Math.max(0,Math.min(place, maxleftitem))-currleftitem);
        
    }


    this.slide=function(offset){
        if ((currleftitem+offset) <= maxleftitem && (currleftitem+offset) >= 0 && offset!=0){
            
            currleftitem+=offset;    
            
            if (this.imgitems){
                var img=new Image();
                img.onload=function(){
                    this.slika.src=this.src;
                    
                }
                
                        
                img.slika=this.imgitems[currleftitem];
                img.src=this.imgitems[currleftitem].alt;
            }
             
            targetpos=-(itemWidth+spaceWidth)*currleftitem;
            
            
            if (viewportDiv.slideint){window.clearInterval(viewportDiv.slideint);viewportDiv.slideint=null;}

                
                viewportDiv.slideint=window.setInterval(
                    function(){                               
                        if (currpos > targetpos) {
                            step = -Math.ceil(Math.sqrt(Math.abs(targetpos-currpos)*aspeed));
                        }
                        else if (currpos < targetpos){
                            step = Math.abs(Math.sqrt(Math.abs(targetpos-currpos)*aspeed));
                        }
                        
                        currpos+=step;
                        
                        
                        if ((step<0 && currpos<targetpos) || (step>0 && currpos>targetpos)) { 
                            currpos=targetpos;             
                        }
                        
                        viewportDiv.scrollLeft = -currpos;
                        
                        if (currpos==targetpos){
                            window.clearInterval(viewportDiv.slideint);
                            viewportDiv.slideint = null;
                        }
                    }            
                    ,40
                );
           
            }
            
            
    }
}