function init(){
	$('#reg_submit').click(checkData);

	ContextWindow({id:'ch_trigger-password', text:$('#password_tips').html()});
	ContextWindow({id:'ch_trigger-captcha', text:$('#captcha_tips').html()});
	captchaReload.src = $('#captcha_image')[0].src;
	$('#captcha_reload').click(captchaReload);

	$('#username').blur(checkUserNameAv);

	$('#email').blur(checkEmail);
	$('#email_confirm').blur(checkEmailConf);
	$('#password').blur(checkPassword);
	$('#password_confirm').blur(checkPassword);
	$('#first_name').blur(checkFirstName);
	$('#last_name').blur(checkLastName);


	$('#btn_chk_av_username').click(checkUserNameAv);

	$('#btn_chk_av_email').click(checkEmailAv);


//	$('#password').keyup( checkMyPassword );
	passwordChecker({input:$('#password'), indicator:$('div.filling_progress')});

	$('#password').keyup();

}

function checkGender() {
	if($('input[@name=gender]:checked').val() == null) {
		$('#gen_error').showHidden('fast');
		$('#male').addClass('error_field');
		return false;
	} else {
		if($('#gen_error').css('display')!='none') $('#gen_error').hideVisible('fast');
		return true;
	}
}

function checkData() {
	var ret = true;
	//if(!checkGender()) ret = false;
	if(!checkFirstName()) ret = false;
	if(!checkLastName()) ret = false;
	if(!checkUserName()) ret = false;
	if(!checkPassword()) ret = false;
	if(!checkEmail()) ret = false;
	if(!checkEmailConf()) ret = false;
	if(!checkCode()) ret = false;
//	if(!checkPrivacy()) ret = false;
	if(!checkTerms()) ret = false;
	//if(!checkBdate()) ret = false;
	if(!ret){
		$('#form_error').showHidden('fast');
		$('.error_field').get(0).focus(0);
	} 
	
	
	return ret;
}

function showHiddenChange() {
	$('#gen_error').hideVisible('fast');
	if(setGender)
		$('#gen_changed').showHidden('fast');
	setGender = true;
}

function checkFirstName() {
	if($.trim($('#first_name').val()).length<2) {
		$('#error_first_name').showHidden('fast');
		$('#first_name').attr('class','error_field ipt_235');
		return false;
	} else {
		$('#error_first_name').hideVisible('fast');
		$('#first_name').attr('class','ipt_235');
		return true;
	}
}

function checkLastName() {
	if($.trim($('#last_name').val()).length<2) {
		$('#error_last_name').showHidden('fast');
		$('#last_name').attr('class','error_field ipt_235');
		return false;
	} else {
		$('#error_last_name').hideVisible('fast');
		$('#last_name').attr('class','ipt_235');
		return true;
	}
}

function checkUserName(x) {
	var ret = true;
	var uName = $.trim($('#username').val());
	var uNameLength = uName.length;

	$('#un_given').css('display', 'none');
	$('#un_ok').css('display', 'none');
	
	if( uNameLength < 5 ) {
		$('#un_short').showHidden('fast');
		ret = false;
	} else{
		$('#un_short').hideVisible('fast');

		if(!uName.match(/^[a-zA-Z0-9_\-]{5,}$/)){
			$('#un_incorrect').showHidden('fast');
			ret = false;
		}else{
			$('#un_incorrect').hideVisible('fast');

		}
	}

	if(ret){
		$('#username').removeClass('error_field');
	}else{
		$('#username').addClass('error_field');
	}

	return ret;
}



function checkUserNameAv(ev){
//	console.trace();
//	console.log(ev);

	if(ev.currentTarget != ev.originalTarget) return false;

	var name = $.trim($('#username').val());
	$('#username').val(name);
	if(checkUserName()){
		$.get( '/lightregister/checkusername/'+name, checkUserNameAvResponse );
	}
	return false;
}
function checkUserNameAvResponse(t){
	var username	= $('query',t).text();
	var result		= $('result',t).text();

	switch(result){
		case 'ok':
			$('#un_ok_msg').html(username);
			$('#un_given').hideVisible('fast');
			$('#un_ok').showHidden('fast');
			break;
		case 'reserved':
			$('#un_given').showHidden('fast');
			$('#un_ok').hideVisible('fast');
			userNameChecks.count(username);

			if(userNameChecks.retries.count>=userNameChecks.retries.max){
				document.location = "/";
			}
			break;
		default:
			;
	}
}

function checkCode() {
	if($('#captcha').val().length != 5) {
		$('#error_captcha').showHidden('fast');
		$('#captcha').attr('class','error_field ipt_235');
		return false;
	} else {
		$('#error_captcha').hideVisible('fast');
		$('#captcha').attr('class','ipt_235');
		return true;
	}
}
function validateEmail(email){
		var rx = /^[a-zA-Z]{1}\w*([\._-]?\w+)+@\w+([\.-]?\w+)*(\.\w{2,4})+$/i;
		return email.match(rx);
}

