function Slide(slideId, menuId){
    var objSlide = document.getElementById(slideId);
    var objMenu = document.getElementById(menuId);
    //	Inicijačizacija pomaknuta na dno	*/



    this.initialize = function() {
    	var tempArrr = new Array();
    	for (var i = 0; i < this.slides.length; ++i) {
    		if (this.slides[i].getElementsByTagName("img").length != 0) {
    			tempArrr.push(this.slides[i]);
    		} else {
    			this.slides[i].style.display = "none";
    		}
    	}
    	this.slides = tempArrr;

    	for (var i = 0; i < this.slides.length; ++i) {

    		this.slides[i].itemPos = "slide-" + i.toString();
    		this.slides[i].style.position = "absolute";
    		this.slides[i].style.zIndex = 10;

    		this.slides[i].style.left = -(Number(this.slides[0].offsetWidth) * i) + "px";

    		this.menuItems[i].idCount = "menu-" + i.toString();
    		this.menuItems[i].onclick = this.menuClick;
    		this.menuItems[i].onmouseover = this.menuOver;
    		this.menuItems[i].onmouseout = this.menuOut;

    		this.menuItems[i].slideId = slideId + "-slide";
    		this.slides[i].slideId = slideId + "-slide";

    		if (i == this.currentItem) {
    			this.menuItems[i].className = "active";
    		} else {
    			this.menuItems[i].className = "inActive";
    		}
    	}
    }
    
   
    
    this.slideNext = function(objSlide){
		
		if(typeof(objSlide)=="undefined"){
			objSlide=this;
		}
		
        clearTimeout(objSlide.delayTimerId);
        objSlide.delayTimerId = null;
        if(objSlide.blocked){
            objSlide.startSlideCountDown();
        }
        if(objSlide.menuItems.length==0 || objSlide.nextItem >= objSlide.menuItems.length ){
			return;
		}
        objSlide.menuItems[objSlide.currentItem].className = "inActive";
        objSlide.menuItems[objSlide.nextItem].className = "active";
        objSlide.blocked = true;
        //  Smjer kretanja animatora
        if(objSlide.currentItem>objSlide.nextItem){
            var a = new Animator(0,
                                Number(objSlide.slides[0].offsetWidth),
                                this.slides[objSlide.currentItem],
                                this.slides[objSlide.nextItem]);
        }else{
            var a = new Animator(0,
                                -Number(objSlide.slides[0].offsetWidth),
                                objSlide.slides[objSlide.currentItem],
                                objSlide.slides[objSlide.nextItem]);
        }
        
        objSlide.currentItem = objSlide.nextItem;
        ++objSlide.nextItem;
        if(objSlide.nextItem>=objSlide.slides.length){
            objSlide.nextItem = 0;
        }
        objSlide.startSlideCountDown();
    }
    
     this.startSlideCountDown = function(){
		if(!this.slides || this.slides.length==0){
			return;
		}
		
		var objSlide = this;
        this.delayTimerId = setTimeout(function(){objSlide.slideNext(objSlide)},objSlide.delay)
    }
    
    this.menuClick = function(){
        if(window[this.slideId].blocked || Number(this.idCount.replace("menu-","")) == window[this.slideId].currentItem ){
            return;
        }
        if(window[this.slideId].delayTimerId!=null){
            clearTimeout(window[this.slideId].delayTimerId);
            window[this.slideId].delayTimerId = setTimeout(function(){window[this.slideId].slideNext(window[this.slideId])},window[this.slideId].delay);
            
        }
        window[this.slideId].nextItem = Number(this.idCount.replace("menu-",""));
        window[this.slideId].slideNext(window[this.slideId]);
        
    }
    
    this.slideNextPrev =function(dir){
		var nextItemId = window[this.slideId].currentItem + Number(dir);
		
		if(window[this.slideId].blocked || nextItemId >= this.slides.length || nextItemId < 0 ){
			return;
		}
		if(window[this.slideId].delayTimerId!=null){
            clearTimeout(window[this.slideId].delayTimerId);
            window[this.slideId].delayTimerId = setTimeout(function(){window[this.slideId].slideNext(window[this.slideId])},window[this.slideId].delay);
        }
        window[this.slideId].nextItem = nextItemId;
        window[this.slideId].slideNext(window[this.slideId]);
    }
    
    this.menuOver = function(){
        var id = Number(this.idCount.replace("menu-",""));
        if(id == window[this.slideId].currentItem){
            return;
        }
        window[this.slideId].menuItems[id].className += " menuHover";
    }
    this.menuOut = function(){
        var id = Number(this.idCount.replace("menu-",""));
        if(id == window[this.slideId].currentItem){
            return;
        }
        window[this.slideId].menuItems[id].className = window[this.slideId].menuItems[id].className.replace(" menuHover","");
    }
    
    if(!objSlide||!objMenu){
        return;
    }
    window[slideId + "-slide"] = this;
    
    this.slides = null;
    this.menuItems = null;
    this.currentItem = 0;
    this.nextItem = 1;
    this.delay = 12000;
    this.delayTimerId = null;
    
    this.blocked = false;
    
    this.slides = objSlide.getElementsByTagName("li");
    this.menuItems = objMenu.getElementsByTagName("li");
    if(this.slides.length == 0 || this.menuItems.length == 0 || this.slides.length > this.menuItems.length ){
        return;
    }
    
    this.initialize();    
}

function Animator(from, to, obj1, obj2){
    this.points = {
        // moving a box "from" and "to", eg. on the X coordinate
        'from': from,
        'to': to
    }
    this.speed = 20;
    this.delayTimerId = null;
    window.animator = this;
    
    this.obj1 = obj1;
    this.obj2 = obj2;
    
    this.animDelta = (this.points.to - this.points.from); // how far to move
    // animation curve: "sum of numbers" (=100%), slow-fast-slow
    this.tweenAmount = [1,3,5,7,9,10,10,10,10,10,9,7,5,3,1,];
    this.currentFrame = 0;
    // move from X to Y over frames as defined by tween curve
    this.frameCount = this.tweenAmount.length;
    this.frames = []; // array of coordinates we'll compute
    this.newFrame = this.points.from; // starting coordinate
    
    
    for (var i=0; i<this.frameCount; i++) {
       // calculate the points to animate
       this.newFrame += (this.animDelta * (this.tweenAmount[i]/100));
       this.frames[i] = this.newFrame;
    }
    this.frames[this.frameCount-1] = this.points.to;
    
	doAnim(this);

}

function doAnim(animator){
        animator.obj1.style.left = Math.ceil(animator.frames[animator.currentFrame]) + "px";
        
		animator.obj2.style.zIndex=100;
		animator.obj1.style.zIndex=100;
		
        if(animator.points.to<animator.points.from){
            animator.obj2.style.left = Number(animator.obj1.offsetWidth)+Math.ceil(animator.frames[animator.currentFrame]) + "px";
        }else{
            animator.obj2.style.left = Math.ceil(animator.frames[animator.currentFrame]) - Number(animator.obj1.offsetWidth) + "px";
        }
        animator.currentFrame++;
        
        if(animator.currentFrame>=animator.frameCount){
            animator.currentFrame = 0;
            clearTimeout(animator.delayTimerId);
            animator.delayTimerId = null;
            window[animator.obj1.slideId].blocked = false;
        }else{
            animator.delayTimerId = setTimeout(function(){doAnim(animator)},animator.speed);
        }
    }
    

