$(document).ready
(
	function()
	{
		frmSignupInit();
	}
);

function frmSignupInit()
{
	$('#frm-signup').submit
	(
		function()
		{
			return frmSignupValidate();
		}
	);
	$('#frm-signup-password').keyup
	(
		function()
		{
			frmSignupCheckPassword();
		}
	);
}

function frmSignupCheckPassword()
{
	var pswd = $('#frm-signup-password').val();
	$('#password-strength div').removeClass();
	if(pswd.length != 0)
	{
		if(pswd.length >= 8 && (pswd.search(/^[a-z]+$/) == -1 && pswd.search(/^[0-9]+$/) == -1))
		{
			$('#password-strength div').addClass('good');
			$('#password-strength div').html(frmSignupMsg.msg_password_good);
		}
		else if (pswd.length >= 8 && (pswd.search(/^[a-z]+$/) > -1 || pswd.search(/^[0-9]+$/) > -1))
		{
			$('#password-strength div').addClass('simple');
			$('#password-strength div').html(frmSignupMsg.msg_password_simple);
		}
		else
		{
			$('#password-strength div').addClass('short');
			$('#password-strength div').html(frmSignupMsg.msg_password_short);
		}
	}
	else
		$('#password-strength div').html(frmSignupMsg.msg_password_empty);
}

