
/* - jquery.slides.js - */
$.fn.panelSlider = function(settings) {
	settings = $.extend({
		btnPrev: null,
		btnNext: null,
		btnPlayPause: null,
		menuTabs: false,
		tabsItems: [],
		tabs: null,
		tabsColor: null,
		tabsBorderColor: null,
		tabsDim: 10,

		auto: null,
		time: 5000,
		speed: 850,
		easing: null,
		vertical: false,         	// per il momento lo slide verticale non Ã¨ implementato
		circular: true,				// per il momento non Ã¨ implementato
		visible: 3,
		start: 0,
		scroll: 1,
		beforeStart: null,       	// per il momento non Ã¨ implementato
		afterEnd: null           	// per il momento non Ã¨ implementato
	}, settings || {});

	return this.each(function(){
		var container = $(this);
		var panelWidth = container.width() || container.find(".panel").width();
                var panelHeight = container.find(".panel").height();
		var panelCount = container.find(".panel").size();
		var totalWidth = panelWidth*panelCount;
		var cPanel = 1;
		var playInterval = null;
		var playStatus = true;
                $(window).resize(updateSize);
		container.css({"overflow": "hidden", "position": "relative", "height":panelHeight})
		$(".panel", container).css({"float": "left", "width":panelWidth, "height":panelHeight});
		$("div.panelslider_container", container).css({"width": totalWidth, "position": "absolute", "height":panelHeight});


                function updateSize() {
                        if (playInterval)
                            clearInterval(playInterval);
			//container = $("#tabs-notizie");
			panelWidth = container.width() || container.find(".panel").width();
                        panelHeight = container.height() || container.find(".panel").height();
			var panelCount = container.find(".panel").size();
			var totalWidth = panelWidth*panelCount;
                        container.css({"height":panelHeight})
                        $(".panel", container).css({"width":panelWidth, "height":panelHeight});
		        $("div.panelslider_container", container).css({"width": totalWidth, "height":panelHeight});
                        goToPanel(0);
                        /*
			if(settings.auto) {
				playInterval = setInterval(function() { 
				goNext() 
				}, settings.time);
			}*/
                } 
		function createMenuTabs() {
			//tabs html
			var tab_items = settings.tabItems;
			if (!tab_items) return;
			var htmltabs = '<ul class="panelslider_tabcontainer">';
			for (i=0; i<panelCount; i++) {
				htmltabs += '<li class="tab"><a href="javascript:void(0)"><span>' + tab_items[i] + '</span></a></li>'
			}
			htmltabs +='<br class="clear"></ul>'
			$(settings.tabs).html(htmltabs);
	
			//tabs css
			//$("li.tab", settings.tabs).css({"list-style-type": "none", "float": "left", "font-size": settings.tabsDim, "height": settings.tabsDim, "width": settings.tabsDim, "margin-right": (settings.tabsDim/2)+3, "color": "#FFF", "border": "1px solid", "border-color": settings.tabsBorderColor});
			$("li.tab", settings.tabs).css({"list-style-type": "none", "float": "left"});
			//$("li.tab a", settings.tabs).css({"display": "block", "width": settings.tabsDim, "height": settings.tabsDim});
			//$("li.tab a span", settings.tabs).css({"display": "none"});
			var firstTab = $("li.tab", settings.tabs).get(0);
			$(firstTab).addClass("selected");
	
			//tabs events
			$("li.tab a", settings.tabs).each(function(z) {
				$(this).click(function(){
					goToPanel(z)
				});
			});
		}

		function createTabs() {
			//tabs html
			var htmltabs = '<ul class="panelslider_tabcontainer">';
			for (i=0; i<panelCount; i++) {
				htmltabs += '<li class="tab"><a href="javascript:void(0)">&nbsp;<span>' + (i+1) + '</span></a></li>'
			}
			htmltabs +='<br class="clear"></ul>'
			$(settings.tabs).html(htmltabs);

			//tabs css
			$("li.tab", settings.tabs).css({"list-style-type": "none", "float": "left", "font-size": settings.tabsDim, "height": settings.tabsDim, "width": settings.tabsDim, "margin-right": (settings.tabsDim/2)+3, "color": "#FFF", "border": "1px solid", "border-color": settings.tabsBorderColor});
			$("li.tab a", settings.tabs).css({"display": "block", "width": settings.tabsDim, "height": settings.tabsDim});
			$("li.tab a span", settings.tabs).css({"display": "none"});
			var firstTab = $("li.tab", settings.tabs).get(0);
			$(firstTab).addClass("selected");

			//tabs events
			$("li.tab a", settings.tabs).each(function(z) {
				$(this).click(function(){
					goToPanel(z)
				});
			});
		}

		function setCurrentTab() {
			$("li.tab", settings.tabs).removeClass("selected");
			var currentTab = $("li.tab", settings.tabs).get(cPanel-1);
			$(currentTab).addClass("selected");
		}

		function manageAutoSlide() {
			if (playStatus) {
				clearInterval(playInterval)
				playInterval = setInterval(function() { 
					goNext() 
				}, settings.time);
			}
		}

		function goPrev() {
			if (cPanel == 1) {
				var cnt = - (panelWidth*(panelCount - 1));
				cPanel = panelCount;
			} else {
				cPanel -= 1;
				var cnt = - (panelWidth*(cPanel - 1));
			};
			$("div.panelslider_container", container).animate({ left: cnt}, settings.speed, settings.easing);
			setCurrentTab();
			manageAutoSlide();
			return false;
		};

		function goNext() {
			if (cPanel == panelCount) {
				var cnt = 0;
				cPanel = 1;
			} else {
				var cnt = - (panelWidth*cPanel);
				cPanel += 1;
			};
			$("div.panelslider_container", container).animate({ left: cnt}, settings.speed, settings.easing);
			setCurrentTab();
			manageAutoSlide();
			return false;
		};

		function goToPanel(z) {
			var cnt = - (panelWidth*z);
			cPanel = z + 1;
			$("div.panelslider_container", container).animate({ left: cnt}, settings.speed, settings.easing);
			setCurrentTab();
			manageAutoSlide();
			return false;
		};
		
		if (settings.menuTabs) {
			createMenuTabs();
		} else {
			createTabs()
		}
		
		$(settings.btnPrev).click(function(){
			goPrev()
		});

		$(settings.btnPlayPause).click(function(){
			if (playStatus) {
				clearInterval(playInterval)
				playStatus = false;
			} else {
				playInterval = setInterval(function() { 
					goNext() 
				}, settings.time);
				playStatus = true;
			}
		});

		$(settings.btnNext).click(function(){
			goNext()
		});

		if(settings.auto) {
			playInterval = setInterval(function() { 
				goNext() 
			}, settings.time);
		}

	});
} 

