$(function(){
	var cur = 0;
	$('.mod_design_slideshow').each(function(){
		var ss = this;
		var scroll_timer = null;
		
		var upd_btn = function(){
			var len = $('.mod_design_ss_cont_thumbs img').length;
			if($.browser.msie) {
				if(cur == 0) $('.mod_design_ss_btn_prev', ss).hide(); else $('.mod_design_ss_btn_prev', ss).show();
				if(cur == len - 1) $('.mod_design_ss_btn_next', ss).hide(); else $('.mod_design_ss_btn_next', ss).show();
			} else {
				$('.mod_design_ss_btn_prev', ss).animate({ 'opacity': cur == 0 ? 0.01 : 1.0 });
				$('.mod_design_ss_btn_next', ss).animate({ 'opacity': cur == len - 1 ? 0.01 : 1.0 });
			}
		};
		
		var horiz = $('.mod_design_ss_cont_thumbs', ss).width() > $('.mod_design_ss_cont_thumbs', ss).height();
		if(horiz)
			$('.mod_design_ss_cont_thumbs_', ss).width($('.mod_design_ss_cont_thumb', ss).outerWidth(true) * ($('.mod_design_ss_cont_thumb', ss).length + 1) - $('.mod_design_ss_cont_thumb', ss).outerWidth(false));
		var ol = $('.mod_design_ss_btn_prev', ss).position();
		var or = $('.mod_design_ss_btn_next', ss).position();
		var ow = $('.mod_design_ss_btn_prev', ss).width();
		var oh = $(ss).height() - $('.mod_design_ss_btn_thumbs:visible', ss).height() - 20;
		
		var pb = $('.mod_design_ss_photo');
		if(parseInt(pb.css('left')) == 0) pb.css('left', ((ol && ol.left ? ol.left : 0) + ow + 10) + 'px');
		if(parseInt(pb.css('top')) == 0) pb.css('top', '10px');
		if(parseInt(pb.css('width')) == 0) pb.css('width', ol.top == or.top ? ((ol && ol.left ? or.left - ol.left - ow : $(ss).width()) - 20) + 'px' : $(ss).width() - 2 * parseInt(pb.css('left')) + 'px');
		if(parseInt(pb.css('height')) == 0) pb.css('height', ol.top != or.top ? ((ol && ol.left ? or.left - ol.left - ow : $(ss).width()) - 20) + 'px' : $(ss).height() - 2 * parseInt(pb.css('top')) + 'px');
		$('.mod_design_ss_progress', ss).css({ left: pb.css('left'), top: pb.css('top'), width: pb.css('width'), height: pb.css('height') });
		
		$('.mod_design_ss_btn_prev', ss).click(function(){
			$('.mod_design_ss_cont_thumbs img:eq(' + (cur - 1) + ')').click();
		});
		$('.mod_design_ss_btn_next', ss).click(function(){
			$('.mod_design_ss_cont_thumbs img:eq(' + (cur + 1) + ')').click();
		});
		
		$('.mod_design_ss_btn_thumbs:visible', ss).click(function(){
			$('.mod_design_ss_cont_thumbs', ss).slideToggle();
			if(horiz)
				$('.mod_design_ss_cont_thumbs_', ss).width($('.mod_design_ss_cont_thumb', ss).outerWidth(true) * ($('.mod_design_ss_cont_thumb', ss).length + 1) - $('.mod_design_ss_cont_thumb', ss).outerWidth(false));
		});
		
		$('.mod_design_ss_cont_thumbs .mod_design_ss_cont_thumb', ss).click(function(){
			$('.mod_design_ss_cont_thumbs .mod_design_ss_cont_thumb').removeClass('_sel');
			$(this).addClass('_sel');
			cur = $('.mod_design_ss_cont_thumbs .mod_design_ss_cont_thumb').index(this);
			upd_btn();
			$('.mod_design_ss_progress', ss).show();
			if($('.mod_design_ss_btn_thumbs:visible', ss).length > 0)
					$('.mod_design_ss_cont_thumbs', ss).slideUp();
			var thumb = $('img', this)[0];
			var img = new Image();
			$(img).load(function(){
				$('.mod_design_ss_photo', ss).fadeOut(function(){
					$('.mod_design_ss_progress', ss).hide();
					var csw = $(this).width();
					var csh = $(this).height();
					
					var r = Math.min(csh / img.height, csw / img.width);
					img.width = Math.round(img.width * r);
					img.height = Math.round(img.height * r);
					$(this).css('text-align', 'left').html(img);
					$(img).css({
						position: 'relative',
						top: Math.round((csh - img.height) / 2) + 'px',
						left: Math.round((csw - img.width) / 2) + 'px'
					});
					$('.mod_design_ss_photo', ss).fadeIn();
				});
			});
			var url = $('a', this).attr('href');
			img.src = url || thumb.src.replace(/_thumb/, '');
		}).eq(0).click();
		
		var scroll_func = function(pos, cont){
			window.clearTimeout(scroll_timer);
			if(pos <= 0.15) {
				if(horiz)
					cont.scrollLeft -= 10;
				else
					cont.scrollTop -= 10;
				scroll_timer = window.setTimeout(function(){ scroll_func(pos, cont); }, 100);
			}
			if(pos >= 0.85) {
				if(horiz)
					cont.scrollLeft += 10;
				else
					cont.scrollTop += 10;
				scroll_timer = window.setTimeout(function(){ scroll_func(pos, cont); }, 100);
			}
		};
		
		$('.mod_design_ss_cont_thumbs')
			.mousemove(function(e){
				var cont = this;
				var pos = horiz ? (e.pageX - $(cont).offset().left) / $(cont).width() : (e.pageY - $(cont).offset().top) / $(cont).height();
				scroll_func(pos, cont);
			})
			.mouseout(function(){
				window.clearTimeout(scroll_timer);
			});
	});
});
