/*
 * firtGallery for In Decor - Gallery for jQuery 1.2.6
 * http://brightskill.net/
 *
 * Copyright (c) 2009 firt
 */

jQuery.fn.firtGallery = function(options){
	// настройки по умолчанию
	var options = jQuery.extend({
		timeout: 10000, // таймаут загрузки большого изображения
		dur: 1000, // скорость прокрутки тумбов
		tBoxSize: {w:120,h:68,hw:1}, // размер бокса для тумбы изображения
		images:{// изображения для галлереи
			//prev:	'images/prev.gif',
			//next:	'images/next.gif',
			blank:	'/blank.gif',
			load:	'/loading.gif',
			tload:	'/mload.gif'} 
	},options);

	return this.each(function() {
		//preloader gallery images
		jQuery.firtGallery.preloadGalleryImg(options);

	// Init
		options.galleryId = this.id;
		options.preloader = null;
		options.timer = null;
		options.curImg={href:null,obj:null};
		options.imgBoxSize={w:730,h:1460,hw:1}; // деф. размер бокса для большого изображения
		options.tBoxSize.hw=options.tBoxSize.h/options.tBoxSize.w; // пересчёт hw
		options.thumbsImages=new Array();
		
		jQuery.firtGallery.preloadThumbs(options);

		//generate options and style
		options.thumbsAllHeight=$('#'+options.galleryId+' ul').height();
		$('#'+options.galleryId).css('overflow','hidden');
		$('#'+options.galleryId+'-imgd').html('<img src="/image.php?img='+document.getElementById("zzzzz").value+'&size=610" height="455px" align=center/>');
		options.thumbsHeight=$('#'+options.galleryId).height();

		options.imgBoxSize.w=$('#'+options.galleryId+'-img').width()
		options.imgBoxSize.h=$('#'+options.galleryId+'-img').height();
		options.imgBoxSize.hw=options.imgBoxSize.h/options.imgBoxSize.w;

		$('#'+options.galleryId+'-img').append('<div id="'+options.galleryId+'-load"><a href="#" onclick="return false;" id="'+options.galleryId+'-load-link"><img alt="Загрузка" src="' + options.images.load + '" /></a></div>');
		
		// init info style
		$('#'+options.galleryId+'-imginfo').css({opacity: "0.6"});

		// init navigation button
		$('#'+options.galleryId+'-up').css('display', 'none');
		if(options.thumbsHeight<options.thumbsAllHeight)
		{
			$('#'+options.galleryId+'-down').click(function(){
				$('#'+options.galleryId+'-up').css('display', 'block');
				if($('#'+options.galleryId+' ul').queue().length>0) return false;
				var l=parseInt($('#'+options.galleryId+' ul').css('top'));ndur=options.dur;
				if(isNaN(l)) l=0; //IE FIX
				var dst=options.thumbsHeight;var buf=options.thumbsAllHeight+l-options.thumbsHeight;
				if(buf<=dst){ndur=options.dur*buf/dst;dst=buf;$('#'+options.galleryId+'-down').css('display', 'none');}
				$('#'+options.galleryId+' ul').animate({top: "-="+dst+"px"}, {duration: ndur, easing: "swing"});
				return false;
			});
			$('#'+options.galleryId+'-up').click(function(){
				$('#'+options.galleryId+'-down').css('display', 'block');
				if($('#'+options.galleryId+' ul').queue().length>0) return false;
				var l=-parseInt($('#'+options.galleryId+' ul').css('top'));ndur=options.dur;
				if(isNaN(l)) l=0; //IE FIX
				var dst=options.thumbsHeight;
				if(l<=dst){ndur=options.dur*l/dst;dst=l;$('#'+options.galleryId+'-up').css('display', 'none');}
				$('#'+options.galleryId+' ul').animate({top: "+="+dst+"px"}, {duration: ndur, easing: "swing"});
				return false;
			});
			var en = (jQuery.browser.mozilla)?"DOMMouseScroll":"mousewheel";
			$(this).bind(en, {options: options}, function(e){return jQuery.firtGallery.moveThumbs(e)});
		}
		else
		{
			$('#'+options.galleryId+'-down').css('display', 'none');
		}
		
		
		//click on image
		$('#'+options.galleryId+' a').click(function(){
			if (options.curImg.href == $(this).attr("href")) return false;
			if (options.curImg.obj!=null) (options.curImg.obj).removeClass("selected");
			options.curImg.href = $(this).attr("href");
			options.curImg.obj = $(this);
			$(this).addClass("selected");

			$('#'+options.galleryId+'-imgd').hide();
			$('#'+options.galleryId+'-load').show();
		//	$('#'+options.galleryId+'-imginfo').text($(this).attr("title"));
		//	$('#'+options.galleryId+'-imginfo').show();
			return jQuery.firtGallery.loadImg(options, $(this).attr("href"), $(this).attr("title"));
			return false;
		});

	});
};

