/**
* @author Admin
*/
var menuRoller = function(params){
	this.offset = 0;
	this.position = this.offset;
	this.timerId = null;
	this.speed = 200;
	this.first = true;
	this.params = params;
	this.setParams(params);

};

menuRoller.prototype.setParams = function(params){
	var obj = this;

	this.reInit();
	if (this.scrolingAreaWidth < this.offset) {
		this.scrolingAreaWidth = this.offset;
	}
	this.scrollPosition();
	this.countStep();

	$(window).resize(function(){
		obj.reInit();
		/*		obj.mask.width(obj.mask.parent().width()-2*50);
		obj.maskWidth = obj.mask.width();
		obj.getLineWidth();
		obj.countStep();
		obj.scrolingAreaWidth = obj.lineWidth - obj.maskWidth0;
		if ((obj.position * -1) > obj.scrolingAreaWidth) {
		obj.position = -1 * obj.scrolingAreaWidth;
		obj.setPosition();
		}
		*/
		//obj.reInit();
	});

	this.leftControl.mousedown(function(){
		obj.leftStep();
		obj.scrollPosition(obj.speed);
		obj.timerId = setInterval(function(){
			obj.leftStep();
			obj.scrollPosition(obj.speed);
		}, obj.speed);
		return false;
	});
	if(this.addHover){
		this.items.hover(function(){
			$(this).addClass('artist_big').find('img').css('width','150px').css('height','150px');
			$(this).addClass('artist_big').next('div').css('margin-left','10px');

		}, function(){
			$(this).addClass('artist_big').find('img').css('width','130px').css('height','130px');
			$(this).removeClass('artist_big').next('div').css('margin-left','30px');;

		});
	}
	this.rightControl.mousedown(function(){
		obj.rightStep();
		obj.scrollPosition(obj.speed);
		obj.timerId = setInterval(function(){
			obj.rightStep();
			obj.scrollPosition(obj.speed);
		}, obj.speed);
		return false;
	});
	this.rightControl.mouseup(function(){
		if (obj.timerId) {
			clearInterval(obj.timerId);
		}
	});
	this.leftControl.mouseup(function(){

		if (obj.timerId) {
			clearInterval(obj.timerId);
		}
	});


};

menuRoller.prototype.rightStep = function(step){
	if (parseInt(step)) {
		this.position -= parseInt(step);
	}
	else {
		this.position -= this.step;
	}
};

menuRoller.prototype.leftStep = function(step){
	if (parseInt(step)) {
		this.position += parseInt(step);
	}
	else {
		this.position += this.step;
	}
};

menuRoller.prototype.setPosition = function(){
	if (this.position < this.offset) {
		this.position = this.offset;
	}
	if ((this.position * -1) > this.scrolingAreaWidth) {
		this.position = -1 * this.scrolingAreaWidth;
	}
	this.line.css('left', this.position + 'px');
};

menuRoller.prototype.scrollPosition = function(time){
	if (!time) {
		time = 60;
	}
	this.position = (parseInt(this.position) ? parseInt(this.position) : 0);
	if ((this.position * -1) > this.scrolingAreaWidth) {
		if (this.timerId) {
			clearInterval(this.timerId);
		}
		this.position = -1 * this.scrolingAreaWidth;
	}
	if (this.position > this.offset) {
		if (this.timerId) {
			clearInterval(this.timerId);
		}
		this.position = this.offset;
	}

	this.line.animate({
	'left': this.position
	}, time, 'linear');
};

menuRoller.prototype.getLineWidth = function(){
	this.lineWidth = 0;
	for (i = 0; i < this.items.size(); i++) {
		this.lineWidth += $(this.items[i]).width()+20;
	}
	//this.lineWidth+=this.items.size()*30;
};



menuRoller.prototype.countStep = function(step){
	if (step) {
		this.step = step;
	}
	else {

		this.step = Math.round(this.items.width() / 2);

	}
	this.step=$(this.items[0]).width()+20;
};

menuRoller.prototype.inArray = function(needle, haystack){
	for (var el in haystack) {

		if (needle === haystack[el]) {
			//alert(el + ' = ' + needle + ' = ' + haystack[el]);
			return el;
		}
	}
	return false;
}

menuRoller.prototype.getElementsShow = function(){
	if(this.items.size()){
		var elemetns = parseInt(this.mask.width()/($(this.items[0]).width()+20));
		
		if(elemetns<this.items.size()){
			this.mask.width(elemetns*($(this.items[0]).width()+20));
		}
	}

}

menuRoller.prototype.reInit = function(){
	var params = this.params;
	this.mask = $(params.mask);
	this.line = $(params.line);
	this.items = this.mask.find(params.items);
	this.leftControl = $(params.leftControl);
	this.rightControl = $(params.rightControl);
	//	this.mask.width(this.mask.parent().width()-2*40);
	this.mask.css({left:0});
	//this.maskWidth = this.mask.width();
	this.addHover = (params.addHover?true:false);
	/*	this.getLineWidth();
	if(this.lineWidth<this.maskWidth){
	this.mask.width(this.lineWidth);
	this.position=0;
	}*/
	//this.maskWidth = this.mask.width();
	//this.scrolingAreaWidth = this.lineWidth - this.mask.width();

	this.mask.width(this.mask.parent().width());
	this.maskWidth = this.mask.width();
	this.getLineWidth();
	this.countStep();
	this.getElementsShow();
	this.line.css('left', '0px');
	if(this.lineWidth<this.maskWidth){
		this.mask.width(this.lineWidth);
		this.position=0;
	}
	
	this.maskWidth = this.mask.width();
	this.scrolingAreaWidth = this.lineWidth - this.maskWidth;
	if ((this.position * -1) > this.scrolingAreaWidth) {
		this.position = -1 * this.scrolingAreaWidth;
		this.setPosition();
	}
	
	this.setPosition();
}


