
function slider(unique, container_id, slider_id, arrow_left_id, arrow_right_id, blockWidth, speed1, accelerate, speed2){
    this.unique = unique;
		this.container = document.getElementById(container_id);
    this.slide = document.getElementById(slider_id);
    this.arrow_left = document.getElementById(arrow_left_id);
    this.arrow_right = document.getElementById(arrow_right_id);
    this.arrow_left.onclick = function(){return false;};
    this.arrow_right.onclick = function(){return false;};
    window.setTimeout(unique+".arrow_left.onmousedown = function(){"+unique+".onSlide('left');"+unique+".hold_left=setInterval(function(){"+unique+".onSlide('left')}, 100)}", 0);
    window.setTimeout(unique+".arrow_right.onmousedown = function(){"+unique+".onSlide('right');"+unique+".hold_right=setInterval(function(){"+unique+".onSlide('right')}, 100)}", 0);
    window.setTimeout(unique+".arrow_left.onmouseup = "+unique+".arrow_left.onmouseout = function(){clearInterval("+unique+".hold_left)}", 0);
    window.setTimeout(unique+".arrow_right.onmouseup = "+unique+".arrow_right.onmouseout = function(){clearInterval("+unique+".hold_right)}", 0);
    this.nWidth = this.slide.offsetWidth;
    blockWidth?this.nBlockWidth=blockWidth:this.nBlockWidth=106;
    speed1?this.speed1=speed1:this.speed1=1;
    speed2?this.speed2=speed2:this.speed2=1;
    accelerate?this.accelerate=accelerate:this.accelerate=1;
    this.flag = false;
    this.nPos = 0;
    this.nOffset = 0;
    this.delay = 30;
    this.arrow_test();
}

//Функция движения и анимации слайдера
slider.prototype.process = function(i){
    offset = Math.round(i);
    if(this.nOffset < Math.abs(offset)){
        offset>0?this.nPos+=this.nOffset:this.nPos-=this.nOffset;
        this.nOffset=0;
    }else{
        this.nPos+=offset;
        this.nOffset-=Math.abs(offset);
    }
    this.slide.style.left = this.nPos.toString() + "px";
    if(this.nOffset>0){
        if(Math.abs(i)<this.speed2)
            i<0?i=-this.speed2:i=this.speed2;
        else
            i*=this.accelerate;
        this.timer = setTimeout(this.unique+".process("+i+")", this.delay);
    }else{
        this.flag = false;
        this.arrow_test();
    }
}

//Вызывается при нажатии на кнопку влево или вправо
slider.prototype.onSlide = function(arrow){
		if((arrow!='left' && this.nWidth+this.nPos-this.container.offsetWidth-this.nOffset < this.nBlockWidth) || (arrow=='left' && this.nPos+this.nOffset >= 0)){
    		return false;
    }
    if (!this.flag){
        this.nOffset += this.nBlockWidth;
        this.flag = true;
        arrow == 'left'?this.process(this.speed1):this.process(-this.speed1);
        this.arrow_test(arrow);
    }
    return false;
}

//Функция делает активными или неактивными кнопки влево и вправо
slider.prototype.arrow_test = function(arrow){
    //если надо потушить кнопку влево
    if(this.nPos+this.nOffset >= 0){
    		//левую прячем;
    		this.arrow_left.style.cursor = 'default';
    		this.arrow_left.className = 'hprev';
    }else{
        //левую показываем;
        this.arrow_left.style.cursor = 'pointer';
        this.arrow_left.className = 'ahprev';
    }
    arrow=='left'?temp=0:temp=this.nOffset;
    //если надо потушить кнопку вправо
    if(this.nWidth+this.nPos-this.container.offsetWidth-temp < this.nBlockWidth){
    		//правую прячем;
        this.arrow_right.style.cursor = 'default';
        this.arrow_right.className = 'hnex';
    }else{
    		//правую показываем;
        this.arrow_right.style.cursor = 'pointer';
        this.arrow_right.className = 'ahnex';
    }
}