// Module pattern:
// http://yuiblog.com/blog/2007/06/12/module-pattern/

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

var Landing = (function($) {
	
    return {
	
		go: function() {
			for (var i in Landing.init) {
				Landing.init[i]();
			}
		},
		
		init: {
			
			createStateLists: function() {
				if (window.XMLHttpRequest) { // object detection to exclude IE6 and below
					var stateSelect = $('<li class="states">Select your State<ul></ul></li>');
					
					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);
							$('header nav > ul').append(stateSelect);
						}
					}
					else { // Other pages get the home page list thru Ajax
						stateSelect.find('ul').load('/index.html #main ul.states li', function(response, status, xhr) {
							if (status === "success") {
								Landing.misc.formatStateSelect(stateSelect);
								$('header nav > ul').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 setStateListsClasses
			
			setPhotoListsClasses: function() {
				$('.secondary ul.photos li').each(function() {
					$(this).addClass($(this).text().toLowerCase().replace(/ /g,'')).append('<span></span>');
				});
			}, // end setPhotoListsClasses
			
			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>');

					quotes.load('/testimonials.html #main .primary ul.quotes li', function(response, status, xhr) {
						if (status === "success") {
							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>');
							$('.info.group div.col.b p.testimonials').before(quote).find('a').text('Read more testimonials');
						}
					});
				} // end insertTestimonial	
			
		},
		
		misc: {
			
			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) + 1.9; 
								} 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
		}
	};

})(jQuery);
