var username_is_available = true;

$(document).ready(function()
{
	initialize_avatars();
	
	/* username onchange */
	$("form#register_form input[name='username']").change(function(){
		var username = $(this).attr("value");
		check_condition(username.search(/[^A-Za-z0-9_-]/) == -1, "warning_characters");
		$.post("/controllers/check_username.php",
			{ username: username },
			function(suggested_username)
			{
				if(suggested_username != "")
				{
			    	$("form#register_form div#suggestions_username").removeClass("no_display");
					$("form#register_form div#warning_username").removeClass("no_display");
					$("form#register_form span#username_suggestion").text(suggested_username);
					username_is_available = false;
				}
				else
				{
					$("form#register_form div#suggestions_username").addClass("no_display");
					$("form#register_form div#warning_username").addClass("no_display");
					username_is_available = true;
				}
			}
		);
 	});

 	/* user image onchange */
 	$("form#register_form input[name='file']").change(function(){
		var path = $(this).attr("value");
		$("form#register_form input[name='user_image']").attr("value", path);
		$("form#register_form").submit();
 	});

	/* on submit */
 	$("form#register_form div#submit_registration").click(function()
 	{
 		var auth_answer = $("form#register_form input[name='auth_answer']").attr("value");
		var auth_question_id = $("form#register_form select[name='auth_question']").attr("value");
		var avatar_id = $("form#register_form input[name='avatar_id']").attr("value");
		var country = $("form#register_form input[name='country']").attr("value");
		var email = $("form#register_form input[name='email']").attr("value");
		var first_name = $("form#register_form input[name='first_name']").attr("value");
		var gender = $("form#register_form input[name='gender']:checked").attr("value");
		var last_name = $("form#register_form input[name='last_name']").attr("value");
		var newsletter = $("form#register_form input[name='newsletter']").attr("checked") ? true : false;
		var password = $("form#register_form input[name='password']").attr("value");
		var password_repetition = $("form#register_form input[name='password_repetition']").attr("value");
		var spam = $("form#register_form input[name='spam']").attr("value");
		var suffix = $("form#register_form input[name='suffix']").attr("value");
		var temporary_filename = $("form#register_form input[name='temporary_filename']").attr("value");
		var terms = $("form#register_form input[name='terms_accepted']").attr("checked") ? true : false;
		var username = $("form#register_form input[name='username']").attr("value");

		var form_complete = true;
		// check if the username is set
		form_complete = check_mandatory_field("username", username) ? form_complete : false;
		// check if the username is available
		if(!username_is_available)
			form_complete = false;
		form_complete = check_condition(username.search(/[^A-Za-z0-9_-]/) == -1, "warning_characters") ? form_complete : false;
		// check if the password is set
		form_complete = check_mandatory_field("password", password) ? form_complete : false;
		// check if the password repetition is set
		form_complete = check_mandatory_field("password_repetition", password_repetition) ? form_complete : false;
		// check if password and password_repetition are equal
		form_complete = check_condition(password == password_repetition, "warning_password") ? form_complete : false;
		// check if the authentication answer
		// form_complete = check_mandatory_field("auth_answer", auth_answer) ? form_complete : false;
		// check if the e-mail address is set
		form_complete = check_mandatory_field("email", email) ? form_complete : false;
		// check if the user accepted the terms of usage and the privacy statement
		form_complete = check_condition(terms, "warning_terms") ? form_complete : false;
		// check spam filter
		// form_complete = check_mandatory_field("spam_check", spam) ? form_complete : false;
		// check if the form was successfully completed
		check_condition(form_complete, "warning_incomplete_form");
		// if the form was successfully completed
		if(form_complete)
		{
			$.post
			(
				"/controllers/register.php",
				{
					json: JSON.encode
							(
								{
							       auth_answer: auth_answer,
							       auth_question_id: auth_question_id,
							       avatar_id: avatar_id,
							       country: country,
							       email: email,
							       first_name: first_name,
							       gender: gender,
							       last_name: last_name,
							       newsletter: newsletter,
							       password: password,
							       temporary_filename: temporary_filename,
							       suffix: suffix,
							       username: username
								}
							)
				}
			);
			$("form#register_form").addClass("no_display");
			$("div#answer span#email").html(email);
			$("div#answer span.username").html(username);
			$("div#answer").removeClass("no_display");
			window.scrollTo(0, 0);
		}
 	});
 	
 	/* mouseover for button "Klicken Sie hier, um Ihre erste Anleitung zu schreiben" */
 	$("img#button_write").hover(function(){
		$(this).attr("src", "/images/first_expli_hover.jpg");
 	}, function(){
 		$(this).attr("src", "/images/first_expli.jpg");
 	});
});

/**
 * bool check_condition( bool condition, string id )
 *
 * call: form_complete = check_condition(condition, id);
 */
function check_condition(condition, id)
{
	var selector = "form#register_form p#" + id;
	if(condition)
	{
		$(selector).addClass("no_display");
		return true;
	}
	else
	{
		$(selector).removeClass("no_display");
		return false;
	}
}

