function Slider (slides, gallery_content, slideCallBack) {
	
	this.crtNum = 0;
	this.countSlide = slides.length;
	this._slideCallBack = function () {
		slideCallBack.call ()
	};
	slideCallBack.call ();
	
	this.crtSlide = slides [this.crtNum];
	this.crtSlide.select ();
	
	this.slides = slides;
	this.gallery_content = gallery_content;
	
	
	// public functions ---------------------
	this.next = Slider_next;
	this.prev = Slider_prev;
	this.goto = Slider_goto;
	
	this.getCrtNum = Slider_getCrtNum;
	this.getCount = Slider_getCount;
	
	this.isPrev = Slider_isPrev;
	this.isNext = Slider_isNext;
	// --------------------------------------
	
	
	// private functions
	this._moveTo = Slider_moveTo;
	this._update = Slider_update;
}

function Slider_isPrev () {
	if (this.crtNum -1 >= 0)	
		return true;
	else return false;
}
function Slider_isNext () {
	if (this.crtNum +1 < this.countSlide)
		return true;
	else return false;
}

function Slider_moveTo (coord) {
	this.gallery_content.animate ({ 
	        left: -coord+"px"
	    }, 850, (
		
			(function(slider){ 
				return function(){
		     		slider._slideCallBack ();
					}
				}
			) (this)
		
		
		))
}

	

function Slider_getCrtNum () {
	return this.crtNum;
}
function Slider_getCount () {
	return this.countSlide;
}

function Slider_update () {
	if (this.crtSlide != null) 
		this.crtSlide.unselect ();
	this.crtSlide = this.slides [this.crtNum];
	this.crtSlide.select ();
	this._moveTo (this.slides [this.crtNum].get_coordinate ());
}

function Slider_goto (num) {
	this.crtNum = num;
	this._update ();
}


function Slider_prev () {
	if (this.crtNum -1 >= 0) {
		this.crtNum --;
		
	}
	else {
		this.crtNum = this.countSlide -1;
	}
	this._update ();
}

function Slider_next () {
	if (this.crtNum +1 < this.countSlide) {
		this.crtNum ++;
	
	}
	else this.crtNum = 0;
	
	this._update ();
	
}