jQuery.firtGallery = {

		timerFinish: function(options){
			options.preloader.onerror = null;
			options.preloader.onload = null;

			clearTimeout(options.timer);
			$('#'+options.galleryId+'-imgd').css('margin-top', '0px');
			$('#'+options.galleryId+'-imgd').html('Ошибка при загрузке изображения<br />Попробуйте заново через некоторое время<br />При повторении проблемы, пожалуйста,<br /> сообщите Администрации');
			$('#'+options.galleryId+'-load').hide();
			$('#'+options.galleryId+'-imgd').show();
		},

		showImage: function(options){
			var hw='height="'+options.imgBoxSize.h+'"';
			var mt=0;
			if (options.imgBoxSize.hw>options.preloader.height/options.preloader.width)
			{
				hw='width="'+options.imgBoxSize.w+'"';
				mt=parseInt((options.imgBoxSize.h-options.imgBoxSize.w*options.preloader.height/options.preloader.width)/2);
			}
			$('#'+options.galleryId+'-imgd').css('margin-top', mt+'px');
			$('#'+options.galleryId+'-imgd').html('<img src="'+options.preloader.src+'" alt="'+options.preloader.alt+'" '+hw+' />');
			$('#'+options.galleryId+'-load').hide();
			$('#'+options.galleryId+'-imgd').show();

			options.preloader.onload = null;
			options.preloader.onerror = null;
			return false;
		},

		loadImg: function(options,src,alt){
			// Preload selected image
			options.preloader = new Image();
			options.preloader.onload = function(){jQuery.firtGallery.showImage(options)};
			options.preloader.onerror = function(){jQuery.firtGallery.timerFinish(options)};
			options.preloader.src = src;
			options.preloader.alt = alt;

			clearTimeout(options.timer);
			//options.timer = setTimeout("jQuery.firtGallery.timerFinish(options)", options.timeout);
			return false;
		},

		preloadGalleryImg: function(options){
			options.galleryImages=new Array();
			for (a in options.images)
			{
				options.galleryImages[a] = new Image();
				options.galleryImages[a].src = options.images[a];
			}
			return false;
		},

		preloadThumbs: function(options){
			par_el = $('#'+options.galleryId);
			var imgs = par_el.find('img');
			/*if (jQuery.browser.msie && jQuery.browser.version < '7.0')
			{
				imgs.hover(function(){
						if (options.tBoxSize.hw>jQuery(this).height()/jQuery(this).width()){jQuery(this).css('width', options.tBoxSize.w+'px');}
						else{jQuery(this).css('height', options.tBoxSize.h+'px');}
						return false;
					}, function(){return false;}
				);

				for (var i=0;i<imgs.length;i++)
				{
					var img=imgs[i];
					options.thumbsImages[i]=new Image();
					options.thumbsImages[i].src=img.src;
					//img.src=options.images.tload;
					options.thumbsImages[i].name=i;
					options.thumbsImages[i].onload = function(){
						var tester = jQuery('#'+options.galleryId+' img:eq('+this.name+')');

						if (options.tBoxSize.hw>this.height/this.width){tester.css('width', options.tBoxSize.w+'px');}
						else{tester.css('height', options.tBoxSize.h+'px');}
					};
				}
			}*/
			return false;
		},

		moveThumbs: function (event) {
			var wheelDelta = 0;
			if (event.wheelDelta) {wheelDelta = event.wheelDelta/120} 
			else if (event.detail){wheelDelta = -event.detail/3}
			if (wheelDelta > 0)
			{
				if($('#'+event.data.options.galleryId+' ul').queue().length>0) return false;
				$('#'+event.data.options.galleryId+'-down').css('display', 'block');
				var l=-parseInt($('#'+event.data.options.galleryId+' ul').css('top'));ndur=event.data.options.dur/2;
				if(isNaN(l)) l=0; //IE FIX
				var dst=parseInt(event.data.options.thumbsHeight/2);
				if(l<=dst){ndur=event.data.options.dur*l/dst;dst=l;$('#'+event.data.options.galleryId+'-up').css('display', 'none');}
				$('#'+event.data.options.galleryId+' ul').animate({top: "+="+dst+"px"}, {duration: ndur, easing: "swing"});
			}
			else if (wheelDelta < 0)
			{
				if($('#'+event.data.options.galleryId+' ul').queue().length>0) return false;
				$('#'+event.data.options.galleryId+'-up').css('display', 'block');
				var l=parseInt($('#'+event.data.options.galleryId+' ul').css('top'));ndur=event.data.options.dur/2;
				if(isNaN(l)) l=0; //IE FIX
				var dst=parseInt(event.data.options.thumbsHeight/2);var buf=event.data.options.thumbsAllHeight+l-event.data.options.thumbsHeight;
				if(buf<=dst){ndur=event.data.options.dur*buf/dst;dst=buf;$('#'+event.data.options.galleryId+'-down').css('display', 'none');}
				$('#'+event.data.options.galleryId+' ul').animate({top: "-="+dst+"px"}, {duration: ndur, easing: "swing"});
			}
			return false;
		}
}