/**
 * Progressive enhancement Scroll JQuery Plugin 
 * by Taioli Fabiano - Vista Tecnologie
 * 
 * - Require iScroll v4.1.2+ by Matteo Spinelli http://cubiq.org 
 * 
 * ftaioli@vista.it
 */
(function($) {
	$.fn.peScroll = function(options) {
				
		var settings = {
			scroller : this,
			scrollerCont : $(':first-child',this),
            upButton : $(".up", this.parent()),
            dwButton : $(".down", this.parent()),
			lfButton : $(".left", this.parent()),
			rgButton : $(".right", this.parent()),
			pageSize : false
		}
		
		var isTouch = function() {  
			  try {  
			    document.createEvent("TouchEvent");  
			    return true;  
			  } catch (e) {  
			    return false;  
			  }  
			}
		
		var checkUpDown = function(){            
			if(settings.scroller.height()>settings.scrollerCont.height()){
				settings.upButton.hide()
				settings.dwButton.hide()
			} else {
				settings.upButton.show()
				settings.dwButton.show()
			}
		}

		return this.each(function() {

			var $this = $(this)

			if (options) {
				$.extend(settings, options)
			}

			var scroller = settings.scroller
			var pageSize = settings.pageSize
			if (!pageSize) {
				pageSize = scroller.height() / 2
			}
			
			if ($.browser.msie) {
				scroller.css('overflow', 'hidden')
				var pageUp =function() {
					scroller.stop()
					scroller.animate({
						"scrollTop" : "-=" + pageSize + "px"
					}, "slow")
				}
				var pageDw = function() {
					scroller.stop()
					scroller.animate({
						"scrollTop" : "+=" + pageSize + "px"
					}, "slow")
				}
                var pageLf =function() {
                    scroller.stop()
                    scroller.animate({
                        "scrollLeft" : "-=" + pageSize + "px"
                    }, "slow")
                }
                var pageRg = function() {
                    scroller.stop()
                    scroller.animate({
                        "scrollLeft" : "+=" + pageSize + "px"
                    }, "slow")
                }
                settings.upButton.click(function() { pageUp() })
                settings.dwButton.click(function() { pageDw() })
				settings.lfButton.click(function() { pageLf() })
				settings.rgButton.click(function() { pageRg() })
				scroller.mousewheel(function(event, delta) {
					if (delta > 0)
						pageUp()
					else if (delta < 0)
						pageDw()
					return false;
					})
			} else {
				// touch scrolls
				var useBar = isTouch()
				var beautyScroller = new iScroll(scroller[0], {
					vScrollbar: useBar, hScrollbar: useBar, snap : true
				})
				$this.data('beautyScroller',beautyScroller)
				settings.upButton.click(function() {
					beautyScroller.scrollToPage(0, 'prev')
				})
				settings.dwButton.click(function() {
					beautyScroller.scrollToPage(0, 'next')
				})
                settings.lfButton.click(function() {
                    beautyScroller.scrollToPage('prev', 0)
                })
                settings.rgButton.click(function() {
                    beautyScroller.scrollToPage('next', 0)
                })
			}
			
			checkUpDown()
			$(window).resize(checkUpDown)

		})

	}
})(jQuery)
