;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);

$(document).ready(function() {
    if($('#portfolio #projects-photos').length) {
		$(document).mousemove(function(event) {
			offset = $('#portfolio').offset();
			
	        x = event.pageX-offset.left+7;
	        y = event.pageY-25;
	
	        $('#projects-photos li span').css('left', x+'px');
	        $('#projects-photos li span').css('top', y+'px');
	    });
	
        $('#projects-photos li a').bind('mouseover', function() {
			project = $(this).attr('class');
			$('#projects li a.'+project).addClass('hover');
			if(!$(this).parent().children('span').length) {
				$(this).parent().append('<span>'+$(this).children('img').attr('alt')+'</span>');
				$(this).parent().children('span').css('display', 'block');
			}
        });

		$('#projects-photos li a').bind('mouseout', function() {
			project = $(this).attr('class');
			$('#projects li a.'+project).removeClass('hover');
			$('#projects-photos li span').remove();
			$('#projects-photos li span').css('display', 'none');
        });
    }
	
	if($('#portfolio #photos').length) {
		var id;
		var photoID;
		var photoWidth;
		var title;
		var project = $('#project').attr('class');
		var photos = $('#photos ul.items li').size();
		var borderPhoto;
		var listWidth = 0;
		var margin = 0;
		var marginDestination = 0;
		var nextPhoto;
		var ready;
		
		if($('#portfolio #description').length) {
			$('#body #content #portfolio #project #options ul li a').click(function(event) {
				event.preventDefault();
				if($('#body #content #portfolio #project #description:visible').length) {
					$.scrollTo($('#body'), 250);
					$('#body #content #portfolio #project #description').slideUp('fast');
					$('#body #content #portfolio #project #options ul li a').text('Show project description');
				}
				else {
					$('#body #content #portfolio #project #description').slideDown();
					$('#body #content #portfolio #project #options ul li a').text('Hide project description');
				
					$('#body #content #portfolio #project #description div.options a').click(function(event) {
						event.preventDefault();
						$.scrollTo($('#body'), 250);
						$('#body #content #portfolio #project #description').slideUp('fast');
						$('#body #content #portfolio #project #options ul li a').text('Show project description');
					});
				}
			});
		
			$('#body #content #portfolio #project #photos #list ul.options a').click(function(event) {
				event.preventDefault();
			});
		}
		
		function setThumbnails() {	
			listWidth = 0;
			
			$('#list li img').each(
				function(index) {
					listWidth = listWidth+$(this).attr('width')+5;
					if(listWidth >= 960) {
						borderPhoto = index;
					}
				}
			);
			
			listWidth = listWidth-5;
			$('#list ul.items').css('width', listWidth+'px');
			$('#list ul.items li:last-child').css('margin', 0);
			borderPhoto = borderPhoto-2;

			marginDestination = 960-listWidth;

			margin = Math.floor((marginDestination/$('#list ul.items li').size())*id);
			
			if($('#photo'+id).length) {
				if(borderPhoto != '') {
					if(id >= borderPhoto) {
						$('#body #content #portfolio #project #photos #list ul.items').css('margin-left', margin);
					}
				}
			}
			
			presentMarginLeft = $('#body #content #portfolio #project #photos #list ul.items').css('margin-left').replace('px', '');
		
			if($('#photo'+id).length) {
				$('#photos #list ul.items li').attr('class', '');
				$('#photos #list ul.items #photo'+id).attr('class', 'active');
			}
		
			$('#photos #list ul.items li a').each(function() {
				$(this).attr('href', '/portfolio/'+project+'/#/'+$(this).children('img').attr('alt').replace('Photo #','').replace(' by Nicolas Grospierre',''));
			});
		
			if(listWidth > 960) {	
				if(!$('#body #content #portfolio #project #photos ul.itemsOptions').length) {
					$('#body #content #portfolio #project #photos #list ul.options').before('<ul class="itemsOptions"><li><a href="#" class="next">Next photos</a></li><li><a href="#" class="previous">Previous photos</a></li></ul>');
				}
				
				if((parseInt(marginDestination)-parseInt(presentMarginLeft)) < -5) {
					$('#body #content #portfolio #project #photos #list ul.itemsOptions a.next').css('display', 'block');
				}
				else
				{
						$('#body #content #portfolio #project #photos #list ul.itemsOptions a.next').css('display', 'none');
				}

				if(parseInt($('#body #content #portfolio #project #photos #list ul.items').css('margin-left')) < 0)
				{
					$('#body #content #portfolio #project #photos #list ul.itemsOptions a.previous').css('display', 'block');
				}
				else
				{
					$('#body #content #portfolio #project #photos #list ul.itemsOptions a.previous').css('display', 'none');
				}
			}
		}

		function showPhoto() {
			if($('#photo'+id).length) {
				window.location.hash = '/'+id;
				$.address.title('Project '+$('#project h3').text()+' by Nicolas Grospierre. Photo #'+id+'/'+photos);
				
				$('#photos #photo p').remove();
				
				photoID = '/images/photos/resized/'+$('#photos #list ul.items #photo'+id+' a').attr('class').replace('photo','');
				
				nextPhoto = id+1;
				$('#photos #photo #subcontainer a').attr('href', '/portfolio/'+project+'/#/'+nextPhoto);
				
				$('#photos #photo img').remove();
			
				if($('#photos #photo #subcontainer a').length) {
					$('#photos #photo #subcontainer a').prepend('<img>');
				}
				else
				{
					$('#photos #photo #subcontainer').prepend('<img>');
				}
				
				$('#photos #photo img').attr('src', '/images/photos/resized/'+$('#photos #list ul.items #photo'+id+' a').attr('class').replace('photo','')+'.jpg').load(function(event) {
					photoWidth = $(this).width();
					
					if(photoWidth > 960) {
						if(!$('#photos #photo ul.photoOptions').length) {
							$('#photos #photo #subcontainer').after('<ul class="photoOptions"><li><a href="#" class="right">Right</a></li><li><a href="#" class="left">Left</a></li></ul>');
						}
						
						marginDestination = 960-$('#photos #photo img').width();
						marginDestinationNatural = $('#photos #photo img').width()-960;
						speedMax = marginDestinationNatural*15;
						ratio = speedMax/marginDestinationNatural;
						
						$('#body #content #portfolio #project #photos ul.photoOptions a.right').bind('mouseover', function() {
							marginPresent = Math.floor($('#body #content #portfolio #project #photos #photo img').css('margin-right').replace('-', '').replace('px', ''));
							if(marginPresent == 0)
							{
								marginPresent = marginDestinationNatural;
							}
							speed = 0.25*ratio*marginPresent;
							$('#body #content #portfolio #project #photos ul.photoOptions a.left').show();
							$('#body #content #portfolio #project #photos #photo img').animate({marginLeft: marginDestination}, speed, function() {
								$('#body #content #portfolio #project #photos ul.photoOptions a.right').hide();
							});
						});

						$('#body #content #portfolio #project #photos ul.photoOptions a.right').bind('mouseout', function() {
							$('#body #content #portfolio #project #photos #photo img').stop();
						});

						$('#body #content #portfolio #project #photos ul.photoOptions a.left').bind('mouseover', function() {
							marginPresent = Math.floor($('#body #content #portfolio #project #photos #photo img').css('margin-left').replace('-', '').replace('px', ''));
							speed = 0.25*ratio*marginPresent;
							$('#body #content #portfolio #project #photos ul.photoOptions a.right').show();
							$('#body #content #portfolio #project #photos #photo img').animate({marginLeft: '0'}, speed, function() {
								$('#body #content #portfolio #project #photos ul.photoOptions a.left').hide();
							});
						});

						$('#body #content #portfolio #project #photos ul.photoOptions a.left').bind('mouseout', function() {
							$('#body #content #portfolio #project #photos #photo img').stop();
						});
					}
					else {
						$('#photos #photo ul.photoOptions').remove();;
						$('#photos #photo img').css('margin', '0 auto');
					}
				});
				
				$('#photos #photo img').attr('alt', 'Photo #'+id+' by Nicolas Grospierre');

				$.post("/magic.php", {
					action: 'getPhotoDescription',
					photo: $('#photos #list ul.items #photo'+id+' a').attr('class').replace('photo','')
				}, function(response) {
					if(response != '') {
						$('#photos #photo #subcontainer').after('<p>'+response.replace("\n",'<br><br>')+'</p>');
					}
				});
			}
		}
		
		function bindActions() {
			if(listWidth > 960) {	
				$('#body #content #portfolio #project #photos #list ul.itemsOptions a.next, #body #content #portfolio #project #photos #list ul.itemsOptions a.previous').bind('click', function(event) {
					event.preventDefault();
				})

				marginDestination = 960-listWidth;
				marginDestinationNatural = listWidth-960;
				speedMax = marginDestinationNatural*$('#body #content #portfolio #project #photos #list ul li').size();
				ratio = speedMax/marginDestinationNatural;
				
				$('#body #content #portfolio #project #photos #list ul.itemsOptions a.next').bind('mouseover', function() {
					marginPresent = Math.floor($('#body #content #portfolio #project #photos #list ul').css('margin-right').replace('-', '').replace('px', ''));
					if(marginPresent == 0)
					{
						marginPresent = marginDestinationNatural;
					}
					speed = 0.25*ratio*marginPresent;
					$('#body #content #portfolio #project #photos #list ul.itemsOptions a.previous').css('display', 'block');
					$('#body #content #portfolio #project #photos #list ul').animate({marginLeft: marginDestination}, speed, function() {
						$('#body #content #portfolio #project #photos #list ul.itemsOptions a.next').css('display', 'none');
					});
				});

				$('#body #content #portfolio #project #photos #list ul.itemsOptions a.next').bind('mouseout', function() {
					$('#body #content #portfolio #project #photos #list ul').stop();
				});

				$('#body #content #portfolio #project #photos #list ul.itemsOptions a.previous').bind('mouseover', function() {
					marginPresent = Math.floor($('#body #content #portfolio #project #photos #list ul').css('margin-left').replace('-', '').replace('px', ''));
					speed = 0.25*ratio*marginPresent;
					$('#body #content #portfolio #project #photos #list ul.itemsOptions a.next').css('display', 'block');
					$('#body #content #portfolio #project #photos #list ul').animate({marginLeft: '0'}, speed, function() {
						$('#body #content #portfolio #project #photos #list ul.itemsOptions a.previous').css('display', 'none');
					});
				});

				$('#body #content #portfolio #project #photos #list ul.itemsOptions a.previous').bind('mouseout', function() {
					$('#body #content #portfolio #project #photos #list ul').stop();
				});
			}
			
			$('#photos #photo #subcontainer a').live('click', function(event) {
				event.preventDefault();

				id = parseInt($(this).attr('href').replace('/portfolio/'+project+'/#', '').replace('/', ''));
				nextPhoto = parseInt($(this).attr('href').replace('/portfolio/'+project+'/#', '').replace('/', ''))+1;
				
				if($('#photo'+nextPhoto).length)
				{
					if(!$('#photos #photo #subcontainer a').length) {
						$('#photos #photo img').wrap('<a></a>');
					}

					$('#photos #photo #subcontainer a').attr('href', '/portfolio/'+project+'/#/'+nextPhoto);
				}
				else
				{
					if($('#photos #photo #subcontainer a').length) {
						image = $('#photos #photo img').clone();
						$('#photos #photo #subcontainer a').remove();
						$('#photos #photo #subcontainer').prepend(image);
					}
				}
				
				setThumbnails();
				showPhoto();
			});
			
			$('#photos #list ul.items li a').bind('click', function(event) {
				event.preventDefault();
			
				id = parseInt($(this).attr('href').replace('/portfolio/'+project+'/#', '').replace('/', ''));
				nextPhoto = parseInt($(this).attr('href').replace('/portfolio/'+project+'/#', '').replace('/', ''))+1;
				
				if($('#photo'+nextPhoto).length)
				{
					if(!$('#photos #photo #subcontainer a').length) {
						$('#photos #photo img').wrap('<a></a>');
					}

					$('#photos #photo #subcontainer a').attr('href', '/portfolio/'+project+'/#/'+nextPhoto);
				}
				else
				{
					if($('#photos #photo #subcontainer a').length) {
						image = $('#photos #photo img').clone();
						$('#photos #photo #subcontainer a').remove();
						$('#photos #photo #subcontainer').prepend(image);
					}
				}
				
				setThumbnails();
				showPhoto();
			});
			
			$('#body #content #portfolio #project #photos #list').css('opacity', 0);
			$('#body #content #portfolio #project #photos #list ul.itemsOptions').hide();
			
			$('#body #content #portfolio #project #photos #list').bind('mouseover', function() {
				$('#body #content #portfolio #project #photos #list ul.itemsOptions').show();
				$('#body #content #portfolio #project #photos #list').clearQueue();
				$('#body #content #portfolio #project #photos #list').animate({
					opacity: 1
				}, 500);
			});
			
			$('#body #content #portfolio #project #photos #list').bind('mouseout', function() {
				$('#body #content #portfolio #project #photos #list ul.itemsOptions').hide();
				$('#body #content #portfolio #project #photos #list').clearQueue();
				$('#body #content #portfolio #project #photos #list').animate({
					opacity: 0
				}, 500);
			});
		}

		id = window.location.href.replace('http://', '');
	    id = id.replace(window.location.hostname, '');
	    id = id.replace(window.location.pathname, '');
	    id = id.replace('#/', '');
	
		if(id == '' || id >= photos) {
			id = 1;
		}
		
		id = parseInt(id);
		
		$('#photos #photo #subcontainer').css('overflow', 'hidden');

		showPhoto();	
		setThumbnails();
		bindActions();
		
		$('#menu ul ul').hide();
		
		$('#menu li.portfolio').bind('mouseover', function() {
			$('#menu ul ul').show();
		});
		
		$('#menu li.portfolio').bind('mouseout', function() {
			$('#menu ul ul').hide();
		});
		
		preloader = new Image();
		
		$('#photos #list ul.items li a').each(function() {
			preloader.src = '/images/photos/resized/'+$(this).attr('class').replace('photo','')+'.jpg';
		});
	}
});