
/* Copyright (c) 2011 der|Design */

(function($) {  

	/* Slider Class */
	
	Der.classes.Slider = function(id, type, options, container) {
		
		var self = this;
		
		self.id = id;
		
		self.type = type;
		
		self.options = options;
		
		self.content = null;
		
		var controls = container.find('.post-meta ul.controls');
		
		var slider_container = container.find('.slider .container');
		
		/* Private Methods */
		
		function generate_controls() {
			
			if ( self.content.length <= 1 ) { return; } // Don't generate controls if not more than 1 image

			var first = true;
			
			var classname, html = '', images = '';

			for (var i=0; i < self.content.length; i++) {
				
				classname = 'control';
				
				if ( first ) { classname += ' active'; first = false; }
				
				else { images += '<img width="' + self.options.width + '" height="' + self.options.height + '" src="' + self.content[i] + '" />\n'; }
				
				html += '<li rel="' + i + '" class="' + classname + '"></li>\n'; // Add controls code
				
			}
			
			controls.html(html);
			
			slider_container.append(images).nivoSlider({
				pauseTime: Der.options.portfolio_slider_pausetime,
				animSpeed: Der.options.portfolio_slider_speed,
				slices: Der.options.portfolio_slider_pieces,
				effect: Der.options.portfolio_slider_effect,
				manualAdvance: true,
				controlNav: true,
				beforeChange: function() {}
			});
			
			var nivo_controls = container.find('.nivoSlider .nivo-controlNav a');
			
			self.nivoSlider = slider_container.data('nivo:vars'); // Public nivoSlider object
			
			controls.find('> li.control').click(function() {
				
				if ( self.nivoSlider.running ) { return false; } // If nivoSlider is busy, return
				
				var i = parseInt($(this).attr('rel'));
				
				$(this).addClass('active').siblings().removeClass('active');
				
				nivo_controls.eq(i).click(); // Forward click event to nivo-controlNav
				
			});
			
		}
		
		/* Public Methods */

		this.set_content = function(content) {
			
			self.content = Array( container.find('.slider .container img').attr('src') ).concat(content);
			
			generate_controls();

		}
		
	}
	
	queue_ready_fn(function() {
		
		Der.create_objects('portfolio_slider', Der.classes.Slider, '#portfolio #portfolio-1col .post', true);
		
	});

})(jQuery);
