// JavaScript Document

function navigationMoseOver() {

		// Выстраиваем позицию стрелок навигации относительно картинок
		var imgsh = jQuery("#gallery_image_single").parent('td').height();
		var imgdh = jQuery("#gallery_image_left").parent('td').height();
		var top = 0;				
		if(imgsh != '0') img = imgsh; else img = imgdh;

		top = ( ( img / 2 ) | 0 )-28;

		if( top==0 ) top='45%'; else top = top+'px';
		
		jQuery(".gallery #next-img, .gallery #prev-img").css("top",top);
		
		
		jQuery(".gallery_preview > .image_navigation").show();

}

	var someImagesHasTitle = false;
	var someImagesHasAlt = false;

jQuery(function() {

	var isLongImage = false;
	var longWidth = 0;
	var longPosition = 0;
	var longStep = 650;
	var aniTime = 350;
	
    //определим максимальную высоту описания у картинок. это нужно, чтобы не скакало при листании
    var doubleWidth = '343px';
    var singleWidth = '705px';
    var maxLength = 0;
    var thumbsDisplay = $(".gallery_thumbnails").css('display');
    $(".gallery_thumbnails").css('display', 'block');
    $(".single_img_wrap .image-legend, .double_left .image-legend, .double_right .image-legend").each(function(){
    	var holderClass = $(this).parent('div').attr('class');
    	if (holderClass == 'single_img_wrap') {
    		$(this).css("width", singleWidth);
    	} else if ( (holderClass == 'double_left') || (holderClass == 'double_right') ) {
    		$(this).css("width", doubleWidth);
    	}
    	
    	var len =  $(this).height();
    	
    	var img;
    	if (img = $(this).prev('a').children('img')) {
            if(img.attr('title')) {
                    someImagesHasTitle = true;
            }
            if(img.attr('alt')) {
                    someImagesHasAlt = true;
            }
    	}
        if (len > maxLength) {
            maxLength = len;
        }
    });
    $(".gallery_thumbnails").css('display', thumbsDisplay);
    $("<style type=\'text/css\'> .image-legend-text{ height: " + maxLength + "px;} </style>").appendTo("head");
    
    
    
    //покажим навигацию сначала
    if (gallery_show_navigation == 1) {
		jQuery("#gallery_image_single").load(function () {
		  navigationMoseOver();
		});
	}

	// =======================================
	// Галерея. Переключалка картинок
	
	// We're in post list mode
	if( jQuery(".disp-posts").html() ) return;
	
	// Preload gallery images
	jQuery(".gallery").find(".gallery_thumbnails a").each(function(){
			jQuery("<img>").attr({
					"src": this.href
				});
		});
	
	// Display image preview block
	jQuery(".gallery").find(".gallery_preview").insertBefore(".gallery_thumbnails");
	jQuery(".gallery_preview").attr("style", "display:block");
	
	// Display navigation on hover
	jQuery(".gallery_preview").hover( function(){
				navigationMoseOver();
			}, function(){
				jQuery(".gallery_preview > .image_navigation").hide();
			} );
	
	// Single image
	jQuery(".gallery").find(".gallery_thumbnails .single_img_wrap > a").click(function(event){
			var self = this;
			jQuery("#gallery_image_single")
				.attr("src", this.href)
				.hide()
				.fadeIn(aniTime);
			$('.gallery #gallery_image_single').css('left', 0);
			jQuery("#gallery_image_single").load(function() {
				if ($('#gallery_image_single').width() > 705) {
					isLongImage = true;
					longWidth = $('#gallery_image_single').width();
					longPosition = 0;
					if (event.fromNext) {
						longPosition = 705 - longWidth;
					} 
					$(".gallery-long-scroll-container")
						.show()
						.css('visibility', 'visible')
					$('.gallery-long-scroll')
						.slider('option', 'max', longWidth - 705)
						.slider('value', -1*longPosition);
					$('.gallery #gallery_image_single').css('left', longPosition + 'px');
				} else {
					isLongImage = false;
					$(".gallery-long-scroll-container").css('visibility', 'hidden');
				}
				es_image_navigation( jQuery(self).parent().parent() );
			});
			
			// [db] fix bug with equal description of double images
			es_disp_image_desc( jQuery(this).parent(), "single" );
			// Reset "active_img" class
			jQuery(".gallery").find(".single_img_wrap").attr("class", "single_img_wrap");
			jQuery(".gallery").find(".double_img_wrap").attr("class", "double_img_wrap");
			jQuery(this).parents(".single_img_wrap").attr("class", "single_img_wrap active_image");
			
			jQuery(".double_image").hide();
			jQuery(".single_image").show();
			return false;
		});
	
	// Double images
	jQuery(".gallery").find(".gallery_thumbnails .double_img_wrap > div > a").click( function () {
			// [db]
			var link = Math.random();
			//jQuery.data(jQuery("#double_image")[0], "link", link);
			jQuery.data(jQuery(this).parent().parent(), "link", link);
//			this, "link", link);
			
			es_disp_double_img(this);
			// Reset "active_img" class
			jQuery(".gallery").find(".single_img_wrap").attr("class", "single_img_wrap");
			jQuery(".gallery").find(".double_img_wrap").attr("class", "double_img_wrap");
			jQuery(this).parents(".double_img_wrap").attr("class", "double_img_wrap active_image");
			
			es_image_navigation( jQuery(this).parent().parent().parent() );


			
			return false;
		});
		
	// [db] - First image
	if( firstImg = jQuery(".gallery_thumbnails").find('a')[0] )
	{
		jQuery(firstImg).trigger('click');
	}
	
	
	// [db] prev/next button
	jQuery("#prev-img").click(function() {
		moveLong('prev', function(result) {
			if (!result) {
				var prevImg = jQuery(".gallery_thumbnails > div > div.active_image").parent().prev().find('a');
				if (prevImg.length) {
					jQuery(prevImg[0]).trigger({type:'click', fromNext: true});
				}
			}
		});
	});
	jQuery("#next-img").click(function() {
		moveLong('next', function(result) {
			if (!result) {
				var nextImg = jQuery(".gallery_thumbnails > div > div.active_image").parent().next().find('a');
				if (nextImg.length) {
					jQuery(nextImg[0]).trigger('click');
				}
			}
		});
	});

	function moveLong(to, cb) {
		if (!isLongImage) {
			cb(false);
			return false;
		}
		var r = true;
		var step = longStep;
		if ((longWidth + longPosition <= 705 && to == 'next') || (longPosition >= 0 && to == 'prev')) {
			r = false;
		}

		if (to == 'next') {
			longPosition -= step;
		} else {
			longPosition += step;
		}
		if (longPosition < 705 - longWidth) {
			longPosition = 705 - longWidth;
		} else if (longPosition > 0) {
			longPosition = 0;
		}
		
		var img = $('.gallery #gallery_image_single');

		if (!r) {
			img.animate({opacity: 0}, {queue: false, duration: aniTime});
		} else {
			img.animate({left: longPosition + 'px'},  {queue: false, duration: 400, complete: function() {
				$(this).css('opacity', 1);
				cb(r);
			}});
			$(".gallery-long-scroll").slider('value', -1*longPosition);
			es_image_navigation(  $('.gallery .active_image').parent() );
		}
		cb(r);
		return r;
	}

	$(".gallery-long-scroll").slider({
		animate: false,
		min: 0,
		max: 1000,
		stop: function (event, ui) {
			longPosition = ui.value * -1;
			$('.gallery #gallery_image_single').animate({"left" : longPosition}, 500);
		},
		slide: function (event, ui) {
			longPosition = ui.value * -1;
			$('.gallery #gallery_image_single').css({"left" : longPosition});
		}
	});
	
	
	function es_disp_double_img(block)
	{
		var dbl_left = jQuery(block).parents(".double_img_wrap").find(".double_left");
		var dbl_right = jQuery(block).parents(".double_img_wrap").find(".double_right");
		
		jQuery("#gallery_image_left")
			.hide()
			.fadeIn(aniTime)
			.attr("src", jQuery(dbl_left).find("a").attr("href"));
		jQuery("#gallery_image_right")
			.hide()
			.fadeIn(aniTime)
			.attr("src", jQuery(dbl_right).find("a").attr("href"));

		es_disp_image_desc( dbl_left, "left" );
		es_disp_image_desc( dbl_right, "right" );
		
		jQuery(".single_image").hide();
		jQuery(".double_image").show();
	}
	
	
	function es_disp_image_desc( block, position )
	{
		// [db] fix bug with equal description of double images
		var descr = '';
		var noTitle = true;
		var noAlt = true;
		
		var img = block.find("img");
		if( alt = img.attr("alt") ) {
			descr = descr + '<h4>'+alt+'</h4>';
			noAlt = false;
		}
		
		if( title = img.attr("title") ) {
			descr = descr + '<h4>'+title+'</h4>';
			noTitle = false;
		}
		
		desc = block.find(".image-legend").html();
		if (!desc) {
			desc = '&nbsp';
		}
		descr = descr + '<div class="image-legend-text">'+desc+'</div>';
			
		if (noTitle && someImagesHasTitle) {
			descr = descr + '<h4>&nbsp;</h4>';
		}
		
		if (noAlt && someImagesHasAlt) {
			descr = descr + '<h4>&nbsp;</h4>';
		}
		
		jQuery("#image_description_" + position).html(descr);
	}
	
	
	function es_image_navigation( previewItem )
	{
		(previewItem.next().length || (isLongImage && longPosition > 705 - longWidth)) ? jQuery("#next-img").show() : jQuery("#next-img").hide();
		(previewItem.prev().length || (isLongImage && longPosition < 0)) ? jQuery("#prev-img").show() : jQuery("#prev-img").hide();
	}
	
	
	// =======================================
	// Галерея. См. также
	
	// First item
	if( firstItem = jQuery(".view-also").find(".see-also-item")[0] )
	{
		jQuery(".view-also").show();
		jQuery(firstItem).show();
		jQuery(".btn-also-prev").hide();
	}
	
	
	// prev/next button
	jQuery(".btn-also-prev").click(function() {
		var prevItem = jQuery(".view-also").find(".see-also-item:visible").prev(".see-also-item");
		if (prevItem.length) {
			jQuery(".view-also").find(".see-also-item").hide();
			jQuery(prevItem[0]).fadeIn('slow');
		}
		var prev2Item = jQuery(".view-also").find(".see-also-item:visible").prev(".see-also-item");
		if (prev2Item.length==0) {
			jQuery(".btn-also-prev").hide();
		}
		var next2Item = jQuery(".view-also").find(".see-also-item:visible").next(".see-also-item");
		if (next2Item.length) {
			jQuery(".btn-also-next").show();
		}
		return false;
	});
	jQuery(".btn-also-next").click(function() {
		var nextItem = jQuery(".view-also").find(".see-also-item:visible").next(".see-also-item");
		if (nextItem.length) {
			jQuery(".view-also").find(".see-also-item").hide();
			jQuery(nextItem[0]).fadeIn('slow');
		}
		var next2Item = jQuery(".view-also").find(".see-also-item:visible").next(".see-also-item");
		if (next2Item.length==0) {
			//alert("next hide");
			jQuery(".btn-also-next").hide();
		}
		var prev2Item = jQuery(".view-also").find(".see-also-item:visible").prev(".see-also-item");
		if (prev2Item.length) {
			jQuery(".btn-also-prev").show();
		}
		return false;
	});

});


