/**
 * @author Dmitriy Kotelnikov (dimonnot@design.ru)
 * @copyright Art.Lebedev Studio (http://www.artlebedev.ru)
 * 24.09.2008
 */
var gallery;

$(function(){
	var oGalleries = $('.gallery');
	var oContainers = $('.galleryopen');
	var oOpened = 0;
	
	oGalleries.click(
		function(){
			this.toggle();
			return false;
		}
	).each(
		function(){
			oOpener = this;
			var oOpenerImage = $(this).find('img')[0];
			var oContainer = oContainers.filter('.'+oOpener.id);
			
			if( oContainer.length > 0 && oOpenerImage ){
				var iIndex = oContainers.index(oContainer[0]);	
				
				var bHidden = 1,oAnimation = 0;
				var iPosition = 0;
				var bSide = 0;
			
				/*
				  *  Центрует панораму по вертикале
				  */
				var center = function(){
					var top = 0, standart = 0;
		
					if( document.documentElement && document.documentElement.scrollTop ){
						top = document.documentElement.scrollTop;
						standart = 1;
					}
					else if( document.body.scrollTop ){
						top = document.body.scrollTop;
						standart = 0;
					}
					
					top += (Math.round((standart ? document.documentElement.clientHeight : document.body.clientHeight) - 614)/2);
		
					if( top > 0 )
						oContainer.css('top',top+'px');
				};
											
				this.toggle = function(){
					if( bHidden )
						this.show();
					else
						this.hide();
				};
			
				/*
				  *  Отображает панораму
				  *  isshownight - отобразить ночную панораму?
				  */
				this.show = function(){
					if( my.lock )
						return;
				
					bHidden = 0;
		
					my.hide();
				
					oOpened = oOpener;
			
					//Если сработал Fixpng, то путь к картинке лежит в параметре link
					if( oOpenerImage.className == 'thumb' ){
						oOpenerImage.style.display = 'none';
					}
					else{
						oOpenerImage.firstsrc = oOpenerImage.link ? oOpenerImage.link : oOpenerImage.src;
						oOpenerImage.src = '/i/nogallery.png';
						if( fixPNG )
							fixPNG(oOpenerImage);
					}
					//Центруем панораму
					center();
		
					oContainer.removeClass('hidden');
					if( !oAnimation )
						oAnimation = my.resizer('/i/gallery.png');
			
					oAnimation.onstop = finishshow;
					oAnimation.show(oOpener, oContainer[0]);
				};
			
				this.hide = function(){
					if( my.lock )
						return;
				

					if( !oAnimation )
						oAnimation = my.resizer('/i/gallery.png');

					oAnimation.onstop = finishhide;
					oAnimation.hide();
				
					my.lock = 1;
			
					finishhide();
				};
				
				var finishhide = function(){
					if( oOpenerImage.className == 'thumb' ){
						oOpenerImage.style.display = '';
					}
					else{
						oOpenerImage.src = oOpenerImage.firstsrc;
					
						if( fixPNG )
							fixPNG(oOpenerImage);
					}
					
					bHidden = 1;
		
					my.lock = 0;
				};
				
				var finishshow = function(){	
					bHidden = 0;
		
					my.lock = 0;	
				};
			
				var moveright = function(){
					bSide = 0;
					if( iPosition > 0  )
						iPosition -= 1;
					else
						iPosition = my.galleries[iIndex][1].length - 1;
			
					change();
					return false;	
				};
		
				var moveleft = function(){
					bSide = 1;
					
					if( iPosition + 1 <= my.galleries[iIndex][1].length - 1 )
						iPosition += 1;
					else
						iPosition = 0;
					
					change();
					return false;		
				};
				
				var oNext = oContainer.find('.thumbs a.next').click(moveright)[0];
				oContainer.find('a.gal-right').click(moveright);
				var oPrev = oContainer.find('.thumbs a.prev').click(moveleft)[0];
				oContainer.find('a.gal-left').click(moveleft);
				var oInfo = oContainer.find('.description')[0];
				var oScroller = oContainer.find('.photo');
				var oPhoto = oScroller.find('img')[0];
				var oNewNext;
				var oNewPrev;
				/*
				  *  Меняем текущую фотку и привьюшки
				  */
				var animate;
				var change = function(){
					if( my.lock )
						return false;

					my.lock = 1;
		
					oInfo.innerHTML = my.galleries[iIndex][1][iPosition][2];
					oInfo.className = 'description ' + my.galleries[iIndex][1][iPosition][1];

					oNewNext = document.createElement('IMG');
		
					if( iPosition - 1 >= 0 ){
						oNewNext.src = my.galleries[iIndex][1][iPosition - 1][0];
						oNewNext.className = my.galleries[iIndex][1][iPosition - 1][1];
					}
					else{
						oNewNext.src = my.galleries[iIndex][1][my.galleries[iIndex][0].length - 1][0];
						oNewNext.className = my.galleries[iIndex][1][my.galleries[iIndex][0].length - 1][1];
					}
				
					if( bSide ){
						oNext.insertBefore(oNewNext,oNext.firstChild);
						oNext.parentNode.scrollLeft = 100;
					}
					else
						oNext.appendChild(oNewNext);	
	
					oNewPrev = document.createElement('IMG');
		
					if( iPosition <= my.galleries[iIndex][0].length - 2 ){
						oNewPrev.src = my.galleries[iIndex][1][iPosition + 1][0];
						oNewPrev.className = my.galleries[iIndex][1][iPosition + 1][1];
					}
					else{
						oNewPrev.src = my.galleries[iIndex][1][0][0];
						oNewPrev.className = my.galleries[iIndex][1][0][1];
					}
			
					if( bSide ){
						oPrev.insertBefore(oNewPrev,oPrev.firstChild);
						oPrev.parentNode.scrollLeft = 100;
					}
					else
						oPrev.appendChild(oNewPrev);
			
					oImage = document.createElement('IMG');
					$(oImage).load(animate);
					oImage.src = my.galleries[iIndex][0][iPosition];
					oImage.style.position = 'absolute';
					oImage.style.top = '-1000%';
					oImage.style.left = '-1000%';
					document.body.appendChild(oImage);
				};
	
				/*
			  	  *  Функция отвечает за анимацию при смене фотографий в фотогалереи
				  */
				animate = function(){	
					$(oImage).remove();
		
					var oNewImage = document.createElement('IMG');
					oNewImage.src = my.galleries[iIndex][0][iPosition];
					oScroller.append(oNewImage);
					oNewImage.style.position = 'absolute';
					oNewImage.style.top = '0';
			
					if( bSide )
						oNewImage.style.left = '-650px';
					else
						oNewImage.style.left = '650px';
		
					oScroller.append(oNewImage);
		
					var w = 0;
					var wci = window.setInterval(
						function(){
							w += 100;
							if( w >= 600 ){
								//Анимаця закончилась
								window.clearInterval(wci);
								$(oPhoto).remove();
								oPhoto = oNewImage;
								oPhoto.style.left = '0px';
								if( my.galleries[iIndex][1][iPosition][1] == 'horizontal' ){
									oPhoto.parentNode.style.width = '630px';
									oPhoto.parentNode.style.height = '400px';
									oPhoto.width = 630;
									oPhoto.height = 400;
								}
								else{
									oPhoto.parentNode.style.width = '330px';
									oPhoto.parentNode.style.height = '520px';
									oPhoto.width = 330;
									oPhoto.height = 520;
								}
               
								var f = $(oNext).find('img:first');
								if( f[0] != oNewNext )
									$(oNext).find('img:first').remove();
								else
									$(oNext).find('img:last').remove();
								oNext.parentNode.scrollLeft = 0;
				
								var f = $(oPrev).find('img:first');
								if( f[0] != oNewPrev )
									$(oPrev).find('img:first').remove();
								else
									$(oPrev).find('img:last').remove();
								oPrev.parentNode.scrollLeft = 0;
				
								delete oNewNext;
								delete oNewPrev;
								delete oImage;
								delete oNewImage;
								my.lock = 0;
							}
							else{
								if( bSide ){
									oNewImage.style.left = (w-630)+'px';
									oPhoto.style.left = w+'px';
					
									//Передвигаем превьюшки
									oNext.parentNode.scrollLeft = Math.round(100 - w/6); 
									oPrev.parentNode.scrollLeft = Math.round(100 - w/6); 
								}
								else{
									oNewImage.style.left = (630 - w)+'px';
									oPhoto.style.left = '-'+w+'px';
				
									//Передвигаем превьюшки
									oNext.parentNode.scrollLeft = Math.round(w / 6); 
									oPrev.parentNode.scrollLeft = Math.round(w / 6); 					
								}
							}
						},
					30);
				};
		
				delete moveleft;
				delete moveright;
		
				oContainer.find('a.gall-close').click(
					function(){
						oOpener.hide();
						return false;
					}
				);
			}
		}
	);
});