function checkEmail(ev) {
	var email	= $.trim($('#email').val());
	var emailc	= $.trim($('#email_confirm').val());
	var ret = true;

	/*
	 * #error_email - invalid
	 * #error_email_empty - empty
	 *
	 * #error_email_reg - in use
	 * #error_email_ok - av
	 *
	 *
	 * #error_email_confirm - not match
	 * #error_email_confirm_empty - empty
	 * #error_email_confirm_incorrect - invalid
	 */

	if(email.length == 0){
		$('#error_email_empty').showHidden('fast');
		$('#email').addClass('error_field');
		ret = false;
	}else{
		$('#error_email_empty').hideVisible('fast');
		$('#email').removeClass('error_field');

		if(!validateEmail(email)){
			$('#error_email').showHidden('fast');
			$('#email').addClass('error_field');
			ret = false;
		}else{
			$('#error_email').hideVisible('fast');
			$('#email').removeClass('error_field');
		}
	}

	if(ret){
		ret = ret && checkEmailConf();
	}

	return ret;
}
function checkEmailConf(){
	var ret	= true;
	var email	= $.trim($('#email').val());
	var emailc	= $.trim($('#email_confirm').val());

	if(emailc.length==0){
		$('#error_email_confirm_empty').showHidden('fast');
		$('#email_confirm').addClass('error_field');

		$('#error_email_confirm_incorrect').hideVisible('fast');
		$('#email_confirm').removeClass('error_field');

		$('#error_email_confirm').hideVisible('fast');
		$('#email_confirm').removeClass('error_field');

		ret &= false;
	}else{
		$('#error_email_confirm_empty').hideVisible('fast');
		$('#email_confirm').removeClass('error_field');

		if(!validateEmail(emailc)){
			$('#error_email_confirm_incorrect').showHidden('fast');
			$('#email_confirm').addClass('error_field');

			$('#error_email_confirm').hideVisible('fast');
			$('#email_confirm').removeClass('error_field');

			ret &= false;
		}else{
			$('#error_email_confirm_incorrect').hideVisible('fast');
			$('#email_confirm').removeClass('error_field');
			if(email != emailc){
				$('#error_email_confirm').showHidden('fast');
				$('#email_confirm').addClass('error_field');
				ret &= false;
			}else{
				$('#error_email_confirm').hideVisible('fast');
				$('#email_confirm').removeClass('error_field');
			}
		}
	}

	return ret;
}
function countUserNameChecks(name){
	countUserNameChecks.names.push(name);
	var uniqueNames	=	makeUniqueArray(countUserNameChecks.names);
	countUserNameChecks.retries.count = uniqueNames.length;
}

userNameChecks = {
	count:function(name){
		userNameChecks.names.push(name);
		userNameChecks.uniqueNames	=	makeUniqueArray(userNameChecks.names);
		userNameChecks.retries.count = userNameChecks.uniqueNames.length;
	},
	retries:{count:0, max:5},
	names:[],
	uniqueNames:[]
}
/**
 * validuje pola a nastepnie sprawdza czy taki mail jest dotepny czy zajety
 * @param {Object} ev
 */
function checkEmailAv(ev){
	var email = $('#email').val();
	if(checkEmail()){ //
		$.get( '/register/checkemail/'+email, checkEmailAvResponse );
	}
	return false;
}

function checkEmailAvResponse(t){
	var result		= $('result',t).text();
	var query		= $('query',t).text();

	switch(result){
		case 'reserved':
			$('#error_email_reg').showHidden('fast');
			$('#error_email_ok').hideVisible('fast');
			break;
		case 'ok':
			var msg = $('#error_email_ok_msg').text(query);
			$('#error_email_reg').hideVisible('fast');
			$('#error_email_ok').showHidden('fast');
			break;
		default:
			;

	}
}

function checkPassword() {
	if( $('#password').val() == $('#username').val() ){
		$('#error_password_equal').showHidden('fast');
		$('#password').attr('class','error_field ipt_235');
		return false;
	}else{
		$('#error_password_equal').hideVisible('fast');
		$('#password').attr('class','ipt_235');
		if($('#password').val()=='' || $('#password').val().length<6) {
			$('#error_password').showHidden('fast');
			$('#password').attr('class','error_field ipt_235');
			$('#error_confpassword').hideVisible('fast');
			return false;
		} else {
			$('#error_password').hideVisible('fast');
			$('#password').attr('class','ipt_235');
			if($('#password_confirm').val()!=$('#password').val() && $('#password_confirm').val()!='') {
				$('#error_confpassword').showHidden('fast');
				$('#password_confirm').attr('class','error_field ipt_235');
				return false;
			} else {
				$('#error_confpassword').hideVisible('fast');
				$('#password_confirm').attr('class','ipt_235');
			}
		}
		return true;
	}
}

function checkPrivacy() {
	if($('input[@name=privacy]:checked').val()==null) {
		$('#error_privacy').showHidden('fast');
		return false;
	} else {
		$('#error_privacy').hideVisible('fast');
		return true;
	}
}

function checkTerms() {
	if($('input[@name=terms]:checked').val()==null) {
		$('#error_terms').showHidden('fast');
		return false;
	} else {
		$('#error_terms').hideVisible('fast');
		return true;
	}
}

function checkBdate(){
	var sy	=	$('select[@name=Year]');
	var	sm	=	$('select[@name=Month]');
	var sd	=	$('select[@name=Day]');
	if(!sy.val() || !sm.val() || !sd.val()){
		$('#error_birthday').showHidden('fast');
		sy.addClass('error_field');
		sm.addClass('error_field');
		sd.addClass('error_field');
		return false;
	}else{
		$('#error_birthday').hideVisible('fast');
		sy.removeClass('error_field');
		sm.removeClass('error_field');
		sd.removeClass('error_field');
		return true;
	}
}

function checkBdateField(name, e){
//	if(!checkBdate()){
//		$('#error_birthday').slideDownHidden();
//	}else{
//		$('#error_birthday').slideUpVisible();
//	}
  checkBdate();
}

function captchaReload(){
	$('#captcha_image')[0].src = captchaReload.src+'?'+Math.random();
}





$( init );
