/*
* Page Slider relies on:
* 
* 
* 
*/
(function($){
	$.fn.pageSlider = function(op) {
		var id;
		var iterator = 1;
		var item_count = 0;
		var panel_count = 0;
		var cntr=0;
		
		//Define jQuery objects for reuse
		var j_slider;
		var j_items;
		var j_slidePanel;
		var slidePanelWidth;
		var slidePanelHeight;
		var sliderOpts = $.extend({
							items: 6,
							transition_type: 'slide',
							transition_easing: 'easeInOutCubic',
							transition_speed: 800,
							transitionOut_speed: 200,
							transition_interval: 6000,
							auto_start: true,
							resume_after_click: 30000,
							inactive_img: "images/misc/slide_inactive.gif",
							active_img: "images/misc/slide_active.gif"
						},op);
		
			
		/************************************************/
		/*	Plugin Methods								*/
		/************************************************/	
		var showItem = function (index) {
			switch (sliderOpts.transition_type){
				case 'slide':
					j_slidePanel.stop().animate({'left': ((slidePanelWidth + 10) * ((index - 1) * -1))+'px'}, sliderOpts.transition_speed, sliderOpts.transition_easing);
					break;
				case 'slideUp':
					j_slidePanel.stop().animate({ top : (slidePanelHeight * ((index - 1) * -1))+'px'}, sliderOpts.transition_speed, sliderOpts.transition_easing);
					break;
				case 'fade': 
					if (iterator != index) {
						$('#' + id + '-page-'+iterator).fadeOut(sliderOpts.transitionOut_speed, function(){$('#' + id + '-page-'+index).fadeIn(sliderOpts.transition_speed);});
					}
					break;
			}
			$('.slidePoint[rel]', j_slider.parent()).css({'background-image': 'url(' + sliderOpts.inactive_img + ')'});
			$('.slidePoint[rel="' + index + '"]', j_slider.parent()).css({'background-image': 'url(' + sliderOpts.active_img + ')'});
			iterator = index;
		}
		var showNextItem = function () {
			var ind = iterator;
			$(document).stopTime(id+"-transition");
			if(++ind>panel_count) {ind=1;}
			showItem(ind);
			$(document).everyTime(sliderOpts.transition_interval,id+"-transition",function(){
				showNextItem();
			});
		};
		
		/************************************************/
		/*	Main Plugin Code							*/
		/************************************************/
		return this.each(function() {
			j_slider = $(this);
			
			//Assign elements to variables for reuse
			j_items = $('a',j_slider);
			
			id = j_slider.attr('id');
			
			//Number of items
			item_count = j_items.length;
			panel_count = Math.ceil(item_count / sliderOpts.items);
			
			/************************************************/
			/*	Apply CSS Styles							*/
			/************************************************/
			j_slider.css({
				clear:'both',
				overflow:'hidden',
				position: 'relative'
			});
			j_slider.parent().css({
				position: 'relative'
			});
			
			/************************************************/
			/*	Build Nav Bar and Sections					*/
			/************************************************/
			var nav = $('<div class="pageSliderNav" id="' + id + '-nav"></div>');
			var panel;
			var panels = $('<div>');
			for (var i=0;i<panel_count;i++) {
				panel = $('<div id="' + id + '-page-' + (i + 1) + '" class="pageSlider"></div>');
				$('a:eq(0), a:gt(0):lt(' + (sliderOpts.items - 1) + ')', j_slider).appendTo(panel); //.replaceAll("span")
				panel.appendTo(panels);
				nav.append('<div class="slidePoint" rel="' + (i + 1) + '"></div>');
			}
			j_slider.append(panels.html());
			nav.prependTo(j_slider.parent());
			$(".slidePoint", j_slider.parent()).css({
				'float': 'left',
				'margin-left': '6px',
				'width': '14px',
				'height': '14px',
				'background-image': 'url(' + sliderOpts.inactive_img + ')',
				'background-repeat': 'no-repeat',
				'cursor': 'pointer'
			});
			
			$(".slidePoint", j_slider.parent()).each(function(){
				$(this).click(function(){
					showItem($(this).attr('rel'), sliderOpts);
					$(document).stopTime(id+"-transition");
					if (sliderOpts.auto_start && sliderOpts.resume_after_click > 0) {
						$(document).stopTime(id+"-start");
						$(document).oneTime(sliderOpts.resume_after_click,id+"-start",function(){
							showNextItem();
						});
					}
				});
			});
			
			switch (sliderOpts.transition_type){
				case 'slide':
					slidePanelWidth = j_slider.parent().width();
					j_slidePanel = $('<div class="slidePanel" style="width:'+(panel_count * (slidePanelWidth+10))+'px;overflow:hidden;position:relative;"></div>');
					$(".pageSlider", j_slider).css({float: 'left', width : slidePanelWidth+'px'}).wrapAll(j_slidePanel);
					j_slidePanel = $(".slidePanel", j_slider);
					break;
				case 'slideUp': 
					slidePanelHeight = $(".pageSlider", j_slider).height();
					j_slidePanel = $('<div class="slidePanel" style="overflow:hidden;position:relative;"></div>');
					$(".pageSlider", j_slider).wrapAll(j_slidePanel);
					j_slidePanel = $(".slidePanel", j_slider);
					break;
				case 'fade': 
					$(".pageSlider:gt(0)", j_slider).hide();
					break;
			}
			
			/************************************************/
			/*	Initiate Automated Animation				*/
			/************************************************/
			//Show the first panel
			showItem(1);

			//If we have more than one item, begin automated transitions
			if(panel_count > 1) {
				if (sliderOpts.auto_start) {
					$(document).oneTime(sliderOpts.transition_interval * 1.2,id+"-start",function(){
						showNextItem();
					});
				}
			}
		});
	};
})(jQuery);