jQuery(function($) {
	
	//page tabber switching
	$('.page_tabber ul li a').click(function(e) {
		e.preventDefault();
		
		var $this = $(this),
			$items = $this.closest('.page_tabber').siblings('.tab_items'),
			index = $this.parent().index();
		
		$this.parent().addClass('active').siblings().removeClass('active');
		
		$items.children().removeClass('active');
		$items.children(':eq('+index+')').addClass('active');
	});
	
	//tg4 results select
	$('#tg4_results').find('div.select_list_container div.select').click(function() {
		var $list = $(this).parent().find('div.select_list');
		
		if ($list.is(':visible'))
			$list.hide();
		else
			$list.show();
	});
	
	$(document.body).click(function(e) {
		var $target = $(e.target).closest('div.select_list_container'),
			$list = $('.tg4_results div.select_list_container div.select_list');
		
		if ($target.length == 0 && $list.is(':visible'))
			$list.hide();
	});
	
	//select tg4 result item
	$('#tg4_results').find('div.select_list_container div.select_list > div').click(function() {
		var $this = $(this),
			$resultsContainer = $this.closest('.select_list_container').siblings('.results_container'),
			$table = $resultsContainer.find('table'),
			$select = $this.closest('div.select_list_container').find('div.select div.middle'),
			$list = $this.closest('div.select_list'),
			id = $this.find('input[name=id]').val();
		test = $resultsContainer;
		if (id == currentTG4Challenge) {
			$list.hide();
			return;
		} else if (currentTG4Challenge == 0) {
			$resultsContainer.show();
		}
		
		currentTG4Challenge = id;
		
		$select.html($this.find('> div').html());
		$resultsContainer.find('div.table_heading span.title').text($this.find('.event_title').text());
		$list.hide();
		
		$table.find('tbody').html('<tr><td colspan="4"><em>Loading scores...</em></td></tr>');
		
		$.ajax({
			url: theajaxurl,
			dataType: 'json',
			type: 'POST',
			data: {action: 'get_frontend_results', id: id},
			success: function(data) {
				if (data.success) {
					$table.find('tbody').html(data.result);
				} else {
					$table.find('tbody').html('<tr><td colspan="4"><em>There are currently no scores for this challenge</em></td></tr>');
				}
			}
		});
	});
	
	var signupMessageTimer = 0;
	
	//cobs partner check
	$('.mg_cobs_registration_container').find('input[name=has_partner]').change(function() {
		if ($(this).val() == 'yes') {
			$('div.partner_group').show();
		} else {
			$('div.partner_group').hide();
		}
	});
	
	//cobs/megagate registration
	$('div.page_next_event_signup input[type=button]').click(function() {
		var $container = $(this).parent().parent().parent().find('.mg_cobs_registration_container'),
			data = {
				action: 'register_cobs_megagate',
				type: ($(this).hasClass('cobs_button') ? 'cobs' : 'megagate'),
				team_manager: $.trim($container.find('input[name=team_manager]').val()),
				first_name: $.trim($container.find('input[name=first_name]').val()),
				last_name: $.trim($container.find('input[name=last_name]').val()),
				email: $.trim($container.find('input[name=email]').val()),
				confirm_email: $.trim($container.find('input[name=confirm_email]').val()),
				has_partner: $container.find('input[name=has_partner]:checked').val() == 'yes' ? true : false,
				partner_name: $.trim($container.find('input[name=partner_name]').val()),
				team_name: $.trim($container.find('input[name=team_name]').val())
			},
			$message = $(this).closest('.page_next_event_signup').find('.message_text'),
			messageTimeout = function() {$message.text('')};
		
		if (!data.email || (data.email != data.confirm_email)) {
			clearTimeout(signupMessageTimer);
			$message.text('Please enter a valid email address and confirm it');
			signupMessageTimer = setTimeout(messageTimeout, 3000);
			return false;
		}
		
		if (!data.first_name || !data.last_name) {
			clearTimeout(signupMessageTimer);
			$message.text('Please enter both a first and a last name');
			signupMessageTimer = setTimeout(messageTimeout, 3000);
			return false;
		}
		
		if (data.type == 'cobs' && data.has_partner && (data.partner_name == '' || data.team_name == '')) {
			clearTimeout(signupMessageTimer);
			$message.text('Please enter a partner name and a team name');
			signupMessageTimer = setTimeout(messageTimeout, 3000);
			return false;
		}
		
		if (data.type == 'megagate' && !data.team_manager) {
			clearTimeout(signupMessageTimer);
			$message.text('Please enter a team manager');
			signupMessageTimer = setTimeout(messageTimeout, 3000);
			return false;
		}
		
		$message.text('Registering...');
		
		$.ajax({
			url: theajaxurl,
			dataType: 'json',
			type: 'POST',
			data: data,
			success: function(data) {
				if (data.success) {
					clearTimeout(signupMessageTimer);
					$('.page_next_event_signup').css('padding-bottom', '93px');
					$('.enter_email_submit_container input').hide();
					$message.text('Thank you for registering. Because of the limited number of spots available, we have to approve all ' + 
									'registrations prior to accepting payment. Once you have been accepted you will be sent a link to pay ' + 
									'via PayPal. Contact us if you would prefer to pay in an alternative method. Registration is not ' + 
									'finalized until payment is received. Thanks!');
				} else {
					clearTimeout(signupMessageTimer);
					$message.text(data.error);
					signupMessageTimer = setTimeout(messageTimeout, 3000);
				}
			}
		});
	});
	
	//cobs contact form
	$('#cobs_contact div.enter_email_submit_container input.contact_button').click(function() {
		var $container = $('div.cobs_contact'),
			data = {
				action: 'send_cobs_contact',
				name: $.trim($container.find('input[name=name]').val()),
				email: $.trim($container.find('input[name=email]').val()),
				message: $.trim($container.find('textarea[name=message]').val()),
				category: $.trim($container.find('select[name=category]').val())
			},
			$message = $container.find('.message_text'),
			messageTimeout = function() {$message.text('')};
		
		if (!data.email) {
			clearTimeout(signupMessageTimer);
			$message.text('Please enter a valid email address');
			signupMessageTimer = setTimeout(messageTimeout, 3000);
			return false;
		}
		
		if (!data.message) {
			clearTimeout(signupMessageTimer);
			$message.text('Please enter a message');
			signupMessageTimer = setTimeout(messageTimeout, 3000);
			return false;
		}
		
		$message.text('Submitting...');
		
		$.ajax({
			url: theajaxurl,
			dataType: 'json',
			type: 'POST',
			data: data,
			success: function(data) {
				if (data.success) {
					clearTimeout(signupMessageTimer);
					$message.text('Your message has been sent! We\'ll be getting back to you shortly.');
					signupMessageTimer = setTimeout(messageTimeout, 3000);
				} else {
					clearTimeout(signupMessageTimer);
					$message.text(data.error);
					signupMessageTimer = setTimeout(messageTimeout, 3000);
				}
			}
		});
	});
	
	//contact form
	$('#main_contact div.enter_email_submit_container input.contact_button').click(function() {
		var $container = $('div.cobs_contact'),
			data = {
				action: 'send_contact',
				name: $.trim($container.find('input[name=name]').val()),
				email: $.trim($container.find('input[name=email]').val()),
				message: $.trim($container.find('textarea[name=message]').val())
			},
			$message = $container.find('.message_text'),
			messageTimeout = function() {$message.text('')};
		
		if (!data.email) {
			clearTimeout(signupMessageTimer);
			$message.text('Please enter a valid email address');
			signupMessageTimer = setTimeout(messageTimeout, 3000);
			return false;
		}
		
		if (!data.message) {
			clearTimeout(signupMessageTimer);
			$message.text('Please enter a message');
			signupMessageTimer = setTimeout(messageTimeout, 3000);
			return false;
		}
		
		$message.text('Submitting...');
		
		$.ajax({
			url: theajaxurl,
			dataType: 'json',
			type: 'POST',
			data: data,
			success: function(data) {
				if (data.success) {
					clearTimeout(signupMessageTimer);
					$message.text('Your message has been sent! We\'ll be getting back to you shortly.');
					signupMessageTimer = setTimeout(messageTimeout, 3000);
				} else {
					clearTimeout(signupMessageTimer);
					$message.text(data.error);
					signupMessageTimer = setTimeout(messageTimeout, 3000);
				}
			}
		});
	});
});

