function init(){
	$('#reg_submit').click(checkData);
	$('#male').change(showHiddenChange);
	$('#female').change(showHiddenChange);
		
	ContextWindow({id:'ch_trigger-password', text:'<ul class="help-list"><li>Your password should be 10 or more characters long</li><li>Small and capital letters should be combined with at least three digits</li><li>Use at least two of the following characters: @ ! # ? % ^ & * ? _ ~</li><li>Avoid using ordered sequences or repetitions (e.g. 123456, abcabc22)</li><li>Avoid using personal information (e.g. name, birthday, phone number or bank details) or your username</li></ul>'});
//	ContextWindow({id:'ch_trigger-captcha', text:'By entering the code that you see in the box on the right, you will be helping us to stop automated programs using this offer. This will also help our system to function better for you.'});
//	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);
	$('#invite_twitter').blur(checkTwitter);
	//$('#country_id').change(checkCountry);
	//$('select[@name=Year]').blur(function(e){checkBdateField('Year', e)});
	//$('select[@name=Month]').blur(function(e){checkBdateField('Month', e)});
	//$('select[@name=Day]').blur(function(e){checkBdateField('Day', e)});
	
	$('#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 checkCountry()
{
	alert( $("#country_id").val());
	if($("#country_id").val()==13)
	{
	$("#india_city").show();
	$("#city").hide();
	}
	else
	{
	$("#india_city").hide();
	$("#city").show();
	}
}
function checkGender() {
//	if($('input[@name=gender]:checked').val() == null) {
//		$('#gen_error').showHidden('fast');
//		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(!checkTwitter()) 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');
	return ret;
}

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

function checkFirstName() {
	
	var fname = $.trim($('#first_name').val());
	var reg = /[!@#$%\^*=}{\[\]:;"<>?0-9]/;
			
	if(fname.length<2 || reg.test(fname)) {
		$('#error_first_name').showHidden('fast');
		$('#first_name').attr('class','error_field form_a');
		return false;
	} else {
		$('#error_first_name').hideVisible('fast');
		$('#first_name').attr('class','form_a');
		return true;
	}
}

function checkLastName() {
	
	var lname = $.trim($('#last_name').val());
	var reg = /[!@#$%\^*=}{\[\]:;"<>?0-9]/;	
	
	if(lname.length<2 || reg.test(lname)) {
		$('#error_last_name').showHidden('fast');
		$('#last_name').attr('class','error_field form_a');
		return false;
	} else {
		$('#error_last_name').hideVisible('fast');
		$('#last_name').attr('class','form_a');
		return true;
	}
}

function checkUserName(x) {
	var ret = true;
	var uName = $.trim($('#username').val());
	var uNameLength = uName.length;
//	$('#un_given').hideVisible('fast');
//	$('#un_ok').hideVisible('fast');
	$('#un_given').css('display', 'none');
	$('#un_ok').css('display', 'none');

//	$('#un_invalid').hideVisible('fast');

	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( '/register/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 form_a');
		return false;
	} else {
		$('#error_captcha').hideVisible('fast');
		$('#captcha').attr('class','form_a');
		return true;
	}
}
function validateEmail(email){
		//var rx = /^[a-zA-Z]{1}\w*([\.\-\_]?\w+)+@\w+([\.\-]?\w+)*(\.\w{2,4})+$/i;
		var rx  =/^[a-zA-Z0-9\.\-\_]{1,30}@\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 checkTwitter(){
	var ret	= true;
	var twitter_id	= $.trim($('#twitter_id').val());
	var invite_twitter	= $.trim($('#invite_twitter').val());

			if((twitter_id == invite_twitter) && ((twitter_id.length)>2) && ((invite_twitter.length)>2)){
				$('#error_invite_twitter').showHidden('fast');
				$('#invite_twitter').addClass('error_field');
				ret &= false;
			}else{
				$('#error_invite_twitter').hideVisible('fast');
				$('#invite_twitter').removeClass('error_field');
			}	
	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');
		if($('#password').val() != $('#first_name').val() ) $('#error_password_equal_first_name').hideVisible('fast');
		if($('#password').val() != $('#last_name').val() ) $('#error_password_equal_last_name').hideVisible('fast');
		$('#password').attr('class','error_field form_a');
		return false;
	}
	if($('#password').val() == $('#first_name').val() )
	{
		$('#error_password_equal_first_name').showHidden('fast');
		if($('#password').val() != $('#last_name').val() ) $('#error_password_equal_last_name').hideVisible('fast');
		if( $('#password').val() != $('#username').val() ) $('#error_password_equal').hideVisible('fast');
		$('#password').attr('class','error_field form_a');
		return false;
	}
	if($('#password').val() == $('#last_name').val() )
	{
		$('#error_password_equal_last_name').showHidden('fast');
		if($('#password').val() != $('#first_name').val() ) $('#error_password_equal_first_name').hideVisible('fast');
		if( $('#password').val() != $('#username').val() ) $('#error_password_equal').hideVisible('fast');
		$('#password').attr('class','error_field form_a');
		return false;
	}
	else{
		$('#error_password_equal').hideVisible('fast');
		$('#password').attr('class','form_a');
		if($('#password').val()=='' || $('#password').val().length<6) {
			$('#error_password').showHidden('fast');
			$('#password').attr('class','error_field form_a');
			$('#error_confpassword').hideVisible('fast');
			return false;
		} else {
			$('#error_password').hideVisible('fast');
			$('#password').attr('class','form_a');
			if($('#password_confirm').val()!=$('#password').val() && $('#password_confirm').val()!='') {
				$('#error_confpassword').showHidden('fast');
				$('#password_confirm').attr('class','error_field form_a');
				return false;
			} else {
				$('#error_confpassword').hideVisible('fast');
				$('#password_confirm').attr('class','form_a');
			}
		}
		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(){
	if(!$('select[@name=Year]').val() || !$('select[@name=Month]').val() || !$('select[@name=Day]').val()){
		$('#error_birthday').showHidden('fast');
		return false;
	}else{
		$('#error_birthday').hideVisible('fast');
		return true;
	}
}

function checkBdateField(name, e){
	var isOneOf	=	false;

	if (!isOneOf){
		if(!checkBdate()){
			$('#error_birthday').slideDownHidden();
		}else{
			$('#error_birthday').slideUpVisible();
		}
	}
	
	/*
	if(!$('select[@name='+name+']').val()){
		.showHidden('fast');
		return false;
	}else{
		$('#error_birthday').hideVisible('fast');
		return true;
	}*/
}
function captchaReload(){
	$('#captcha_image')[0].src = captchaReload.src+'?'+Math.random();
}




$( init );