/**
 * jQuery Plugin - Pages
 *
 * @author Jonnie Spratley http://jonniespratley.com
 * @version 0.1
 *
 *
 * Options -
 *	controlsID: 'menu', //The id for the menu. * Required
 * 	controlsClass: 'nav', //The class for the menu.
 * 	controlsTarget: null, //The target where the navigation will be injected.
 * 	menuItemWrap: 'ul', //The tag to wrap the whole menu for all pages.
 * 	controlWrap: 'li', //The tag to wrap each menu item.
 * 	pageTitle: 'title', //The attribute that will be the name of the link
 * 	selectedPageClass: 'selected', //The class for the current page.
 *
 *
 */
(function($){
	$.fn.pages = function(pageClass, pageOptions){
	
	
		/* ============================================================
		 * the default settings for this plugin
		 * ============================================================ */
		var pageSettings = 
		{
			controlsID: null,
			controlsClass: null,
			controlsTarget: null,
			controlsWrap: null,
			controlWrap: null,
			pageTitle: null,
			selectedPageClass: null,
			pageHideEffect: null,
			pageShowEffect: null,
			selectedPage: 0
		
		}
		//If there is any options
		if (pageOptions) {
				//Extends the jQuery object itself. Can be used to add functions into the jQuery namespace and to add plugin methods (plugins).
			$.extend(pageSettings, pageOptions);
		}
		
		return this.each(function(){
		
				//private self variable
			var pageThis = $(this);
			var pageArray = $(this).find(pageClass).get();
			var pageSize = pageArray.length;
			var menuArray;
			
			var me = $(this);
			var size;
			var i = 0;
			var navid = '#' + pageSettings.controlsID;
			
			/**
			 *
			 */
			function page_initPage(){
			
				size = $(pageClass, me).size();
				
				
				page_hidePages(pageClass);
				page_buildMenu();
				page_showPage();
				page_selectedPage();
			}
			
			/**
			 *
			 */
			function page_buildMenu(){
			
				var pageMenu = '';
				pageMenu += '<' + pageSettings.controlsWrap + ' id="' + pageSettings.controlsID + '" class="' + pageSettings.controlsClass + '">';
				
				//All of the pages that are in the menu
				for (var i = 0; i < pageArray.length; i++) {
					pageMenu += '<li><a href="#" rel="' + (i + 1) + '">' + pageArray[i].title + '</a></li>';
					//$(pageMenu).wrap(pageSettings.controlWrap);
				}
				
				pageMenu += '</' + pageSettings.controlsWrap + '>';
				
				$('#' + pageSettings.controlsTarget).append(pageMenu);
				
				menuArray = $('#' + pageSettings.controlsTarget).children();
			}
			
			/**
			 *
			 * @param {Object} pageNumber
			 */
			function page_showPage(){
			
						if (pageSettings.pageHideEffect) {
								$(me).find(pageClass).hide(pageSettings.pageHideEffect);
				}
				else {
								$(me).find(pageClass).hide();
				}
				
				var show = $(me).find(pageClass).get(i);
				
				if (pageSettings.pageShowEffect) {
				
								$(show).show(pageSettings.pageShowEffect);
				}
				else {
								$(show).show();
				}
				
			}
			
			/**
			 *
			 * @param {Object} pageNumber
			 */
			function page_selectedPage(){
			
						$(this).find(pageSettings.controlWrap).removeClass('selected');
				
				var show = $("#" + pageSettings.controlsID).find('a[rel]').get(0 + 1);
				$(show).addClass(pageSettings.highlightClass);
				
				pageSettings.selectedPage = i + 1;
				
				$('#' + pageSettings.controlsID).find('a').removeClass(pageSettings.selectedPageClass);
				$('#' + pageSettings.controlsID).find('a[rel="' + pageSettings.selectedPage + '"]').addClass(pageSettings.selectedPageClass);
				
			}
				
			/**
			 *
			 * @param {Object} whatPages
			 */
			function page_hidePages(whatPages){
						$(whatPages, pageThis).hide();
			}
			
			
			//Init the plugin	
			page_initPage();
			
			
			//Event Listeners
			$("a", '#' + pageSettings.controlsID).bind('click', function(event){
			
						var pagenum = event.currentTarget.rel;
				i = pagenum - 1;
				
				$(event.currentTarget).addClass(pageSettings.highlightClass);
				
				page_showPage();
				page_selectedPage();
				return false;
			});
			
			
			
			function dump(obj){
						var d = new Date();
				window.console.log(d.toUTCString() + ' - ' + obj);
				
				
			}
			
		});//return this.each 			
	};//$.fn.pages
})(jQuery);//function($)

