// create an empty object if it doesn't already exist
// used for namespacing so we don't polute the global object.
// all other js should be added as methods to this
if (typeof kalkomey === 'undefined') {
	kalkomey = {};
}

kalkomey.fullBackground = function() {
	// make sure the backstrech plugin exists and this page is one we want it on
	if (typeof $.backstretch === 'function' && $('html').hasClass('cover')) {
		$.backstretch('/css/i/bg-hunter-cover-deer.jpg', {speed: 'fast'});
	}
};


jQuery(document).ready(function() {
	Landing.go();
	kalkomey.fullBackground();
});

// Module pattern:
// http://yuiblog.com/blog/2007/06/12/module-pattern/
var Landing = (function($) {

    return {

		go: function() {
			for (var i in Landing.init) {
				Landing.init[i]();
			}
		},

		init: {

			openExternalLinksInNewWindow: function() {
				$('a[rel*="external"]').live('click', function() {
					this.target='_blank';
				});
			}, // end openExternalLinksInNewWindow

			createStateLists: function() {
				if (window.XMLHttpRequest) { // object detection to exclude IE6 and below
					var stateSelect = $('<li class="states">Select your State<ul></ul></li>'),
						headerNav = $('header nav > ul');

					if ($('html#home').length) { // Home page gets list locally
						var states = $('#main ul.states li');

						if (states.length) {
							stateSelect.find('ul').append(states.clone());
							Landing.misc.formatStateSelect(stateSelect);
							headerNav.append(stateSelect);
						}
					}
					else { // Other pages get the home page list thru Ajax
						if (headerNav.length) {
							stateSelect.find('ul').load('/index.html #main ul.states li', function(response, status, xhr) {
								if (status === "success") {
									Landing.misc.formatStateSelect(stateSelect);
									headerNav.append(stateSelect);
								}
							});
						}
					}
				}
			}, // end createStateLists

			setStateListsClasses: function() {
				$('#main ul.states li a').each(function() {
					var span = $('<span class="logo"></span>');

					span.addClass($(this).text().toLowerCase().replace(/ /g,''));
					$(this).addClass('agency').append(span);
				});
			}, // end setListsClasses

			setPhotoListsClasses: function() {
				$('.secondary ul.photos li').each(function() {
					$(this).addClass($(this).text().toLowerCase().replace(/ /g,'')).append('<span></span>');
				});
			}, // end setListsClasses

			createEmailLink: function() {
				$('.emailobf').each(function() {
					var phrase = $(this);

					phrase.find('.ins').remove();

					var link = phrase.find('.link').text();
					var user = phrase.find('.user').text();
					var domain = phrase.find('.domain');
					var subject = link.replace(/ /g,'%20');

					phrase.html('<a href="mailto:' + user + '@' + domain.text() + '?subject=' + subject + '%20Inquiry">' + link + '</a>');
				});
			}, // end createEmailLink

			insertRandomTestimonial: function() {
					var quotes = $('<ul>'),
						testimonialWrap = $('p.testimonials');

					if (testimonialWrap.length) {
						quotes.load('/testimonials.html #main .primary ul.quotes li', function(response, status, xhr) {
							if (status === "success") {
								// Pick one random number out of number of testimonials found
								var i = Math.floor(Math.random() * quotes.find('li').length);
								var quote = quotes.find('li').slice(i, i+1).html();

								quote = $('<div class="quote group">' + quote + '</div>');
								testimonialWrap.before(quote).find('a').text('Read more testimonials');
							}
						});
					}
			}, // end insertTestimonial

			// because body margins are automatic we need to dynamically calculate the banner's margin and apply to Banner
			insertMiniGameBanner: function() {
				var windowWidth = $(window).width();
				var bodyWidth = $('body').width();
				var horizontalOffset = ((windowWidth - bodyWidth)/2)*(-1);
				$(".mini_game_banner_top").css({'margin-left':horizontalOffset,'width':windowWidth});
				$(window).resize(function() {
					windowWidth = $(window).width();
					bodyWidth = $('body').width();
					horizontalOffset = ((windowWidth - bodyWidth)/2)*(-1);
						if (windowWidth>bodyWidth) {
							$(".mini_game_banner_top").css({'margin-left':horizontalOffset,'width':windowWidth});
						}
					});
			}, // end insertMiniGameBanner

			// launch minigame
			playMiniGame: function() {
				$('[rel="modal"]').fancybox({
					'type'				: 'iframe',
					'autoDimensions'	: false,
					'height'			: 635,
					'width'				: 835,
					'hideOnOverlayClick': false,
					'overlayColor'		: 'rgb(0,0,0)',
					'overlayOpacity'	: 0.75,
					'padding'			: 0
				});
			}, // end minigame

			checkCoverPage: function() {
				// if background-size is suported and not IE6, manually stretch the background image
				var htmlEl = $('html');

				if (htmlEl.hasClass('cover') && htmlEl.hasClass('no-backgroundsize')) {
					Landing.misc.coverBackgroundImage(htmlEl);
				}
			} // end checkCoverPage

		}, // end init

		misc: {

			coverBackgroundImage: function(htmlEl) {
				var theWindow 		= $(window),
					bgImage 		= htmlEl.css('background-image').replace(/^url|[\("\)]/g, ''),
					htmlBgImage 	= $('<img src="'+ bgImage  +'" class="bgcover" alt="The hunter&rsquo;s quarry in its natural habitat." />').appendTo('body'),
					aspectRatio 	= htmlBgImage.width() / htmlBgImage.height();

			   	theWindow.resize(function() {
	                if ( (theWindow.width() / theWindow.height()) < aspectRatio ) {
						htmlBgImage.removeClass('bgheight bgwidth').addClass('bgheight');
						var xOffset = (theWindow.width() - htmlBgImage.width())/2;
						htmlBgImage.css('left', xOffset);
					} else {
						htmlBgImage.removeClass('bgheight bgwidth').addClass('bgwidth');
						var yOffset = (theWindow.height() - htmlBgImage.height())/2;
						htmlBgImage.css('top', yOffset);
					}
		        }).trigger("resize");
			}, // end coverBackgroundImage

			formatStateSelect: function(stateSelect) {
				var statesListItems = stateSelect.find('ul li');
				var statesLength = statesListItems.length;
				var topMarginVal;

				if (statesLength > 8) { // >8 states gets a 3-column menu
					var lengthMod = statesLength % 3;
					var colLength = lengthMod ? (statesLength-lengthMod)/3+1 : ((statesLength-lengthMod)/3);

					statesListItems.parent('ul').addClass('wide');
					for (var i = 0; i < 3; i++) {
						for (var j = 0; j < colLength; j++) {
							var k = i*colLength + j;

							if (statesListItems.get(k)) {
								switch (i) {
									case 1: statesListItems.get(k).className = 'center'; break;
									case 2: statesListItems.get(k).className = 'right'; break;
									default: statesListItems.get(k).className = 'left';
								}
							}

							if (i > 0 && j === 0) {
								// adjust for IE7's improper margin setting
								if ( $('html#home').hasClass('ie7') ) {
									topMarginVal = (colLength * 2) + 2.2;
								} else {
									topMarginVal = (colLength * 2);
								}

								statesListItems.get(k).style.marginTop = '-' + topMarginVal + 'em';
							}
							if (i === 2 && j === (colLength-(3-lengthMod)-1)) {
								if (lengthMod !== 0) {
									statesListItems.get(k).style.marginBottom = (4 / lengthMod) + 'em';
								}
							}
						}
					}
				}
				else { // <8 states get 1-column menu
					stateSelect.css('position','relative');
				}

				return stateSelect;

			} // end formatStateSelect

		} // end misc

	};

})(jQuery);
