$(document).ready(function() {
	$("li[id^='select'] a").unbind('click').click(function() {
		var $target = $(this).parent();
		var $type = ($target.attr('class').match(/picture|frame|song/))[0];
		var $id = ($target.attr('class').match(/[pfs]\:(\d)/))[1];
							
		$target.siblings('.' + $type).children('a').removeClass('current');
		$target.children('a').addClass('current');
		
		$("#cardForm input[name*='" + $type + "']:hidden").val($id);
		return false;
	});
	
	$('#preview').unbind('click').click(function() {
		$('#cardForm').submit();
		return false;
	});
	$('#send').unbind('click').click(function() {
		$('#cardForm').attr({ action: './send.php' }).submit();
		return false;
	});
	
	$('#num_chars').text(140 - $('#cardForm textarea').val().length);
	
	$('#cardForm textarea').unbind('keyup').keyup(function() {
		var num_chars = $(this).val().length;
		
		if(num_chars >= 140)
			$(this).val($(this).val().slice(0, 140));
		
		$('#num_chars').text(140 - (num_chars > 140 ? 140 : num_chars));
	});
	
	$('#cardForm').unbind('submit').submit(function() {
		var errors = [];
		var fields = {
			'data[sender_name]': {
				'pattern': /[\w'".,]+/,
				'error_msg': 'Please provide your name.'
			},
			'data[sender_email]': {
				'pattern': /^([a-z]+[\w-]*\.?)+@([\w-]+\.)+[a-z]{2,4}$/i,
				'error_msg': 'Your email address must be valid.'
			},
			'data[friend_name]': {
				'pattern': /[\w'".,]+/,
				'error_msg': "Please provide your friend's name."
			},
			'data[friend_email]': {
				'pattern': /^([a-z]+[\w-]*\.?)+@([\w-]+\.)+[a-z]{2,4}$/i,
				'error_msg': "Your friend's email address must be valid."
			},
			'data[message]': {
				'pattern': /[\w'".,]+/,
				'error_msg': 'Please include a message.'
			},
			'data[picture]': {
				'pattern': /\d/,
				'error_msg': 'Please choose a picture.'
			},
			'data[frame]': {
				'pattern': /\d/,
				'error_msg': 'Please choose a frame.'
			},
			'data[song]': {
				'pattern': /\d/,
				'error_msg': 'Please choose a song.'
			}
		};
		
		$(this).find(':input').each(function() {
			var __name = $(this).attr('name');
			var __value = $(this).attr('value');
			
			if(__name in fields)
				if(!__value || !fields[__name]['pattern'].test(__value))
					errors.push(fields[$(this).attr('name')]['error_msg']);
		});
		
		if(!$("#email:checked").length && !$("#fb:checked").length)
			errors.push('You must choose at least one way to send your ecard.');
		
		if(errors.length) {
			errors.unshift('<b>The following error' + (errors.length > 1 ? 's' : '') + ' occurred:</b>');
			$('#errors').html(errors.join('<br />'));
			return false;
		}
	});
});