function frmSignupValidate()
{
	var username = $.trim($('#frm-signup-username').val());
	var passwordOne = $('#frm-signup-password').val();
	var passwordTwo = $('#frm-signup-password-control').val();
	var sex = $('#frm-signup-sex').val();
	var firstname = $.trim($('#frm-signup-firstname').val());
	var lastname = $.trim($('#frm-signup-lastname').val());
	var birthdate_day = parseInt($('#frm-signup-birthdate-day').val());
	var birthdate_month = parseInt($('#frm-signup-birthdate-month').val());
	var birthdate_year = parseInt($('#frm-signup-birthdate-year').val());
	var address_street = $('#frm-signup-address-street').val();
	var address_number = $('#frm-signup-address-number').val();
	var address_zip = $('#frm-signup-address-zip').val();
	var address_city = $('#frm-signup-address-city').val();
	var address_country = $('#frm-signup-address-country').val();
	var email = $('#frm-signup-email').val();
	var accept_terms = $('#frm-signup-license').get(0).checked;
	if(username.length == 0)
	{
		window.alert(frmSignupMsg.error_username_empty);
		$('#frm-signup-username').get(0).focus();
		return false;
	}
	if(username.length > 32 || username.length < 3 || username.search(/^[a-z0-9]+[a-z0-9\-_]+[a-z0-9]+$/i) == -1)
	{
		window.alert(frmSignupMsg.error_username_invalid);
		$('#frm-signup-username').val('');
		$('#frm-signup-username').get(0).focus();
		return false;
	}
	if(passwordOne.length == 0)
	{
		window.alert(frmSignupMsg.error_password_empty);
		$('#frm-signup-password').get(0).focus();
		return false;
	}
	if(passwordTwo.length == 0)
	{
		window.alert(frmSignupMsg.error_password_control_empty);
		$('#frm-signup-password-control').get(0).focus();
		return false;
	}
	if(passwordOne != passwordTwo)
	{
		window.alert(frmSignupMsg.error_password_dont_match);
		$('#frm-signup-password').val('');
		$('#frm-signup-password-control').val('');
		$('#frm-signup-password').get(0).focus();
		return false;
	}
	if(passwordOne.length < 8)
	{
		window.alert(frmSignupMsg.error_password_too_simple);
		$('#frm-signup-password').val('');
		$('#frm-signup-password-control').val('');
		frmSignupCheckPassword();
		$('#frm-signup-password').get(0).focus();
		return false;
	}
	if(sex == '0' || (sex != 'm' && sex != 'f'))
	{
		window.alert(frmSignupMsg.error_sex_empty);
		$('#frm-signup-sex').get(0).focus();
		return false;
	}
	if(firstname.length == 0)
	{
		window.alert(frmSignupMsg.error_firstname_empty);
		$('#frm-signup-firstname').get(0).focus();
		return false;
	}
	if(firstname.length > 64)
	{
		window.alert(frmSignupMsg.error_firstname_invalid);
		$('#frm-signup-firstname').val('');
		$('#frm-signup-firstname').get(0).focus();
		return false;
	}
	if(lastname.length == 0)
	{
		window.alert(frmSignupMsg.error_lastname_empty);
		$('#frm-signup-lastname').get(0).focus();
		return false;
	}
	if(lastname.length > 64)
	{
		window.alert(frmSignupMsg.error_lastname_invalid);
		$('#frm-signup-lastname').val('');
		$('#frm-signup-lastname').get(0).focus();
		return false;
	}
	var curDate = new Date();
	var birthDate = new Date();
	if(birthdate_day == 0 || isNaN(birthdate_day))
	{
		window.alert(frmSignupMsg.error_birthdate_day_empty);
		$('#frm-signup-birthdate-day').get(0).focus();
		return false;
	}
	if(birthdate_day < 1 || birthdate_day > 31)
	{
		window.alert(frmSignupMsg.error_birthdate_day_invalid);
		$('#frm-signup-birthdate-day').get(0).focus();
		return false;
	}
	if(birthdate_month == 0 || isNaN(birthdate_month))
	{
		window.alert(frmSignupMsg.error_birthdate_month_empty);
		$('#frm-signup-birthdate-month').get(0).focus();
		return false;
	}
	if(birthdate_month < 1 || birthdate_month > 12)
	{
		window.alert(frmSignupMsg.error_birthdate_month_invalid);
		$('#frm-signup-birthdate-month').get(0).focus();
		return false;
	}
	if(birthdate_year == 0 || isNaN(birthdate_year))
	{
		window.alert(frmSignupMsg.error_birthdate_year_empty);
		$('#frm-signup-birthdate-year').get(0).focus();
		return false;
	}
	if(birthdate_year < (parseInt(curDate.getFullYear) - 100) || birthdate_year > parseInt(curDate.getFullYear))
	{
		window.alert(frmSignupMsg.error_birthdate_year_invalid);
		$('#frm-signup-birthdate-year').get(0).focus();
		return false;
	}
	birthDate.setFullYear(birthdate_year);
	birthDate.setMonth(birthdate_month-1);
	birthDate.setDate(birthdate_day);
	if(address_street.length == 0)
	{
		window.alert(frmSignupMsg.error_address_street_empty);
		$('#frm-signup-address-street').get(0).focus();
		return false;
	}
	if(address_street.length > 64)
	{
		window.alert(frmSignupMsg.error_address_street_invalid);
		$('#frm-signup-address-street').val('');
		$('#frm-signup-address-street').get(0).focus();
		return false;
	}
	if(address_number.length == 0)
	{
		window.alert(frmSignupMsg.error_address_house_empty);
		$('#frm-signup-address-number').get(0).focus();
		return false;
	}
	if(address_number.length > 16)
	{
		window.alert(frmSignupMsg.error_address_house_invalid);
		$('#frm-signup-address-number').val('');
		$('#frm-signup-address-number').get(0).focus();
		return false;
	}
	if(address_zip.length == 0)
	{
		window.alert(frmSignupMsg.error_address_zip_empty);
		$('#frm-signup-address-zip').get(0).focus();
		return false;
	}
	if(address_zip.length > 8 || address_zip.search(/^[0-9]+$/) == -1)
	{
		window.alert(frmSignupMsg.error_address_zip_invalid);
		$('#frm-signup-address-zip').val('');
		$('#frm-signup-address-zip').get(0).focus();
		return false;
	}
	if(address_city.length == 0)
	{
		window.alert(frmSignupMsg.error_address_city_empty);
		$('#frm-signup-address-city').get(0).focus();
		return false;
	}
	if(address_city.length > 64)
	{
		window.alert(frmSignupMsg.error_address_city_invalid);
		$('#frm-signup-address-city').val('');
		$('#frm-signup-address-city').get(0).focus();
		return false;
	}
	if(address_country == '0')
	{
		window.alert(frmSignupMsg.error_address_country_empty);
		$('#frm-signup-address-country').get(0).focus();
		return false;
	}
	if(address_country.search(/^[A-Z]{2}$/) == -1)
	{
		window.alert(frmSignupMsg.error_address_country_invalid);
		$('#frm-signup-address-country').get(0).focus();
		return false;
	}
	if(email.length == 0)
	{
		window.alert(frmSignupMsg.error_email_empty);
		$('#frm-signup-email').get(0).focus();
		return false;
	}
	if(email.search(/^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/) == -1 || email.length > 128)
	{
		window.alert(frmSignupMsg.error_email_invalid);
		$('#frm-signup-email').val('');
		$('#frm-signup-email').get(0).focus();
		return false;
	}
	if(trashDomainsRegexp.test(email) == true)
	{
		window.alert(frmSignupMsg.error_email_free);
		$('#frm-signup-email').val('');
		$('#frm-signup-email').get(0).focus();
		return false;
	}
	if(accept_terms == false)
	{
		window.alert(frmSignupMsg.error_terms_not_accepted);
		$('#frm-signup-license').get(0).focus();
		return false;
	}
	return true;
}