// --------------------------------
// !PAGE
// --------------------------------
(function($) {

	$.fn.GYROPage = function(config) {

		var defaults = {};

		// -----------------------------------------
		// 
		// -----------------------------------------
		var homeLink;		
		var mainNavigation;
		var loadIndicator;
		var mouseArea;
		var mouseTooltip;
		var mouseTraps;
		var contentContainer;
		var captionContainer;
		var bgGallery;
		var pageData;


		if (config) {
			$.extend(defaults, config);
		}

		function update(newUrl) {
					
/*
			getPageData();		
			content.update(defaults);
			mainNavigation.selectItem();
*/
		}
		
		function getPageData() {
		
			// get the directory of the current url
			var urlDirectory = jQuery.url.attr("directory");
			
			// get the page data from the directory in url
			pageData = GYRO.getPageData(urlDirectory);
		
			// assign page content to config config
			defaults.content.content = pageData.content;
			
			// assign image source to the gallery config
			defaults.bgGallery.imageSources = (!jQuery.isArray(pageData.content.backgrounds)) ? []:pageData.content.backgrounds;
			defaults.bgGallery.imageCaptions = (!jQuery.isArray(pageData.content.captions)) ? []:pageData.content.captions;
			defaults.bgGallery.autoplay = pageData.content.autoplay;
		
			// get any anchors in the current url for starting image index
			// - must include base 10 in parseInt()
			var pageUrlImageIndex = parseInt(jQuery.url.attr("anchor"), 10);
			var numberOfImages = defaults.bgGallery.imageSources.length;
			if (pageUrlImageIndex > 0 && pageUrlImageIndex <= numberOfImages) {
				defaults.bgGallery.startImageIndex = pageUrlImageIndex - 1;
			} else {
				$.log("WARNING: Out of bound image index (" + pageUrlImageIndex + ") in URL. Defaulting to first image.");
				defaults.bgGallery.startImageIndex = 0;
			}
		}
						
		return this.each(function() {
		
			// -----------------------------------------
			// setup home link
/*
			var homeLink = jQuery(homeLinkContainerId);
			homeLink.children("a").click(function(){});
*/
			

			getPageData();		

		
		
			// -----------------------------------------
			// setup main navigation
			//var mainNavigation = jQuery(mainNavContainerId);


		

			// !Create/Instentiate Main Navigation
			if (defaults.mainNavigation) {
//				mainNavigation = $("body").GYROMainNavigation(defaults.mainNavigation);
			}

			// !Create/Instentiate Mouse Tooltip
			if (defaults.mouseTooltip) {
				mouseTooltip = $("body").GYROMouseTooltip(defaults.mouseTooltip);
			}
			
			// !Create/Instentiate Image Load Indicator
			if (defaults.loadIndicator) {
				loadIndicator = $("body").GYROLoadIndicator(defaults.loadIndicator);
			}

			// !Create/Instentiate Content
			if (defaults.content) {
				content = $(defaults.content.containerId).GYROContent(defaults.content);
			}

			// !Create/Instentiate Background Image Gallery
			if (defaults.bgGallery) {
				bgGallery = $("body").GYROBGGallery(defaults.bgGallery);
			}


// -------------------------------------------
// !EVENT HANDLER BINDINGS
// -------------------------------------------

			// !Load Indicator Event Bindings			
			if (loadIndicator && bgGallery) {
				bgGallery.bind("loadStart", loadIndicator.setLoadStart);
				bgGallery.bind("loadComplete", loadIndicator.setLoadComplete);
			}

			// !Mouse Tooltip and Trap Event Bindings			
			if (mouseTooltip.length > 0 && defaults.mouseTrapClass) {
				mouseTraps = $(defaults.mouseTrapClass);
				if (mouseTraps.length > 0) {
					mouseTraps.bind("mouseenter mouseover mousemove click", mouseTooltip.disable);
				}
			}
			
			// !Gallery and Mouse Tooltip Event Bindings
			if (bgGallery && mouseTooltip) {
				bgGallery.bind("mouseEnable", mouseTooltip.enable);
				bgGallery.bind("mouseDisable", mouseTooltip.disable);
				bgGallery.bind("mouseUpdate", mouseTooltip.update);
			}
			// !Content and Gallery Event Bindings
			if (content && bgGallery) {
				content.bind("newImages", bgGallery.update);
			}

			$.log("Finished initializing GYROPage");

		});

	};
		
})(jQuery);