/**
 * bool check_mandatory_field( string field, mixed value )
 *
 * call: form_complete = check_mandatory_field(field, value);
 */
function check_mandatory_field(field, value)
{
	var selector = "form#register_form p#label_" + field;
	if(!value)
	{
		$(selector).addClass("warning");
		return false;
	}
	else
	{
		$(selector).removeClass("warning");
		return true;
	}
}

/**
 * void display_preview_image( string src, string temporary_filename, string suffix )
 *
 * call: display_preview_image(src, temporary_filename, suffix);
 */
function display_preview_image(src, temporary_filename, suffix)
{
	$("form#register_form img#user_image").attr("src", src);
	$("form#register_form input[name='temporary_filename']").attr("value", temporary_filename);
	$("form#register_form input[name='suffix']").attr("value", suffix);
}

function initialize_avatars()
{
	$('#piu').click(function(){$('#prf_img_upload').css('display','block');$('#prf_img_choose').css('display','none');});
	$('#pia').click(function(){$('#prf_img_upload').css('display','none');$('#prf_img_choose').css('display','block');});
	$('#piu').click();
	
	$('#prf_img_choose ul li img').click(function()
	{
		var image_div = $(this).parent().parent();
		if($.browser['msie']==true)
		{
			var vers = $.browser.version.split('.');
			if(vers[0]=='6')
			{	
				image_div.parent().css({'margin-bottom':'2px','margin-right':'2px'});
				$('li:has(.image > .yellow_image_border)').css({'margin-bottom':'4px','margin-right':'4px'});
			}
		}
		$('.image > .yellow_image_border').removeClass('yellow_image_border').addClass('dark_image_border');
		$('.image > .yellow_upper_left_border').removeClass('yellow_upper_left_border').addClass('dark_upper_left_border');
		$('.image > .yellow_lower_left_border').removeClass('yellow_lower_left_border').addClass('dark_lower_left_border');
		$('.image > .yellow_upper_right_border').removeClass('yellow_upper_right_border').addClass('dark_upper_right_border');
		$('.image > .yellow_lower_right_border').removeClass('yellow_lower_right_border').addClass('dark_lower_right_border');

		image_div.find('.blue_image_border').removeClass('blue_image_border').addClass('yellow_image_border');
		image_div.find('.upper_left_border').removeClass('blue_upper_left_border').addClass('yellow_upper_left_border');
		image_div.find('.lower_left_border').removeClass('blue_lower_left_border').addClass('yellow_lower_left_border');
		image_div.find('.upper_right_border').removeClass('blue_upper_right_border').addClass('yellow_upper_right_border');
		image_div.find('.lower_right_border').removeClass('blue_lower_right_border').addClass('yellow_lower_right_border');
		
		$('#user_image').attr('src',$(this).attr('src'));
		var src = $(this).attr('src');
		var a_id = src.split("/"); a_id = a_id[a_id.length-1].split('.'); a_id = a_id[0];
		$('input[name="avatar_id"]').val(a_id);
		$('input[name="temporary_filename"],input[name="suffix"]').val('');
	});
	
	$('#prf_img_choose .image').hover(
		function()
		{
			if($.browser['msie']==true  && $(this).find('.yellow_image_border').length<1)
			{
				var vers = $.browser.version.split('.');
				if(vers[0]=='6')
				{	
					$(this).parent().css({'margin-bottom':'2px','margin-right':'2px'});
				}
			}
			$(this).find('.dark_image_border').removeClass('dark_image_border').addClass('blue_image_border');
			$(this).find('.upper_left_border').removeClass('dark_upper_left_border').addClass('blue_upper_left_border');
			$(this).find('.lower_left_border').removeClass('dark_lower_left_border').addClass('blue_lower_left_border');
			$(this).find('.upper_right_border').removeClass('dark_upper_right_border').addClass('blue_upper_right_border');
			$(this).find('.lower_right_border').removeClass('dark_lower_right_border').addClass('blue_lower_right_border');
		},
		function()
		{
			if($.browser['msie']==true  && $(this).find('.yellow_image_border').length<1)
			{
				var vers = $.browser.version.split('.');
				if(vers[0]=='6')
				{	
					$(this).parent().css({'margin-bottom':'4px','margin-right':'4px'});
				}
			}
			$(this).find('.blue_image_border').removeClass('blue_image_border').addClass('dark_image_border');
			$(this).find('.upper_left_border').removeClass('blue_upper_left_border').addClass('dark_upper_left_border');
			$(this).find('.lower_left_border').removeClass('blue_lower_left_border').addClass('dark_lower_left_border');
			$(this).find('.upper_right_border').removeClass('blue_upper_right_border').addClass('dark_upper_right_border');
			$(this).find('.lower_right_border').removeClass('blue_lower_right_border').addClass('dark_lower_right_border');
		}
	);
}
