/**
 * lh.js
 * @author Lewis Howles (lh)
 *
 * Default niceties and other Voodoo.
 */

var lh = {
	onReady : function() {
		$.getScript("scripts/analytics.js"); // google@issl		
		lh.externalLinks();
		lh.highlighter();
		
		$callToAction = $('#call-to-action');
		
		$(document).keyup(function(e) {
			if (e.keyCode == 27) { lh.$newsletter.fadeOut(1000); }   // escape key
		});
	},
	
	$newsletter : $('#newsletter'),
	
	$registration : $('#registration'),
	
	/*
	 * Set target blank on external links
	 */
	externalLinks : function() {
		$('a[rel~=external]')
			.attr('target', '_blank')
	},
	
	highlighter : function() {
		$('.fancy')
		.delegate('input, select, textarea', 'mouseover focusin mouseout focusout', function(e) {
			var isIn = (e.type === 'mouseover' || e.type === 'focusin');
			
			lh.toggleFocus($(this), isIn);
		});
	},
	
	toggleFocus : function($this, modifier) {
		$this.parent('li').not('.li-submit').toggleClass('focus', modifier);
	},
	
	validate : function(e) {
		var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i),
			$name = $('#name'),
			$sex = $('#sex'),
			$email = $('#email'),
			$end = lh.$newsletter.find('ol').last(),
			isValid = true;
			
		e.preventDefault();
		
		$end.find('.error').remove();
		
		if ($name.val() == '') {
			isValid = false;
			$end.append('<li class="error">Please enter a name</li>')
		}
		
		if ($sex.val() == '') {
			isValid = false;
			$end.append('<li class="error">Please enter a sex</li>')
		}
		
		if (!pattern.test($email.val()) || $email.val() == '') {
			isValid = false;
			$email.css('color', '#f00');
			$end.append('<li class="error">Please enter a valid e-mail address</li>')
		}
		
		if (!isValid)
			e.preventDefault();
	}
}

$(lh.onReady());
