/*
 * @Author Pepijn Schildkamp
 * @Date 2011 01 26
 * @Version 1
 * 
 * Javascript slider for horizontal. 
 */

(function($) {
	$.fn.Scroller = function(options) {
			options = $.extend( {
				
				defaults: {
					log: true,
					logType: { 	 log: 1,
								 info: 2 }
				},
				
				core : {
					Slides: $(this).find('.' + options.slideClassName),
					Navigation: $(this).find('.' + options.navigationClass),
					NextSlide: 1,
					Sliding: false
				},
				
				wrapper: $(this),
				mainWrapper: '',
				method: 'vertical',
				slideClassName: '',
				speed: 500,
				slideWrapper: '',
				navigationClass: '',
				navigationActiveClass: '',
				interval: {
							active: false,
							speed: 0,
							HoldOnMouseOver: false,
							holder: null
						  }	
			}, options );
				
		init();
		
		options.defaults.log = false;
		
		function init() {
			switch(options.method) {
				case 'vertical':
					
					break;
				case 'horizontal':
					options.wrapper.find('.' + options.slideWrapper).css({
						width: parseFloat(options.wrapper.width() * options.wrapper.find('.' + options.slideClassName).length)
					});
					break;
				
				default:
					throw('Slide method is not defined');
			}
			
			$.each(options.core.Navigation, function(i , e) {
				$(this).bind('click', function(e) {
					slide( i );
				});
			});
			
			if(options.interval.HoldOnMouseOver === true) {
				options.wrapper.find('.' + options.slideClassName).bind({
					mouseenter: function(e) {
						clearInterval(options.interval.holder);
						debug('clear');
						debug(options.interval.holder);
					},
					mouseleave: function(e) {
						if( options.interval.active === true ) {
							options.interval.holder = setInterval(function() { slide(options.core.NextSlide); }, options.interval.speed);
							debug('interval');
						}
					}
				});
			}
			
			if( options.interval.active === true ) {
				options.interval.holder = setInterval(function() { slide(options.core.NextSlide); }, options.interval.speed);
			}
		};
		
		function slide( iSlideId ) {
			if(options.core.Sliding === false) {
				options.core.Sliding = true;
				if(options.wrapper.find('.' + options.slideClassName).length > 1) {
				switch(options.method) {
					case 'vertical':
						alert('this function is not available');
						break;
					case 'horizontal':
						options.wrapper.find('.' + options.slideWrapper).animate( {
							'marginLeft' : options.wrapper.find('.' + options.slideClassName).width() * (-iSlideId)
						}, options.speed, function() {
							options.core.Sliding = false;
						});
						break;
					default:
						throw('Slide method is not defined');
				}
					$(options.core.Navigation).removeClass('Active');
					$(options.core.Navigation[iSlideId]).addClass('Active');
					
					options.core.NextSlide = ((options.core.NextSlide + 1) > ( (options.wrapper.find('.' + options.slideClassName).length) - 1) ) ? 0 : (options.core.NextSlide + 1);
				}
			}
		};
		
		function debug( mData, iType ) {
			if(options.defaults.log === true) {
				if ( typeof( console ) == 'undefined' ) {
						alert(mData);
				} else {
					switch(iType) {
						case options.defaults.logType.log:
							console.log(mData);
							break;
						case options.defaults.logType.info:
							console.info(mData);
							break;
						default:
							console.log(mData);
					}
				}
			} else {
				//log staat uit
			}	
		};
	}
})(jQuery);

$(document).ready( function() {
	$('#SliderDeelnemers').Scroller({ 		mainWrapper: 'SliderWrapper',
											slideClassName: 'Slide',
											slideWrapper: 'SlidesWrapper',
											speed: 750,
											method: 'horizontal',
											navigationClass: 'Indicator',
											navigationActiveClass: 'Active',
											interval: {
														active: true,
														speed: 5000,
														HoldOnMouseOver: true
													  }
									   });

});