function twitterCallbackAlt(twitters) {
  var statusHTML = [];
  for (var i=0; i<twitters.length; i++){
    var username = twitters[i].user.screen_name;
    var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {
      return '<a href="'+url+'">'+url+'</a>';
    }).replace(/\B@([_a-z0-9]+)/ig, function(reply) {
      return  reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>';
    });
    statusHTML.push('<li '+(i == 2 ? 'style="background:none"' : '')+'><span>'+status+'</span> '+
						'<div>' +
							'<a class="time_line" href="http://twitter.com/'+username+'/statuses/'+twitters[i].id_str+'" target="_blank">'+
							relative_time(twitters[i].created_at)+'</a>' +
							'<a class="time_line" href="http://twitter.com/'+username+'/statuses/'+twitters[i].id_str+'" target="_blank">reply</a>' +
							'<a class="time_line" href="http://twitter.com/'+username+'/statuses/'+twitters[i].id_str+'" target="_blank">retweet</a>' +
							'<a class="time_line" style="background:none" href="http://twitter.com/'+username+'/statuses/'+twitters[i].id_str+'" target="_blank">favorite</a>' +
						'</div>' +
					'</li>');
  }
  document.getElementById('twitter_update_list').innerHTML = statusHTML.join('');
}


var currentTG4Challenge = 0;
