/**
* @author Admin
*/
var menuRoller = function(params){
	this.offset = 85;
	this.position = this.offset;
	this.timerId = null;
	this.speed = 200;
	this.first = true;
	this.isFasad = 0;
	this.opened=false;
	this.page='first';
	this.serverPath = '/'
	this.setParams(params);

};

menuRoller.prototype.setParams = function(params){
	var obj = this;
	this.mask = $(params.mask);
	this.line = $(params.line);
	this.items = $(params.items);
	this.ramka = $(params.ramka);
	this.page = params.page;

	this.serverPath = (params.serverPath ? params.serverPath : '/');
	if (params.fasad) {
		this.fasad = $(params.fasad);
		this.isFasad = this.fasad.size();
	}
	this.up = this.ramka.find('#up');

	this.up.hide();
	if(this.page=='second'){
		this.up.find('img').attr('src','/images/down.gif');
		this.up.hide();
	}
	this.city = $(params.city);
	this.cities = params.cities;
	this.ramkaWidth = this.ramka.width();
	this.ramkaOffset = (this.ramkaWidth - this.items.width()) / 4;
	this.drawCities();
	this.setActiveElement(params.id);//params.id);
	this.leftControl = $(params.leftControl);
	this.rightControl = $(params.rightControl);
	this.ramka.css('cursor', 'pointer');

	var p = this.activeElement.position();
	this.maskWidth = this.mask.width();
	this.getLineWidth();

	this.scrolingAreaWidth = this.lineWidth - this.mask.width() + this.offset;
	if (this.scrolingAreaWidth < this.offset) {
		this.scrolingAreaWidth = this.offset;
	}
	this.position = -1 * (p.left-this.offset);
	this.scrollPosition();
	this.countStep();

	$(window).resize(function(){
		obj.maskWidth = obj.mask.width();
		obj.scrolingAreaWidth = obj.lineWidth - obj.mask.width() + obj.offset;
		if ((obj.position * -1) > obj.scrolingAreaWidth) {
			obj.position = -1 * obj.scrolingAreaWidth;
			obj.setPosition();
		}

	});

	this.leftControl.mousedown(function(){
		obj.leftStep();
		obj.scrollPosition(obj.speed);
		obj.timerId = setInterval(function(){
			obj.leftStep();
			obj.scrollPosition(obj.speed);
		}, obj.speed);
		return false;
	});
	this.items.hover(function(){
		if (this != obj.activeElement[0]) {
			$(this).find('img').fadeTo('10', 1);
		}
	}, function(){
		if (this != obj.activeElement[0]) {
			$(this).find('img').fadeTo('10', 0.5);
		}
	})
	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);
		}
	});
	this.items.click(function(){
		/*  obj.activeElement.find('img').fadeTo(100, 0.5);
		obj.setActiveElement($(this).find('img').attr('rel'));*/
		if (this != obj.activeElement[0]) {

			obj.elementClick($(this).find('img').attr('rel'));

		}
		return false;
	});

	if (obj.page == 'second') {
		this.ramka.hover(function(){
			$(this).find('#up').show();
		},function(){
			$(this).find('#up').hide();
		});
	}
	this.ramka.find('#up').click(function(){

		if (obj.page != 'second') {
			window.location = obj.serverPath + 'shop/' + obj.activeElement.find('img').attr('rel');
		}else{
			if (!obj.opened) {
				var docWidth = $(document).width();
				var img = obj.fasad.find('img#fasad_img');
				obj.up.find('img').attr('src','/images/up.gif');
				img.css('margin-left',0);
				obj.fasad.show(200,function(){
					if(img.width()>docWidth){
					left = (img.width()-docWidth)/2;
					img.css('margin-left',(-1*left)+'px');
				}
				});
				
				
				
				obj.mask.parent().animate({
				'top': '550'
				}, 200);
				obj.opened=true;
				return false;
			}else{
				obj.fasad.hide(200);
				obj.up.find('img').attr('src','/images/down.gif');
				obj.mask.parent().animate({
				'top': '120'
				}, 200);
				obj.opened=false;
				return false;
			}
		}
	})

	this.ramka.click(function(){

		if (obj.page != 'second') {
			window.location = obj.serverPath + 'shop/' + obj.activeElement.find('img').attr('rel');
		}else{
			if (!obj.opened) {
				obj.up.find('img').attr('src','/images/up.gif');
				obj.fasad.show(200);
				obj.mask.parent().animate({
				'top': '550'
				}, 200);
				obj.opened=true;
				return false;
			}else{
				obj.fasad.hide(200);
				obj.up.find('img').attr('src','/images/down.gif');
				obj.mask.parent().animate({
				'top': '120'
				}, 200);
				obj.opened=false;
				return false;
			}
		}
	})

};

