﻿/*---------------------------------------------------------------------------

	Title: Wag World Tour
	
	Author: Nathan Koch / Josh Minnich
	
	Version: 1.0
	
	Requires: jQuery 1.3.2
	
	Options:
	- bgiframe(boolean) requires bgiframe plug-in
	- closeBtn(string) jQuery selector string
	- siteRoot(string)
	- snippetPath(string)
	- params(object)
	- target(string) jQuery selector string
	- name(string)
	
	Callbacks: None
	
	Description: 

---------------------------------------------------------------------------*/

(function($)
{
	$.fn.wagWorldTour = function(options)
	{
		// Setting defaults
		var defaults = {
			bgiframe: true,
			closeBtn: '.close-tour-btn',
			siteRoot: '/',
			snippetPath: 'snippets/Tour.aspx',
			params: {},
			target: '.fire-tour',
			name: 'Tour',
			overlay: '#overlay'
        };
		
		// Merging defaults with sent options
  		var options = $.extend(defaults, options);
  		
  		// Provide methods for every matched element
  		return this.each(function()
  		{
  			// Selectors
  			var $close = $(options.closeBtn);
  			var $pane = $(this);
			var $target = $(options.target);
			var $overlay = $(options.overlay);
			
			// Variables
			var bgiframe = options.bgiframe;
			var name = options.name;
			var path = options.siteRoot + options.snippetPath;
			var params = options.params;
			var tourOpen = false;
			
			
			// Apply bgiframe plug-in
			if(bgiframe === true)
			{
				$('#results-sort-wrap').bgiframe();
			}
			
			// Set size of overlay
			var documentSize = {
				height: $(document).height(),
				width: $(document).width()
			};
			
			$overlay.css('height', documentSize.height).css('width', documentSize.width);
			
			// Open tour function
			openTour = function()
			{
				$('html, body').animate({ scrollTop: 0 }, 800, populate);
				
				$pane.show();
				$target.addClass('tour-open');
				$overlay.css('display', 'block');
				
				tourOpen = true;
			}
			
			// Close tour function
			closeTour = function()
			{
				$('html, body').animate({ scrollTop: 0 });
				
				$target.removeClass('tour-open');
				$overlay.css('display', 'none');
				
				resetTour();
				
				tourOpen = false;
			}
			
			// Reset tour back to first panel
			resetTour = function()
			{
				$('#search-tour-panel-2').hide();
				$('#search-tour-panel-3').hide();
				$('#search-tour-panel-1').show();
			}
			
			// Call ajax to put the tour modal on the page
			populate = function()
			{
				$.ajax({
					data: params,
					dataType: 'html',
					cache: false,
					type: 'GET',
					url: path,
					error: function(XMLHttpRequest, textStatus, errorThrown)
					{
						var msg = textStatus + ' loading: ' + name;
					},
					success: function(data, textStatus)
					{
						$pane.html(data);
						$pane.children("#search-tour-frame").bgiframe();
					}
				});
			}
			
			// Fire tour button event listener
			$target.click(function(event)
			{
				event.preventDefault();
				
				if(tourOpen === false)
				{
					openTour();
				}
				else
				{
					closeTour();
				}
			});
			
			// Close tour button event listener
			$close.live('click', function(event)
			{
				event.preventDefault();
				
				closeTour();
			});
			
			// "What Else Can I Do" event listener
			$('#what-else-can-i-do').live('click', function(event)
			{
				event.preventDefault();
				
				$('#search-tour-panel-1').hide();
				$('#search-tour-panel-3').hide();
				$('#search-tour-panel-2').show();
			});
			
			// "Tell Me More" event listener
			$('#tell-me-more').live('click', function(event)
			{
				event.preventDefault();
				
				$('#search-tour-panel-1').hide();
				$('#search-tour-panel-2').hide();
				$('#search-tour-panel-3').show();
			});
			
			// "Join WagWorld" event listener
			$('#join-wag-world, #tour-panel-2-text-link').live('click', function(event)
			{
				closeTour();
				
				$(document).trigger("registration.open", []);
			});
			
			// Tour pagination event listeners
			$('.tour-pagination > li > a').live('click', function(event)
			{
				event.preventDefault();
				
				if($(this).hasClass('one') === true)
				{
					$('#search-tour-panel-2').hide();
					$('#search-tour-panel-3').hide();
					$('#search-tour-panel-1').show();
				}
				else if($(this).hasClass('two') === true)
				{
					$('#search-tour-panel-1').hide();
					$('#search-tour-panel-3').hide();
					$('#search-tour-panel-2').show();
				}
				else if($(this).hasClass('three') === true)
				{
					$('#search-tour-panel-1').hide();
					$('#search-tour-panel-2').hide();
					$('#search-tour-panel-3').show();
				}
			});
  		});
	};
})(jQuery);
