function navPanelGallery(maskBlockId, scrollBlock){
	var self = this;
	//текущее изображение
	var currentImage = 0;
	//большое изображение
	var bigPhoto = $('#big_photo').find('img.photo');
	var arrowNextImage = $('#big_photo').find('a.next_image');
	var arrowPreviousImage = $('#big_photo').find('a.prev_image');
	arrowPreviousImage.click(function(){
		self.previousImage();
		return false;
	})
	arrowNextImage.click(function(){
		self.nextImage();
		return false;
	})
	//подпись под изображением
	var bigPhotoDesc = $('#big_photo').find('p.photo_description');
	//размер изображения в стандартном режиме
	bigPhotoSizeStd = 544;
	//размер изображения в полноразмерном режиме
	bigPhotoSizeFull = 868;
	//панель упарления размером
	var photoSizeControl = $('#photo_control');
	var buttonStdMode = photoSizeControl.find('.primary a');
	buttonStdMode.click(function(){
		if (wideMode){
			var state = wideMode;
			self.resizeBegin();
			widescreenmode();
			var timer = setInterval(function(){
				if (state != wideMode) {
					clearInterval(timer)
					self.resizeEnd();
				}
			},200)
		}
		return false;
	});
	var buttonFullMode = photoSizeControl.find('.fullsize a');
	buttonFullMode.click(function(){
		if (!wideMode){
			var state = wideMode;
			self.resizeBegin();
			widescreenmode();
			var timer = setInterval(function(){
				if (state != wideMode) {
					clearInterval(timer)
					self.resizeEnd();
				}
			},200)
		}
		return false;
	});
	//маска отображения
	var maskBlock = $(maskBlockId);
	//установка начального сдвига (позднее возможно сохранение позиции сдвига)
	maskBlock.scrollLeft(0);
	//контейнер изображений
	var scrolledBlock = maskBlock.find('ul');
	//список изображений
	var imageList = scrolledBlock.find('a');
	//колличество элементов
	var countImages = imageList.length;
	//ширина элемента
//	var previewWidth = imageList.eq(0).parent().outerWidth();
	var previewWidth = 156;
	
	//установка ширины контейнера изображений
	scrolledBlock.css('width',(countImages*previewWidth) + 'px');
	//установка ширины видимой области
	var widthMaskBlock;
	maskBlockWidth();
	//ширина видимой области
	var imageListPosLeftMin = 0;
	var imageListPosLeftMax = scrolledBlock.width() - widthMaskBlock + parseInt(scrolledBlock.css('margin-left'));
	
	function maskBlockWidth(){
		if ($.browser.mozilla || $.browser.safari || $.browser.opera || ($.browser.msie && ($.browser.version == '8.0' || $.browser.version == '7.0'))){
			maskBlock.css('width','auto');
		} else {
			var marginSum = parseInt(maskBlock.css('margin-left')) + parseInt(maskBlock.css('margin-right'));
			maskBlock.width(100)
			var parentWidth = maskBlock.parent().width()
			maskBlock.width(parentWidth - marginSum);
		}
		widthMaskBlock = maskBlock.width();
	}
	
	imageList.click(function(c){
		var link = $(this);
		var linkRel = link.attr('rel');
		var linkTitle = link.attr('title');
		//проверяем не является ли это изображение текущим
		if(currentImage != linkRel){
			//снимаем выделение с текущего изображения
			imageList.eq(currentImage).removeClass('current');
			//устанавливаем выделение на текущий
			link.addClass('current');
			currentImage = linkRel;
			var imgPreviewSrc = link.find('img').attr('src');
			var postfix = (wideMode) ? '_5' : '_2';
			var imgURL = '/img/gallery/images/thumb/' + getImgName(imgPreviewSrc) + postfix + imgPreviewSrc.substring(imgPreviewSrc.lastIndexOf('.'));
			bigPhoto.attr('src','/img/trans.gif');
			bigPhoto.attr('src',imgURL);
			bigPhotoDesc.html(linkTitle);
			scrollToCurrentImage();
			if(currentImage == 0){
				arrowPreviousImage.css('visibility','hidden')
			} else if (currentImage == countImages-1){
				arrowNextImage.css('visibility','hidden')
			} else {
				arrowPreviousImage.css('visibility','visible');
				arrowNextImage.css('visibility','visible');
			}
		}
		return false;
	});
	
	//полоса прокрутки
	var scrollLine = $(scrollBlock);
	if (widthMaskBlock >= (scrolledBlock.width() + parseInt(scrolledBlock.css('margin-left')))){
		scrollLine.hide();
	}
	//бегунок
	var scrollLineBegun = scrollLine.find('span.scroll');
	//ширина бегунка
	var scrollLineBegunWidth = 94;
	//var scrollLineBegunWidth = scrollLineBegun.outerWidth();
	var scrollLineBegunContainerPaddingLeft = parseInt(scrollLineBegun.parent().css('padding-left'));
	//минимальный сдвиг бегунка
	var scrollPosLeftMin = 0;
	//максимальный сдвиг бегунка
	var scrollPosLeftMax = scrollLineBegun.parent().width() - scrollLineBegunWidth;
	//параметры синхронизации
	//const SYNC_MODE = {'scrollToImageList' : 0,'imageListToScroll' : 1}
	var syncCoeff = imageListPosLeftMax / scrollPosLeftMax;
	//нажатие на бегунок
	scrollLineBegun.mousedown(function(e){
		var offsetLeft = scrollLine.offset().left + scrollLineBegunContainerPaddingLeft;
		var cursorPosInBegun = scrollLineBegun.offset().left - e.pageX;
		
		$(document).mousemove(function(m){
			var left = m.pageX - offsetLeft + cursorPosInBegun;
			if (left < scrollPosLeftMin){
				left = scrollPosLeftMin;
			} else if (left > scrollPosLeftMax){
				left = scrollPosLeftMax;
			}
			scrollLineBegun.css('left', left);
			positionLeftSync(left,'scrollToImageList');
		});
		$(document).mouseup(function(){
			$(document).unbind("mousemove");
		});
	});
	//синхронизация сдвига бегунка и списка изображений
	function positionLeftSync(left,mode){
		switch(mode){
			case 'scrollToImageList' : {
				maskBlock.scrollLeft(syncCoeff * left);
			}
			break;
			case 'imageListToScroll' : {
				scrollLineBegun.css('left',left / syncCoeff);
			}
			break;
		}
	}
	
	//прокрутка карусели к изображению с заданным индексом
	function scrollToCurrentImage(){
		var cImage = imageList.eq(currentImage);
		var maskLeftScroll = maskBlock.scrollLeft();
		var leftScroll = 0;
		if ((maskLeftScroll + widthMaskBlock - previewWidth) < (currentImage)*previewWidth){
			maskLeftScroll = (currentImage*1 +1)*previewWidth - widthMaskBlock + 130;
		} else if ((maskLeftScroll + previewWidth) >= currentImage*previewWidth){
			maskLeftScroll = (currentImage*1 - 1)*previewWidth;
		}
		if (maskLeftScroll < imageListPosLeftMin){
			maskLeftScroll = imageListPosLeftMin
		} else if (maskLeftScroll > imageListPosLeftMax){
			maskLeftScroll = imageListPosLeftMax;
		}
		maskBlock.scrollLeft(maskLeftScroll)
		positionLeftSync(maskLeftScroll,'imageListToScroll');
	}
	
	/**
	 * извлечение урла изображения без префиксов и постфиксов
	 * при невозможности возвращает undefined
	 */
	function getImgName(imgSrc){
		var patternName = /\w+_/;
		imgName = undefined;
		if (patternName.test(imgSrc)){
			var imgName = patternName.exec(imgSrc)[0];
			imgName = imgName.substring(0,imgName.length - 1);
		}
		return imgName;
	}
	
	this.nextImage = function(){
		if (currentImage < countImages -1) {
			imageList.eq(currentImage*1 + 1).click();
		}
	}
	this.previousImage = function(){
		if (currentImage > 0) {
			imageList.eq(currentImage*1 - 1).click();
		}
	}
	
	this.resizeBegin = function(){
		//скрытие изображения
		bigPhoto.css('visibility','hidden');
		//скрытие панели управления размером
		photoSizeControl.css('visibility','hidden');
	}
	this.resizeEnd = function(){
		//пересчет ширины маски
		maskBlockWidth();
		if (widthMaskBlock >= (scrolledBlock.width() + parseInt(scrolledBlock.css('margin-left')))){
			scrollLine.hide();
		} else {
			scrollLine.show();
		}
		scrollPosLeftMax = scrollLineBegun.parent().width() - scrollLineBegunWidth;
		imageListPosLeftMax = scrolledBlock.width() - widthMaskBlock + parseInt(scrolledBlock.css('margin-left'));
		syncCoeff = imageListPosLeftMax / scrollPosLeftMax;
		maskBlock.scrollLeft(maskBlock.scrollLeft());
		positionLeftSync(maskBlock.scrollLeft(),'imageListToScroll');
		//пересчет ширины полосы прокрутки
		//перепозиционирование бегунка на полосе прокрутки
		//замена урла изображения ссылкой на картинку актуального размера
		//отображение изображения
		var bigPhotoSrc = bigPhoto.attr('src')
		if (wideMode){
			photoSizeControl.width(868);
			bigPhoto.width(868);
			bigPhoto.height(519);
			bigPhoto.attr('src','/img/trans.gif');
			bigPhoto.attr('src','/img/gallery/images/thumb/' + getImgName(bigPhotoSrc) + '_5' + bigPhotoSrc.substring(bigPhotoSrc.lastIndexOf('.')))
			arrowNextImage.add(arrowPreviousImage).height(519)
		} else {
			photoSizeControl.width(544);
			bigPhoto.width(544);
			bigPhoto.height(325)
			bigPhoto.attr('src','/img/trans.gif');
			bigPhoto.attr('src','/img/gallery/images/thumb/' + getImgName(bigPhotoSrc) + '_2' + bigPhotoSrc.substring(bigPhotoSrc.lastIndexOf('.')))
			arrowNextImage.add(arrowPreviousImage).height(325)
		}
		
		bigPhoto.css('visibility','visible');
		//отображение панели управления размером
		photoSizeControl.css('visibility','visible');
		
	}
	
	$('#toggleScreenMode').unbind('click').click(function(){
		/*var state = wideMode;
		self.resizeBegin();
		widescreenmode();
		var timer = setInterval(function(){
			if (state != wideMode) {
				clearInterval(timer)
				self.resizeEnd();
			}
		},200)*/
		if (wideMode){
			buttonStdMode.click();
		} else {
			buttonFullMode.click();
		}
		return false;
	});

	if (wideMode){
		self.resizeEnd();
	}
}


