/*
* Scroll it! v0.01 - jQuery menu widget
* Copyright (c) 2008 Andres Pi
*
* andres(at)dreamsiteweb.com
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/

(function($) {
		  
jQuery.fn.scrollIt = function(settings){
	return this.each(function(i) {
		$this = $(this);
		settings = jQuery.extend({
					   
					   menuHeight: 100,
					   
					   menuHeightAdd: 0,
					   
					   itemHeight: 50,
					   
					   menuWidth: 'auto',
					   
					   menuListMarginLeft : 0,
					   
					   menuListMarginTop : 0,
					   
					   menuWidthAdd: 0,
					   
					   itemWidth: 'auto',
					   
					   scrollDuration: 500,
					   
					   scrollItwrapper: 'scrollItwrapper',
					   
					   scrollItwrapperMargin: '0 auto',
					   
					   vertical: false
					   
				   }, settings);

		var scrollInterval = settings.scrollDuration + 1;
		$this.addClass('scroll-menu').css('height', settings.menuHeight);
		var menuItems = $this.find('li')
		menuItems.css({
						  'height': settings.itemHeight,
						  'width': settings.itemWidth
						  });
		$this.find('li:last').addClass('last');
		$this.wrap('<div class=' + settings.scrollItwrapper + '></div>');
		$('.' + settings.scrollItwrapper).css({
											  width: settings.menuWidth + settings.menuWidthAdd,
											  margin: settings.scrollItwrapperMargin,
											  height: settings.menuHeight + settings.menuHeightAdd
											  });

		var menuList = $($this.children());				

		$this.parent().prepend('<div class="scroll-it-up left-arrow"></div>');
		$this.parent().append('<div class="scroll-it-down right-arrow"></div>');
			

		function scrollH(){	
			//Horizontal
			
			$("." + settings.scrollItwrapper + " .scroll-it-up").hover(
				function () {
					intervalo = setInterval(scrollMenuUp, scrollInterval);
				},
				function(){
					clearInterval(intervalo);
		
				}
			);
					
			$("." + settings.scrollItwrapper + " .scroll-it-down").hover(
				function () {
					intervalo = setInterval(scrollMenudown, scrollInterval);
				},
				function(){
					clearInterval(intervalo);
				}
			);	
				
			$('.' + settings.scrollItwrapper).addClass('horizontal').find('ul').css({
				'width': (settings.itemWidth * menuItems.length),
				'height': settings.itemHeight
			});
			
			$this.css({
					  'float': 'left',
					  'width': settings.menuWidth
					  })	

			$this.find('li').css('float', 'left');
			

			function scrollMenuUp(){
				if(settings.menuListMarginLeft < 0){

					settings.menuListMarginLeft += settings.itemWidth;

					menuList.animate({ 
						marginLeft: settings.menuListMarginLeft
					}, settings.scrollDuration );
					iluminaFlecha();				
				}else{

					clearInterval(intervalo);
				}
			}
		
		function scrollMenudown(){			
			if(Math.abs(settings.menuListMarginLeft) < Math.abs(settings.menuWidth - (settings.itemWidth * menuItems.length)) && menuItems.length * settings.itemWidth > settings.menuWidth){
				settings.menuListMarginLeft -= settings.itemWidth;
				menuList.animate({ 
					marginLeft: settings.menuListMarginLeft
				}, settings.scrollDuration );
				iluminaFlecha();
			}else{
			
				clearInterval(intervalo);
			}
		}	
		
		function iluminaFlecha(){
			
			if(Math.abs(settings.menuListMarginLeft) < Math.abs(settings.menuWidth - (settings.itemWidth * menuItems.length)) && menuItems.length * settings.itemWidth > settings.menuWidth){
				$("." + settings.scrollItwrapper + " .scroll-it-down").addClass('arrow-hover');
			}else{
			$("." + settings.scrollItwrapper + " .scroll-it-down").removeClass('arrow-hover');
			}
			if(settings.menuListMarginLeft < 0){
				$("." + settings.scrollItwrapper + " .scroll-it-up").addClass('arrow-hover');
			}else{
				$("." + settings.scrollItwrapper + " .scroll-it-up").removeClass('arrow-hover');
			}
			
		}
		
		iluminaFlecha();
		}
		
		function scrollV(){
			//vertical
			
			$("." + settings.scrollItwrapper + " .scroll-it-up").hover(
				function () {
					intervalo = setInterval(scrollMenuUp, scrollInterval);
				},
				function(){
					clearInterval(intervalo);
		
				}
			);
					
			$("." + settings.scrollItwrapper + " .scroll-it-down").hover(
				function () {
					intervalo = setInterval(scrollMenudown, scrollInterval);
				},
				function(){
					clearInterval(intervalo);
				}
			);	
				
			$('.' + settings.scrollItwrapper).find('ul').css({
				'width': settings.itemWidth,
				'height': (settings.itemHeight * menuItems.length)
			});

			function scrollMenuUp(){
				if(settings.menuListMarginTop < 0){

					settings.menuListMarginTop += settings.itemHeight;

					menuList.animate({ 
						marginTop: settings.menuListMarginTop
					}, settings.scrollDuration );
					iluminaFlecha();				
				}else{
					clearInterval(intervalo);
				}
			}
		
		function scrollMenudown(){			
			if(Math.abs(settings.menuListMarginTop) < Math.abs(settings.menuHeight - (settings.itemHeight * menuItems.length)) && menuItems.length * settings.itemHeight > settings.menuHeight){
				settings.menuListMarginTop -= settings.itemHeight;
				menuList.animate({ 
					marginTop: settings.menuListMarginTop
				}, settings.scrollDuration );
				iluminaFlecha();
			}else{
				clearInterval(intervalo);
			}
		}
		
		
		function iluminaFlecha(){
			
			if(Math.abs(settings.menuListMarginTop) < Math.abs(settings.menuHeight - (settings.itemHeight * menuItems.length)) && menuItems.length * settings.itemHeight > settings.menuHeight){
				$("." + settings.scrollItwrapper + " .scroll-it-down").addClass('arrow-hover');
			}else{
			$("." + settings.scrollItwrapper + " .scroll-it-down").removeClass('arrow-hover');
			}
			if(settings.menuListMarginTop < 0){
				$("." + settings.scrollItwrapper + " .scroll-it-up").addClass('arrow-hover');
			}else{
				$("." + settings.scrollItwrapper + " .scroll-it-up").removeClass('arrow-hover');
			}
		}
		iluminaFlecha();
		}
		
	if(settings.vertical == false){
		scrollH()
	}else{
		scrollV();
	}
		
	});
};
	

})(jQuery);