﻿var Scroll = 
{
    initialize: function(containerId, botButId, topButId, h)
    {
        if(jQuery.browser.safari)  
        {     
            $("#container p").css({"font-size":"13px"});        
            $("#container div").css({"font-size":"13px"});
        }            
        
        
        this.container = $(containerId);
        this.topButton = $(topButId);
        this.botButton = $(botButId);
        this.max = h;
	this.maxY = this.container.height() - this.max;        
	this.speed = 20;
	this.dist = 5;//отвечает за скорость 
	Scroll.obj = this;     
	Scroll.isEvents = (location.href.indexOf("events") > -1)? true : false;
        this.start();
    },
    start: function()
    {
        this.topButton.css({"visibility":"hidden"});
        
        if(this.container.height()<=this.max+10)        
            this.botButton.css({"visibility":"hidden"});        
        
        this.topButton.bind("mousedown", {dir: 1}, this.slide);
	    this.botButton.bind("mousedown", {dir: -1}, this.slide);	    
        this.topButton.bind("mouseup", this.stopSlide);	 
        this.botButton.bind("mouseup", this.stopSlide); 
        this.topButton.bind("mouseout", this.stopSlide);	 
        this.botButton.bind("mouseout", this.stopSlide);         
    },
    slide: function(e)
    {
        Scroll.obj.doSlide = true;
        Scroll.obj.dir = e.data.dir;

        var dir = (Scroll.obj.dir == 1)? "+" : "-";
        var t = dir + "=" + Scroll.obj.dist + "px";
        Scroll.shift(t);
    },
    shift: function(t)
    {
        var nt = parseInt(Scroll.container.css("top")) + Scroll.dist*Scroll.obj.dir;

	if(Scroll.isEvents)
	{
       	    var p = (Scroll.obj.dir == 1)? "+=100px" : "-=100px";
	    nt = parseInt(Scroll.container.css("top")) + 100*Scroll.obj.dir;
	}

        var topCss = (nt>0 && Scroll.obj.dir == 1)? "hidden" : "visible";
        var botCss = (nt<-Scroll.obj.maxY && Scroll.obj.dir == -1)? "hidden" : "visible";
        
        Scroll.obj.topButton.css({"visibility":topCss});
	    Scroll.obj.botButton.css({"visibility":botCss});
	            
        if((nt>0 && Scroll.obj.dir == 1) || (nt<-Scroll.obj.maxY && Scroll.obj.dir == -1))
            Scroll.obj.doSlide = false;

	if(nt<-Scroll.obj.maxY && Scroll.obj.dir == -1 && Scroll.isEvents)
	{
            Scroll.obj.doSlide = true;
	    p = "-="+Math.abs(Scroll.obj.maxY - Math.abs(parseInt(Scroll.container.css("top"))))+"px";
	}
	if(nt>0 && Scroll.obj.dir == 1 && Scroll.isEvents)
	{
            Scroll.obj.doSlide = true;
	    p = "+="+Math.abs(0 - Math.abs(parseInt(Scroll.container.css("top"))))+"px";
	}

        if(Scroll.obj.doSlide)
        {    
	    var speed = (Scroll.isEvents)? 500 : Scroll.obj.speed;	

	    if(Scroll.isEvents)
	    {
                Scroll.container.animate({"top": p}, 450);
		if((nt<-Scroll.obj.maxY && Scroll.obj.dir == -1) || (nt>0 && Scroll.obj.dir == 1))
	            Scroll.obj.doSlide = false;
	    }	
	    else
            	Scroll.container.css({"top": nt+"px"});            

            if(Scroll.obj.doSlide)
                Scroll.obj.timer = setTimeout("Scroll.shift('"+ t+"')", speed);
        }     
    },
    stopSlide: function(e)
    {
        window.clearTimeout(Scroll.obj.timer);
        Scroll.obj.doSlide = false;
        Scroll.obj.topButton.unbind("mousedown");
        Scroll.obj.botButton.unbind("mousedown");   

	Scroll.obj.doSlide = true; 	          
        Scroll.obj.topButton.bind("mousedown", {dir: 1}, Scroll.slide);
	    Scroll.obj.botButton.bind("mousedown", {dir: -1}, Scroll.slide);	        
    }    
}
