/*
	media mount version of slick slider
	http://sixrevisions.com/tutorials/javascript_tutorial/create-a-slick-and-accessible-slideshow-using-jquery/
	version 1.1
*/
(function($){
	$.fn.slickSlider = function(options) {
		var opts = $.extend($.fn.slickSlider.defaults,options);
		var timeout;
		
		j_slider = $(this);
		j_sliderID = j_slider.attr('id');
		
		j_slider.html('<div id="' + j_sliderID + 'slidesContainer">' + j_slider.html() + '</div>');
		
		var currentPosition = 0;
		var clicked = false;
		var slides = $('#' + j_sliderID + ' .slide');
		var numberOfSlides = slides.length;
		var slideWidth = opts.width;
		var slideHeight = opts.height;
		var navButton = opts.navButtonWidth;		// width/height of navigation buttons
		
		
		return this.each(function() {
								  
			// Remove scrollbar in JS
			$('#' + j_sliderID + 'slidesContainer').css('overflow', 'hidden');

			// Wrap all .slides with slideInner div
			slides
			.wrapAll('<div class="slideInner"></div>')
			// Float left to display horizontally, readjust .slides width
			.css({
			  'float' : 'left',
			  'width' : slideWidth
			});
			
			// Set slideInner width equal to total width of all slides
			$('.slideInner').css('width', slideWidth * numberOfSlides);
				// Insert controls in the DOM
				j_slider
				.prepend('<div class="control" id="' + j_sliderID + 'leftControl"></div>')
				.append('<div class="control" id="' + j_sliderID + 'rightControl"></div>');
	

			if (numberOfSlides > 0) {
				// Create event listeners for .controls clicks
				$('.control')
					.bind('click', function(){
						clicked = true;
						animate(this);
						clearTimeout(timeout);
				});
			}
			
			// manageControls: Hides and Shows controls depending on currentPosition
			function manageControls(position){
				if (numberOfSlides == 0) {
					$('#' + j_sliderID + 'rightControl').hide();
					$('#' + j_sliderID + 'leftControl').hide();
				}else{
				
					// Hide left arrow if position is first slide
					if(position==0){ $('#' + j_sliderID + 'leftControl').hide()} else{ $('#' + j_sliderID + 'leftControl').show() }
					// Hide right arrow if position is last slide
					if(position==numberOfSlides-1){ $('#' + j_sliderID + 'rightControl').hide() } else{ $('#' + j_sliderID + 'rightControl').show() }
				}
			}
			
			function animate(that){

				// Determine new position
				if (that == "first") currentPosition = -1;
				currentPosition = ($(that).attr('id')== j_sliderID + 'leftControl') ? currentPosition-1 : currentPosition+1;

				// Hide / show controls
				manageControls(currentPosition);
                
				// Move slideInner using margin-left
				$('.slideInner').animate({
				  'marginLeft' : slideWidth *(-currentPosition) - (-currentPosition) - 1 + (-currentPosition)
				});

				if (currentPosition+1 < slides.length && !clicked)
					timeout = setTimeout(function(){
						animate("next",false);
					},opts.pause);
					
				if(currentPosition+1 == slides.length && !clicked && opts.loop) 
				timeout = setTimeout(function(){
						animate("first",false);
					},opts.pause);
				
				
			};			
		
			/************************************************/
			/*	Apply CSS Styles							*/
			/************************************************/

  			$('.control').css({
				'display':'block',
				'cursor':'pointer',
				'text-indent':'-10000px',
				'position':'absolute',
				'width':navButton + 'px',
				'height':slideHeight+'px'
			});
			
			j_slider.css({
				'position':'relative',
				'margin':'0 auto',
				'background':opts.backgroundColor + ' ' + opts.backgroundImage + ' 0 0',
				'width':( slideWidth + ( parseInt($('.control').css('width')) * 2) )+'px',
				'height':slideHeight+'px'
			});
					
			$('#' + j_sliderID + 'slidesContainer').css({
				'position':'relative',
				'margin':'0 auto',
				'overflow':'hidden',
				'overflowX':'hidden',
				'width': slideWidth +'px',
				'height':slideHeight+'px'
			});
			
			$('#' + j_sliderID + 'slidesContainer .slide').css({
				'width': ( parseInt($('#' + j_sliderID + 'slidesContainer').css('width')) ) - 6 +'px',
				'height':slideHeight+'px',
				'paddingRight':'3px',
				'paddingLeft':'3px',
				'overflow':'auto'
			});
			
			$('#' + j_sliderID + 'leftControl').css({
				'top':'0',
				'left':'0',
				'background':'transparent url(/inc/jquery/slickslide/left.png) no-repeat 0px ' + ((slideHeight/2) - (navButton/2)) + 'px'
			});
			
			$('#' + j_sliderID + 'rightControl').css({
				'top':'0',
				'right':'0',
				'background':'transparent url(/inc/jquery/slickslide/right.png) no-repeat 0px ' + ((slideHeight/2) - (navButton/2)) + 'px'
			});
			
			// Hide left arrow control on first load
			manageControls(currentPosition);
			
			// Animate if applicable
			if(opts.auto){;
				timeout = setTimeout(function(){
					animate("next",false);
				},opts.pause);
			};	
		});
	};
	
	$.fn.slickSlider.defaults = {
		width: 560,
		height: 263,
		backgroundImage:'',
		backgroundColor:'transparent',
		navButtonWidth:39,
		auto:true,
		pause:3500,
		loop:true
	};
})(jQuery);
