var timeLeft;

$(function() {
	initBinding();
	$("#accordion").accordion( {
		animated : 'bounceslide'
	});
});

function initBinding() {

	$('a.login_with_twitter').live('click', function(event) {
		event.preventDefault();
		$.oauthpopup( {
			path : '/auth/twitter',
			callback : function() {
				window.location = '/';
			}
		});
	});
	
	$('a.login_with_triviosity').live('click', function(event) {
		// popup dialog, or follow through to /auth/login
		event.preventDefault();
		$('#login-box-modal').dialog( {
			modal : true,
			height: 300,
			width: 760
		});
	});
	$('a.login_with_facebook').live('click', function(event) {
		event.preventDefault();
		FB.login(function(response) {
			if (response.session) {
				// user successfully logged in
				window.location = '/';
			} else {
				// user cancelled login
				window.location.reload();
			}
		}, {scope : 'publish_actions'} );
	});
	$('#facebook_auto_publish').click(function(event) {
		if ($('#facebook_auto_publish').attr('checked') == true) {
			FB.login(function(response) {
				if (response.session) {
					$('#facebook_auto_publish').attr('checked', true);
				} else {
					$('#facebook_auto_publish').attr('checked', false);
				}
			}, {
				scope : 'publish_actions,publish_stream'
			});
		}
	});
	$('.logout').click(function() {
		FB.logout(function(response) {
			// user is now logged out
			});
		window.location = '/auth/logout';
	});

	$('.external').attr("target", "_new");
	$('.external').click(function() {
		pageView('/external/' + $(this).attr('href'));
	});

	// this is for buttons
	$('.user-action-link').hover(function() {
		$(this).addClass('ui-state-hover');
	}, function() {
		$(this).removeClass('ui-state-hover');
	});

	$("#calendar").datepicker( {
		dateFormat : 'yymmdd',
		showOtherMonths : true,
		selectOtherMonths : true,
		defaultDate : $('#calendar-default-date').val(),
		maxDate : $('#calendar-max-date').val(),
		minDate : $('#calendar-min-date').val(),
		onSelect : function(dateText, inst) {
			window.location = '/scores/' + dateText;
		}
	});

	var tabValid = true; // set this to false to prevent tab switching
	$('#settings-tabs').tabs( {
		select : function(event, ui) {
			return true;
		}
	});

	$('#groups_create').submit(function() {
		// assemble the form
			var data = {
				"settings" : [ {
					"value" : $('#groups_create_name').val(),
					"name" : "group_name"
				}, {
					"value" : $('#groups_create_privacy:checked').val(),
					"name" : "privacy"
				} ]
			};
			$('#groups_create_box').html(
					'<img height="32" width="32" src="/images/spinner.gif"/>');
			$.ajax( {
				type : 'POST',
				data : data,
				url : '/ajax/save-group-name',
				success : function(data) {
					$('#groups_create_box').html(data.message);
					initBinding();
					setTimeout(function() {
						$("#groups_create_messages").fadeOut(500);
					}, 2500);
				}
			});
			return false;
		});

	var firstClick = true;
	$('#email_address_value').click(function() {
		if (firstClick) {
			// select all
			$('#email_address_value').select();
			firstClick = false;
		}
	});
	var firstKey = true;
	var originalValue = $('#email_address_value').val();
	$('#email_address_value').keydown(function(event) {
		if (firstKey) {
			// do stuff on first key press.
			firstKey = false;
		}
		if (event.keyCode == 13) {
			return false;
		}
		return true;
	});

	$('#email_address_value').keyup(function(event) {
		if ($('#email_address_value').val() == originalValue) {
			$('#email_address_save').addClass('ui-helper-hidden');
		} else if ($('#email_address_value').val() != originalValue) {
			$('#email_address_save').removeClass('ui-helper-hidden');
		}
	});

	$('#email_address_save').click(function(event) {
		// disable button
			$('#email_address_save').attr('disabled', 'disabled');
			var value = $('#email_address_value').val();
			var data = {
				"settings" : [ {
					"value" : value,
					"name" : 'emailAddress'
				} ]
			};
			// save it!
			$.ajax( {
				type : 'POST',
				url : '/ajax/save-email',
				data : data,
				success : function(data) {
					$('#mini_messages').html(data.message);
					if (data.status == 'OK') {
						originalValue = $('#email_address_value').val();
						$('#email_address_save').addClass('ui-helper-hidden');
					}
					firstClick = true;
					$('#email_address_save').attr('disabled', '');
					setTimeout(function() {
						$('#mini_messages').fadeOut(500);
					}, 2500);
				}
			});
			return false;
		});

	timeLeft = $('#score-time-left').val();
	if (timeLeft > 0) {
		setTimeout('updateClock()', 1000);
	}

	$('#change_password_save').click(function() {
		// assemble the form
			var data = {
				"settings" : [ {
					"value" : $('#change_password_1').val(),
					"name" : "password_1"
				}, {
					"value" : $('#change_password_2').val(),
					"name" : "password_2"
				} ]
			};
			$('#change_password_box').html(
					'<img height="32" width="32" src="/images/spinner.gif"/>');
			$.ajax( {
				type : 'POST',
				data : data,
				url : '/ajax/save-password',
				success : function(data) {
					$('#change_password_box').html(data.message);
					initBinding();
				}
			});
		});

	$('#change_info_save').click(function() {
		// assemble the form
			var data = {
				"settings" : [ {
					"value" : $('#change_info_firstname').val(),
					"name" : "firstname"
				}, {
					"value" : $('#change_info_lastname').val(),
					"name" : "lastname"
				} ]
			};

			$('#change_info_box').html(
					'<img height="32" width="32" src="/images/spinner.gif"/>');
			$.ajax( {
				type : 'POST',
				data : data,
				url : '/ajax/save-user',
				success : function(data) {
					$('#change_info_box').html(data.message);
					initBinding();
				}
			});
		});

	$('input.check_and_save')
			.click(
					function() {
						var value = $(this).attr('checked');
						var name = $(this).attr('id');

						var data = {
							"settings" : [ {
								"value" : value,
								"name" : name
							} ]
						};
						$('#mini_messages')
								.html(
										'<img height="32" width="32" src="/images/spinner.gif"/>');
						$.ajax( {
							type : 'POST',
							url : '/ajax/save-settings',
							data : data,
							success : function(data) {
								$('#mini_messages').html(data.message);
								$('#mini_messages').fadeIn(500);
								setTimeout(function() {
									$('#mini_messages').fadeOut(500);
								}, 2500);
							}
						});
					});

	$('.add_members')
			.click(
					function() {
						var idstring = $(this).attr('id');
						var parts = idstring.split('_');
						var groupid = parts[2];
						$('#add_members_dialog')
								.dialog(
										{
											width : 400,
											modal : true,
											open : function(event, ui) {
												$('#add_members_input').focus();
												$('#add_members_input')
														.autocomplete(
																{
																	source : '/ajax/find-user',
																	minLength : 2,
																	select : function(
																			event,
																			ui) {
																		// ajax
																		// call
																		// to
																		// submit
																		// the
																		// user
																		var userid = ui.item.id;
																		var url = '/ajax/groups/userid/'
																				+ userid
																				+ '/groupid/'
																				+ groupid
																				+ '/do/add';
																		$
																				.ajax( {
																					type : 'GET',
																					url : url,
																					success : function(
																							data) {
																						$(
																								'#add_members_info')
																								.html(
																										data.message);
																						$(
																								'#add_members_input')
																								.val(
																										'');
																					}
																				});
																	}
																});
											}
										});
					});

	$('.join_group').click(function(event) {
		event.stopPropagation();
		var idstring = $(this).attr('id');
		var target = this;
		var parts = idstring.split('_');
		var groupid = parts[1];
		var url = '/ajax/groups/groupid/' + groupid + '/do/add';
		$.ajax( {
			type : 'GET',
			url : url,
			success : function(data) {
				$(target).html(data.message);
			}
		});

	});

	$('.leave_group').click(function(event) {
		event.stopPropagation();
		var idstring = $(this).attr('id');
		var target = this;
		var parts = idstring.split('_');
		var groupid = parts[1];
		var url = '/ajax/groups/groupid/' + groupid + '/do/remove';
		$.ajax( {
			type : 'GET',
			url : url,
			success : function(data) {
				$(target).html(data.message);
			}
		});
	});

	$('.sponsor').live('click', function(e) {
		var extra = $(this).attr('title');
		$(this).attr('target', '_blank');
		$.ajax( {
			type : 'GET',
			url : '/ajax/t/' + extra,
			success : function(data) {
			}
		});
	});

	$('#group_filter').live('change', function(e) {
		window.location = "?g_group=" + $(this).val() + "#scores";
	});
}

function updateClock() {
	if (timeLeft > 0) {
		timeLeft = timeLeft - 1;
		if (timeLeft == 1) {
			var end = ' second';
		} else {
			var end = ' seconds';
		}
		if (timeLeft > 15) {
			$('#score-time-left-display').addClass('green');
		} else if (timeLeft > 7) {
			$('#score-time-left-display').removeClass('green');
			$('#score-time-left-display').addClass('amber');
		} else if (timeLeft > 0) {
			$('#score-time-left-display').removeClass('amber');
			$('#score-time-left-display').addClass('red');
		}
		$('#score-time-left-display').text(timeLeft + end);
		setTimeout('updateClock()', 1000);
	} else {
		// expired, redirect.
		window.location = '/index/answer/choice/time-out/q_sig/' + $(
				'#question-qsig').val();
	}
}

function pageView(url) {
	// add google analytics code
}

