( function( $ ) {
	
	$( function() {

		$( 'a.prev' ).click( function() {
				
			if ( projectPickerPosition < 0 ) {
			
				projectPickerPosition += 1;
							
				movePortfolioPicker();
			
			}
			
			return false;

		});
		
		$( 'a.next' ).click( function() {
			
			if ( projectPickerPosition > -( getPortfolioCount() - 4 ) ) {

				projectPickerPosition -= 1;
			
				movePortfolioPicker();	
				
			}
			
			return false;

		});
		
		function movePortfolioPicker() {
			
			$( 'ul.project-picker-list' ).stop().animate( { left: ( projectPickerPosition * 69 ).toString() + 'px' }, 500, 'easeOutQuad' );
						
		}
		
		var projectPickerPosition = 0;
		
		function getPortfolioCount() {
			
			return $( 'ul.project-picker-list li' ).length;
			
		}
				
		function getPortfolioTypeNames() {
			
			var result = [];
			
			$( '.portfolio-slideshow' ).each( function( x ) {
				
				result.push( $( this ).attr( 'title' ) );
				
			});
			
			return result;
			
		}
		
		function getPortfolioNamesByType( portfolioType ) {
			
			var result = [];
			
			var portfolios = $( '.portfolio-slideshow[title=' + portfolioType + ']' );
			
			portfolios.find('.portfolio-images').each( function( i, portfolio ) {
				
				result.push( $( portfolio ).find( 'img:first' ).attr( 'title' ) );
				
			});
			
			return result;
			
		}
				
		function populatePortfolioTypeLinks() {
			
			var portfolioTypes = getPortfolioTypeNames();
			
			var portfolioTypesList = $( '#portfolio-type-switch' );
									
			var html = '';
			
			$.each( portfolioTypes, function( i, x ) {
												
				portfolioTypesList.append( '<li><a id="portfolio-type-' + x + '" href="#">' + x + '</a></li>' );
				
			});
			
			addEventsToPortfolioTypeLinks();
			
		}
		
		function addEventsToPortfolioTypeLinks() {
			
			var portfolioTypes = getPortfolioTypeNames();
			
			$.each( portfolioTypes, function( i, x ) {
				
				$( '#portfolio-type-' + x ).click( function() {
					
					$( '#portfolio-type-switch a' ).removeClass( 'active' );
					$( this ).addClass( 'active' );
					
					populatePortfolioSwitcher( x );
					
				});
				
			});
						
		}
		
		function populatePortfolioSwitcher( portfolioType ) {
			
			var projectPickerList = $( 'ul.project-picker-list' );
			
			projectPickerList.find('li').remove();
			
			$( '.portfolio-slideshow[title="' + portfolioType + '"] .portfolio-images' ).each( function( i, x ) {
				
				var src = $( x ).find( 'img:first' ).attr( 'src' ).replace( '/image/2/620/330/2/', '/image/2/47/212/2/' );
				
				projectPickerList.append( '<li><a title="portfolio-' + portfolioType + '-' + i.toString() + '"><img src="' + src + '" href="#" /></a></li>' );
				
			});
			
			addEventsToPortfolioSwitcher();
			
		}
		
		function addEventsToPortfolioSwitcher() {
			
			var projectPickerList = $( 'ul.project-picker-list' );
			
			projectPickerList.find('li a').each( function( i, x ) {
				
				var item = $( x );
				
				var itemTitle = item.attr( 'title' );
				
				var itemTitleParts = itemTitle.split('-');
				
				var portfolioType = itemTitleParts[1];
				
				var portfolioIndex = itemTitleParts[2];
				
				item.click( function() {
					
					selectedSlide = 0;
					showPortfolio( portfolioType, portfolioIndex );
					
				});
				
				if ( i == 0 ) { item.click(); }
				
			});
			
		}
		
		var selectedSlide = 0;
		
		function showPortfolio( portfolioType, portfolioIndex ) {
			
			$( '.portfolio-images' ).hide();
			
			var portfolioImages = $( '.portfolio-slideshow[title="' + portfolioType + '"] .portfolio-images:eq(' + portfolioIndex +  ')' );
			
			selectedPortfolio = portfolioImages;
			
			portfolioImages.show();
			
			var projectTitle = portfolioImages.attr( 'title' );
			
			var projectWorkDone = portfolioImages.find('img:first').attr( 'title' );
			
			var portfolioImagesCount = portfolioImages.find( 'img' ).length;
			
			var slidePicker = $( 'ul.slide-picker' );
			
			slidePicker.find( 'li' ).remove();
			
			for ( var i = 0; i < portfolioImagesCount; i++ ) {

				slidePicker.append( '<li><a title="slide-' + i.toString() + '" href="#">' + i.toString() + '</a></li>' );
								
			}
			
			slidePicker.find('a').each( function( i, x ) {
				
				var cache = $( x );
				
				cache.click( function() {
					
					slidePicker.find( 'a' ).removeClass( 'active' );
					
					$( this ).addClass( 'active' );
					
					portfolioImages.animate( { left: -(620 * i).toString() + 'px' }, 500, 'easeOutQuad' );
					
				});
			
				if ( i == 0 ) { cache.click(); }
								
			});
			
			if ( projectTitle.substring( 0, 7 ) == 'http://' ) {
				var url = projectTitle.substring( 7 );
				var html = '<p><em><a href="' +projectTitle + '" target="_blank">' + url + '</a></em>' + projectWorkDone + '</p>';
			}
			else {
				var html = '<p><em>' + projectTitle + '</em>' + projectWorkDone + '</p>';
			}
			
			var sliderCol1 = $( '.grid_slider_col1' );
			
			sliderCol1.find( 'p' ).remove();
			
			sliderCol1.append( html );
			
		}
		
		function beginAuto() {
			
			var slidePicker = $( 'ul.slide-picker' );
			$.doTimeout( 8000, function(){
				var slideCount = $( 'ul.slide-picker a' ).length;
				selectedSlide += 1;
				var a = $( 'ul.slide-picker a' ).get( selectedSlide % (slideCount) );
				$( a ).click()
				
				return true;
			});
			
		}
		
		
		function init() {
			
			populatePortfolioTypeLinks();
			
			parts = document.location.toString();
			parts = parts.split( '#' );
			if ( parts.length > 1 && parts[1].length > 0 ) {
				var a = $( '#portfolio-type-' + parts[1] ).get( 0 );
			}
			else
			{
				var a = $( '#portfolio-type-switch a' ).get( 0 );
			}
			$( a ).click();
			
			var a = $( 'ul.project-picker-list a' ).get( 0 );
			
			$( a ).click();
			
			var a = $( 'ul.slide-picker a' ).get( 0 );
			
			$( a ).click();
			
			beginAuto();
			
		}
		
		init();
				
	});
	
})( jQuery );