menuRoller.prototype.elementClick = function(id){
	this.activeElement.find('img').fadeTo(100, 0.5);
	var header = $('#fotogalery');
	//header.find('#nazvanie').html(''); закоментировано 31.03.2011, при вызове даного метода плывет верстка
	header.find('#content_main_page').html('<table cellpadding="0" cellspacing="0" border="0" width="100%" height="560"><tr><td align="center" valign="middle"><img id="fasad_loader"  src="/images/loader.gif" /></td></tr></table>');
	header.find('#content_main_page').load('/shop_ajax/'+id);
	this.setActiveElement(id);
}
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.setActiveElement = function(activeElementId){
	this.activeElementId = (parseInt(activeElementId) > 0 ? parseInt(activeElementId) : 0);
	this.activeElement = $(this.items[0]);
	if (this.activeElementId) {
		//this.activeElement = $(this.items[0]);
		//this.line.find('');
		for (i = 0; i < this.items.size(); i++) {
			var el = $(this.items[i]).find('img[rel=' + activeElementId + ']');
			if (el.size()) {
				this.activeElement = $(this.items[i]);
				break;
			}
		}
	}
	this.activeElementId = $(this.activeElement).find('img').attr('rel');
	this.items.find('img').fadeTo(0, 0.5);
	this.activeElement.find('img').fadeTo(0, 1);
	this.items.find('a[id=shop_name_link]').removeClass('shop_name_a');
	this.activeElement.find('a[id=shop_name_link]').addClass('shop_name_a');
	var p = this.activeElement.position();
	var oldPosition = this.position;
	/*if (p.left < (this.position*-1)) {

	this.position = -1*(p.left - this.offset-this.maskWidth/3);
	this.scrollPosition(Math.round((Math.max(this.position, oldPosition) - Math.min(this.position, oldPosition))));
	}
	if ((p.left + this.activeElement.width()) > (this.maskWidth - this.position)) {
	this.position = -1 * (p.left - this.offset-this.maskWidth/3);
	this.scrollPosition(Math.round((Math.max(this.position, oldPosition) - Math.min(this.position, oldPosition))));
	}*/
	this.position = -1 * (p.left - this.offset - this.maskWidth / 3);
	this.scrollPosition(Math.round((Math.max(this.position, oldPosition) - Math.min(this.position, oldPosition))));
	this.activeCity();
	this.scrollRamka();
	if (this.isFasad) {
		this.changeFasad();
	}
};

menuRoller.prototype.changeFasad = function(){
	//this.fasad.find('img#fasad_img').hide();
	var img = this.fasad.find('img#fasad_img');
	var loader = this.fasad.find('img#fasad_loader');
	var leftPos=0;
	img.css('cursor', 'pointer');
	img.unbind('click');
	img.click(function(){
		window.location = obj.serverPath + 'shop/' + obj.activeElement.find('img').attr('rel');
	});
	var docWidth = $(document).width();
	//img.removeAttr('onclick');
	var obj = this;
	img.fadeTo(100, 0, function(){
		img.hide();
		img.css('margin-left',0);
		loader.show();
		img[0].src = obj.activeElement.find('a[id=shop_name_link]').attr('href');
		if (obj.first) {
			loader.hide();
			img.show();
			if(img.width()>docWidth){
				leftPos = (img.width()-docWidth)/2;
				img.css('margin-left',(-1*leftPos)+'px');
			}
			img.fadeTo(100, 1);
			obj.first = false;
		}
		else {

			if ($.browser.msie) {
				img[0].onreadystatechange = function(){
					var left=0;
					loader.hide();
					img.show();
					imgWidth=img.width();
					if(imgWidth>docWidth){
						left = (imgWidth-docWidth)/2;
						img.css('margin-left',(-1*left)+'px');
					}
					img.fadeTo(100, 1);
				}
			}
			else {
				img[0].onload = function(){
					var left=0;
					loader.hide();
					img.show();
					imgWidth=img.width();
					if(imgWidth>docWidth){
						left = (imgWidth-docWidth)/2;
						img.css('margin-left',(-1*left)+'px');
					}
					img.fadeTo(100, 1);
				}
			}
		}
	});
}

menuRoller.prototype.getLineWidth = function(){
	this.lineWidth = 0;
	for (i = 0; i < this.items.size(); i++) {
		this.lineWidth += $(this.items[i]).width();
	}
};

menuRoller.prototype.scrollRamka = function(){
	var p = this.activeElement.position();
	var p2 = this.ramka.position();
	var speed = Math.round((Math.max(p.left, p2.left) - Math.min(p.left, p2.left)));
	this.ramka.animate({
	'left': p.left - this.ramkaOffset
	}, speed);
}

menuRoller.prototype.countStep = function(step){
	if (step) {
		this.step = step;
	}
	else {
		this.step = Math.round(this.items.width() / 2);
	}
};
menuRoller.prototype.drawCities = function(){
	var ul = this.city.find('ul');
	var obj = this;
	ul.html('');
	for (var el in this.cities) {
		ul.append('<li><a class="menu" href="#" id="' + this.cities[el].id[0] + '">' + this.cities[el].name + '</a></li>');

	}
	ul.find('a').click(function(){
		//alert(this.id);
		/*ul.find('a').removeClass('menu_a');
		$(this).addClass('menu_a');*/
		obj.elementClick(this.id);
		return false;
	});
};

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.activeCity = function(){
	var ul = this.city.find('ul');
	var obj = this;
	//alert(this.activeElementId);
	for (var el in this.cities) {
		if (this.inArray(this.activeElementId, this.cities[el].id)) {
			ul.find('a').removeClass('menu_a');

			ul.find('a#[id=' + this.cities[el].id[0] + ']').addClass('menu_a');
			break;
		}
	}
}




