﻿// JScript File

function hscroll(viewportId,holderId,innerholderId,itemwidth,spacewidth,rightmargin,itemcount,aspeed,isfirefox,holderHeight){
    var isFirefox = (isfirefox!=null)?(isfirefox):(BrowserDetect.browser=="Firefox");
    var holderhg = (holderHeight!=null)?holderHeight:78
    
    var viewportDiv=document.getElementById(viewportId); 
    var holderDiv=document.getElementById(holderId);
    var innerDiv=document.getElementById(innerholderId);
    var itemWidth=itemwidth-spacewidth;
    var spaceWidth=spacewidth;
    var width=itemwidth*itemcount - spacewidth - rightmargin;
    var viewportwidth=viewportDiv.offsetWidth;

	this.items=itemcount;
    var speed = (aspeed!=null)?aspeed:1;
    speed = isFirefox?speed:speed*2;
    
    viewportDiv.style.overflow = 'hidden';

    holderDiv.style.height = holderhg+'px';
    holderDiv.style.whitespace = 'nowrap';
    holderDiv.style.left = '0px';
    
    innerDiv.style.whitespace = 'nowrap';
    innerDiv.style.left = '0px';
    innerDiv.style.width = (width+rightmargin) + 'px';
        
    if (isFirefox) {
        holderDiv.style.width = viewportwidth + 'px';
        holderDiv.style.overflow = 'auto';
        holderDiv.scrollLeft = 0;
    }
    else {
        holderDiv.style.width = (width+rightmargin) + 'px';
        holderDiv.style.overflow = 'hidden';
    }
//    alert(holderDiv.style.width);
    
    var viewportitems = parseInt((viewportwidth+spacewidth+rightmargin)/itemwidth);
    //citaj('viewportwidth: ' + viewportwidth+', spacewidth: ' + spacewidth + ', rightmargin: ' + rightmargin + ', itemwidth: ' + itemwidth);
    var currleftitem = 0;
    var maxleftitem = 3;//this.items-viewportitems;
   // citaj('viewportitems: ' + viewportitems+', items: ' + this.items + ', maxleftitem: ' + maxleftitem);

    var currpos=0;
    var targetpos=0;

    this.moveRight=function(places){
        if (places==null) places = 1;
		//citaj('place: ' + places + ', maxleftitem; ' + maxleftitem + ', currleftitem: ' + currleftitem);

        this.slide(Math.min(currleftitem+Math.abs(places), maxleftitem) - currleftitem);
    }
    
    this.moveLeft=function(places){
        if (places==null) places = 1;
		//citaj('place: ' + places + ', maxleftitem; ' + maxleftitem + ', currleftitem: ' + currleftitem);

        this.slide(Math.max(currleftitem-Math.abs(places), 0) - currleftitem);   
    }
   
    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 - 1) && (currleftitem+offset) >= 0 && offset!=0){
            currleftitem+=offset;
            targetpos=-(itemWidth+spaceWidth)*currleftitem;
			
			
            if (holderDiv.slideint){window.clearInterval(holderDiv.slideint);holderDiv.slideint=null;}

            if(isFirefox) {
                holderDiv.slideint=window.setInterval(
                    function(){                               
                        if (currpos > targetpos) {
                            step = -Math.ceil(Math.sqrt(Math.abs(targetpos-currpos)*speed));
                        }
                        else if (currpos < targetpos){
                            step = Math.abs(Math.sqrt(Math.abs(targetpos-currpos)*speed));
                        }
                        
                        currpos+=step;
                        
                        if ((step<0 && currpos<targetpos) || (step>0 && currpos>targetpos)) { 
                            currpos=targetpos;             
                        }
                        
                        holderDiv.scrollLeft = -currpos;
                        
                        if (currpos==targetpos){
                            window.clearInterval(holderDiv.slideint);
                            holderDiv.slideint = null;
                        }
                    }            
                    ,20
                );
            }
            else {
                holderDiv.slideint=window.setInterval(
                    function(){                               
                        if (currpos > targetpos) {
                            step = -Math.ceil(Math.sqrt(Math.abs(targetpos-currpos)*speed));
                        }
                        else if (currpos < targetpos){
                            step = Math.abs(Math.sqrt(Math.abs(targetpos-currpos)*speed));
                        }
                        
                        currpos+=step;
                        
                        if ((step<0 && currpos<targetpos) || (step>0 && currpos>targetpos)) { 
                            currpos=targetpos;             
                        }

                        holderDiv.style.left= currpos + 'px';  
                        
                        if (currpos==targetpos){
                            window.clearInterval(holderDiv.slideint);
                            holderDiv.slideint = null;
                        }
                    }      
                    ,20
                );
            }
        } 
    } 
}



// BrowserDetect
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();


function citaj(msg)
{
	alert(msg);
}
