// JavaScript Document

//general
function listNextAfter($list,$item){
	var index = $list.index($item);
	if(index < $list.length - 1)
		return $list.eq(index+1);
	else 
		return $([]);
}

function listPrevBefore($list,$item){
	var index = $list.index($item);
	if(index > 0)
		return $list.eq(index-1);
	else 
		return $([]);
}




function pictureLoad(obj){
	$gallerySibling(obj,'#pictureActivity').stop().hide();									 
	if(obj.width > 600) $(obj).attr('width',600);
    $(obj).css('visibility','visible').stop().animate({'opacity':1},400);
	$gallerySibling(obj,'.pictureHolder').stop().animate({height:obj.height},500);		
}



function get_scroll_left(){
	var v = $('html').scrollLeft();	//Safari reacts to 'body', other browsers to 'html'
	if( $('html').scrollLeft() ) return v;
	else return $('body').scrollLeft();
}


function set_scroll_left(y){
	$('html,body').scrollLeft(y);
}


$(document).ready(function(){
	//disable horizonal scrolling
    $(window).scroll(function (){ 
		if(get_scroll_left() > 0){
			set_scroll_left(0);
			return false;
		}else{
			return true;	
		}
    });
						   
						   
	function layout_adjust(){
		//leftBottom_adjust		
		var h1 = $('#left').outerHeight() + 30 ;
		var h2 = $('#leftBottom').height() + 35;
		if( $(window).height() < h1 + h2 ){
			$('#leftBottom').css({position:'fixed',top:h1,bottom:'auto'});
		}else{
			$('#leftBottom').css({position:'fixed',top:'auto',bottom:'35px'});	
		}
		//width snap to multiple thumb width
		var w = $('#right').width();
		var cols = Math.floor(w / 325);
		//document.title = w + " " + cols + " " + $(document).width();
		cols = Math.max(2,Math.min(widthSnap_maxCols,cols));
		$('#right_inner').css('width',cols * 325);
		
	}	
	
	
	layout_adjust();
	
	$(window).resize(function(){
		layout_adjust();
		return true;
	});

					   

	$('#topLinkNewsletter').click(function(){
		$topForm = $('#topFormNewsletter');
		var o = $(this).offset();
		$topForm.css({top:o.top,left:o.left,opacity:0});
		$topForm.animate({top:o.top+23,opacity:1},500,function(){
			$topForm.find('input').focus()[0].select();											   
		});
		return false;
	});

	
	$('#topFormButtonNewsletter').click(function(){
		$input = $(this).prev('input'); 
		$.get('get.php?newsletter_email='+escape($input.val()),function(data){
			if(data){																		
				data = eval('('+data+')');
				if(data.error){
					$input[0].select();
				}else{
					$('#topFormNewsletter').css({top:-100}).next('#topLinkNewsletter').css('visibility','visible');	
				}
				
				alert(data.message);
			}
		});
		return false;												
	});	
	
	if(window.location.search == '?newsletter_subscribe') setTimeout( function(){$('#topLinkNewsletter').click();},100); 
	
	$('.topFormButton').mouseover(function(){
		$topForm = $(this).parent('.topForm');
		$topForm.css('background-image','url(images/'+$topForm[0].id+'_over.gif)');
	}).mouseout(function(){	
		$topForm = $(this).parent('.topForm');
		$topForm.css('background-image','url(images/'+$topForm[0].id+'.gif)');
	});
	
	$('.grayedOut').css('opacity',0.40);	
	
	//Gallery
	$('.pictureImage').load(function(){ pictureLoad(this); return true;});
	
	
	$('a[id=pictureScrollRight]').each(function(){
		if($gallerySibling(this,'.pictureBox').size() <= 6) $(this).addClass('disabled');
	});
	
	//Expand
	
	$('a.expand').click(function(){
		$(this).nextAll('.expandTarget')[$(this).toggleClass('open').hasClass('open') ? 'show' : 'hide']();
		return false;
	});
	

});


function pictureFrameToggle(obj){
	if($(obj).hasClass('open'))
		pictureFrameClose(obj);					   
	else
		pictureFrameOpen(obj);
}

function pictureFrameOpen(obj){
	$gallerySibling(obj,'.pictureFrameToggle,#pictureList').addClass('open');
	$gallerySibling(obj,'#pictureFrame').css({position:'static',left:'auto'}).fadeIn('slow');
	
}


function pictureFrameClose(obj){
	$gallerySibling(obj,'.pictureFrameToggle,#pictureList').removeClass('open');	
	pictureClearInterval(obj);	
	$gallerySibling(obj,'#pictureFrame').fadeOut('fast');
}

function pictureMove(obj,move){
	$a = $gallerySibling(obj,'.pictureBoxLink.current');
	$pictureBox = $a.parents('.pictureBox');
	if(-1 == move)
		$a_sibling = $pictureBox.prevAll('.pictureBox:first').find('.pictureBoxLink');	
	else
		$a_sibling = $pictureBox.nextAll('.pictureBox:first').find('.pictureBoxLink');	
	if($a_sibling.length){ 
		pictureBoxClick($a_sibling[0]);
		return true;
	}else{
		return false;	
	}
}

//finds a sibling in same gallery
function $gallerySibling(child,siblingLocator){
	return $(child).parents('.gallery').find(siblingLocator);
}

