if (window.disqus === undefined) {
	var disqus = {};
}

(function () {
	var urls = {
		validate_create_forum: '/admin/json/validate_create_forum/',
		validate_register: '/auth/json/validate_register/'
	};

	disqus.initialize = function () {
		// Focus the first field
		$('input[tabindex=1]').focus();

		var updateHint = function(field, hint, placeholder) {
			if(field.attr('value') === '') {
				hint.text(placeholder);
			} else {
				hint.text(field.attr('value'));
			}	
		};
				
		// Autofill shortname
		// Update community page subdomain from shortname
		$('input[name=url]').focus(function (event) {
			var website = $('input[name=name]').attr('value');

			website = website.replace(/[^a-zA-Z0-9]/g, '');
			website = website.toLowerCase();
			
			if($(this).attr('value') === '') {
				$(this).attr('value', website);
			}

		}).keyup(function () {
			updateHint($(this), $('#subdomain'), 'shortname');
			}).focus(function () {
				updateHint($(this), $('#subdomain'), 'shortname');
				});

		// Forum form validation.
		$("input[name=website]").change(function (event) {
			$.post(urls.validate_create_forum, {
				website: $(this).val()
			}, function (data) {
				if (data.succeeded) {
					var errors_div = $("input[name=website]").parent().find('.errors');
					errors_div.empty();
					errors_div.html(data.message.website);				}
			}, 'json');
		});
		$("input[name=name]").change(function (event) {
			$.post(urls.validate_create_forum, {
				name: $(this).val()
			}, function (data) {
				if (data.succeeded) {
					var errors_div = $("input[name=name]").parent().find('.errors');
					errors_div.empty();
					errors_div.html(data.message.name);
				}
			}, 'json');
		});
		$("input[name=url]").change(function (event) {
			$.post(urls.validate_create_forum, {
				url: $(this).val()
			}, function (data) {
				if (data.succeeded) {
					var errors_div = $("input[name=url]").parent().find('.errors');
					errors_div.empty();
					errors_div.html(data.message.url);
				}
			}, 'json');
		});
		
		// Register / Login toggle
		$('.su-form-header a').click(function (event) {	
			var form = $('#signup-profile');
			var authChoice = $('input[name=auth_choice]');
			
			// Depending on which form is being presented to the user,
			// this link will switch to another authentication choice and set the hidden input
			if(form.hasClass('authenticated')) {
				form.removeClass('authenticated').addClass('login');
				authChoice.attr('value', 'login');
			}
			else if(form.hasClass('login')) {
				form.removeClass('login').addClass('register');
				authChoice.attr('value', 'register');
			}
			else if(form.hasClass('register')) {
				form.removeClass('register').addClass('login');
				authChoice.attr('value', 'login');
			}
			
			return false;
		});

		// Register form validation.
		$("input[name=username]").change(function (event) {			
			if ($('#signup-profile').hasClass('register')) {
				$.post(urls.validate_register, {
					response_type: 'json_simple',

					username: $(this).val()
				}, function (data) {
					if (data.succeeded) {
						var errors_div = $("input[name=username]").parent().find('.errors');
						errors_div.empty();
						errors_div.html(data.message.username);	
					}
				}, 'json');	
			}
		});
		$("input[name=password]").change(function (event) {
			if ($('#signup-profile').hasClass('register')) {
				$.post(urls.validate_register, {
					response_type: 'json_simple',

					password: $(this).val()
				}, function (data) {
					if (data.succeeded) {
						var errors_div = $("input[name=password]").parent().find('.errors');
						errors_div.empty();
						errors_div.html(data.message.password);
					}
				}, 'json');
			}
		});
		$("input[name=email]").change(function (event) {
			if ($('#signup-profile').hasClass('register')) {
				$.post(urls.validate_register, {
					response_type: 'json_simple',

					email: $(this).val()
				}, function (data) {
					if (data.succeeded) {
						var errors_div = $("input[name=email]").parent().find('.errors');
						errors_div.empty();
						errors_div.html(data.message.email);
					}
				}, 'json');
			}
		});
		
		// Update profile vanity url hint
		$('input[name=username]').keyup(function (event) {
			updateHint($(this), $('#vanity-url'), 'username');
		});
		
	};

})();


$(document).ready(function () {
	disqus.initialize();
});