var picturePlayIntervals = [];
function picturePlay(a){
	var $a = $(a);
	$gallery = $a.parents('.gallery');
	var gallery_id = $gallery.attr('id');
	var intervalId = null;
	if(picturePlayIntervals[gallery_id] != 'undefined') intervalId = picturePlayIntervals[gallery_id];
	if(intervalId != null){
		pictureClearInterval(a);
	}else{
		$a.addClass('active');	
		var func = function(){
			if(! pictureMove(a, 1))	pictureBoxClick($gallery.find('.pictureBoxLink')[0]);															
		};
		func();
		picturePlayIntervals[gallery_id] = setInterval(func,4500);
	}
}

function pictureClearInterval(a){
	var $a = $(a);	
	$gallerySibling(a,'#picturePlay').removeClass('active');
	$gallery = $a.parents('.gallery');	
	var gallery_id = $gallery.attr('id');
	var intervalId = null;
	if(typeof picturePlayIntervals[gallery_id] != 'undefined') intervalId = picturePlayIntervals[gallery_id];
	clearInterval(intervalId);
	picturePlayIntervals[gallery_id] = null;	
}

function pictureScroll(a,delta){
	var $pictureList = $gallerySibling(a,'#pictureList');
	var scrollPosOld =  parseInt($pictureList.attr('scrollPos'));
	var scrollMax = Math.max(0,$pictureList.find('.pictureBox').size() - 6);
	scrollPos = scrollPosOld + delta;
	scrollPos = Math.min(scrollMax,scrollPos);
	scrollPos = Math.max(0,scrollPos);
	$pictureList.attr('scrollPos',scrollPos);
	$gallerySibling(a,'.pictureScroll:not(.disabled)').fadeOut(50);
	$pictureList.stop().animate({marginLeft: -scrollPos*110},Math.abs(scrollPosOld-scrollPos)*100,function(){
		$gallerySibling(a,'#pictureScrollLeft' )[ scrollPos != 0 ? 'removeClass' : 'addClass' ]('disabled');
		$gallerySibling(a,'#pictureScrollRight' )[ scrollPos != scrollMax ? 'removeClass' : 'addClass' ]('disabled');	
		$gallerySibling(a,'.pictureScroll:not(.disabled)').fadeIn(300);
	});
}

function pictureBoxClick(a){
	$a = $(a);
	$pic = $gallerySibling(a,'.pictureImage');
	var src = $pic.attr('src');
	var new_src = $a.attr('href');
	if(new_src != src){	
		$gallerySibling(a,'#pictureActivity').show().css({paddingTop:  $gallerySibling(a,'.pictureHolder').height()/2-16+20 ,opacity:0})
			.stop().animate({opacity:1},0);
					
		$pic.stop().animate({'opacity':0},100,function(){
			$(this).removeAttr('width').css('visibility','hidden');																	  
			$(this).attr('src',new_src) //and wait for load event	
		});
		

	}else{
		//load event would not be triggered in Safari/Webkit so call it dirrectly	
		pictureLoad($pic[0]);
	}
	
	$gallerySibling(a,'#pictureDesc').text($a.find('img').attr('alt'));
	pictureFrameOpen(a);
	$gallerySibling(a,'.pictureBoxLink.current').removeClass('current');
	$a.addClass('current');
	$pictureBox = $a.parents('.pictureBox');
	var newScrollPos = $pictureBox.index();
	var $pictureList = $pictureBox.parents('#pictureList');
	var scrollPos =  parseInt($pictureList.attr('scrollPos'));
	if(newScrollPos < scrollPos) pictureScroll($pictureList,Math.min(-6,newScrollPos-scrollPos));
	else if(newScrollPos >= scrollPos+6) pictureScroll($pictureList,6);	
	$gallerySibling(a,'#pictureLeft' )[ $pictureBox.prevAll('.pictureBox:first').length ? 'removeClass' : 'addClass' ]('disabled');
	$gallerySibling(a,'#pictureRight')[ $pictureBox.nextAll('.pictureBox:first').not('.pictureAdd').length ? 'removeClass' : 'addClass' ]('disabled');
}

function frameSlideshow(frame_list_json){
	//alert(frame_list_json);
	var frame_list = eval('('+	frame_list_json + ')');
	if(frame_list && frame_list.length > 1){
		var frameIndex = 0;
		var imageIndex = 0;
		var expectLoad = 0;
		var $imageA = null;
		var $imageB = null;
		
		$('#frameImage1').css('opacity',0);
		
		function scheduleNextFrame(){
			setTimeout(function(){
				frameIndex = (frameIndex + 1 ) % frame_list.length;
				//alert("scheduleNextFrame:" + frameIndex)												
				imageIndex = 1 - imageIndex;
				$imageA = $('#frameImage' + imageIndex);
				$imageB = $('#frameImage' + (1-imageIndex));
				expectLoad = 1;
				$imageA[0].src = frame_list[frameIndex];
			},3000);
		}
		
		$('.frameImage').load(function(){
			if(expectLoad){	
				expectLoad = 0;
				//alert("loaded:" + frameIndex);	
				$imageA.animate({opacity:1},1000);
				$imageB.animate({opacity:0},1000);				
				
				scheduleNextFrame();
			}
		});		
		
		scheduleNextFrame();
		
	}
}
