﻿jQuery(document).ready(function(){
	jQuery("form[name='registracion']").validateFields();
	jQuery("form#registro").submit(checkForm);
});


jQuery.fn.validateFields = function(){

	var form = jQuery(this);
	
	// Username 
	jQuery("#registro input[name='username']").blur(function(){
		
		var validated= true;
		
		if(this.value != '' && this.value.length < 2){
			clearAlert('checkusername');
			alertUser(jQuery(this), 'checkusername', 'Deve conter entre 2 e 15 caracteres')
			jQuery('#checked').remove();
			validated=false;
			
		}else{
			
			if(this.value.match(/\s+/) && this.value != ''){
				clearAlert('checkusername');
				alertUser(jQuery(this), 'checkusername', 'Campo obrigatorio, não pode conter espaços')
				jQuery('#checked').remove();
				validated=false;
			}
						
			if(!this.value.match(/^[A-Z a-z 0-9 _ . \-]+$/) && this.value != ''){ 
				clearAlert('checkusername');
				jQuery(this).removeClass('fail');
				jQuery('#checked').remove();	
				alertUser(jQuery(this), 'checkusername', 'Campo obrigatorio, não pode conter caracteres especiales')
				validated=false;
			}
			if(this.value == ''){
				clearAlert('checkusername');	
				jQuery(this).removeClass('fail');
				jQuery('#checked').remove();
				validated=false;
			}
		}
		
		if(validated){
		clearAlert('checkusername');
		jQuery(this).removeClass('fail');


			if(!jQuery('#checking').length > 0){jQuery('#checked').remove();}
			var username = this.value;
			if(!jQuery('#checking').length > 0){
				jQuery(this).after('<span id="checking"><img src="/interface/default/desktop/imgs/layout/loader.gif" style="left-align:-3px;"/> Verificando</span>');

				jQuery.ajax({
					type: "POST",
					url: "/registration/validate-user",
					data: "username="+username,
					async:false,
					success: function(response){

					if(response == '1'){
						
						//jQuery('#checking').after('<span id="checked"><img src="/interface/default/desktop/imgs/buttons/registro_ok.png" style="vertical-align:middle;"/> Disponível</span>');
						jQuery('#checking').after('<span id="checked"><img src="/interface/default/desktop/imgs/buttons/registro_ok.png" style="vertical-align:middle;margin-left:2px;"/></span>');
						jQuery('#checking').remove();
						clearAlert('checkusername');
					}else{
						//jQuery('#checking').after('<span id="checked"><img src="/interface/default/desktop/imgs/buttons/registro_no.png" style="vertical-align:middle;"/> Não disponível</span>');
							jQuery('#checking').after('<span id="checked"><img src="/interface/default/desktop/imgs/buttons/registro_no.png" style="vertical-align:middle;margin-left:2px;"/></span>');
						jQuery('#checking').remove();
						clearAlert('checkusername');
					}
					console.log(response);
					}
				});
			}
		}
	});
	
	// Email 
	jQuery("input[name='user_email']").blur(function(){
		
		var msj = echeck(this.value);
		
		if(msj){
			alertUser(jQuery(this), 'erroremail', msj)
			
		}else{
			clearAlert('erroremail');
			jQuery(this).removeClass('fail');
		}
	});

	jQuery("input[name='email_check']").blur(function(){

		var msj = echeck(this.value);

		if(jQuery('#erroremailcheck').length > 0){
			clearAlert('erroremailcheck');
			clearAlert('erroremail');
		}

		var first = jQuery("input[name='user_email']").val();
		if(msj){
			alertUser(jQuery(this), 'erroremailcheck', msj)
		
		}
		else if(this.value != first && this.value != ''){
			alertUser(jQuery(this), 'erroremailcheck', 'Seu e-mail está diferente, verifique por favor.')
		}else{
			clearAlert('erroremailcheck');
			clearAlert('erroremail');
			jQuery(this).removeClass('fail');
		}
	});

	jQuery("input[name='user_password']").blur(function(){
		
		if(jQuery('#pass').length > 0){
			clearAlert('pass');
		}
		if(this.value != '' && this.value.length < 6){
			clearAlert('pass');
			alertUser(jQuery(this), 'pass', 'Campo obrigatório, deve conter entre 6 e 10 caracteres')
		}else{
			clearAlert('pass');
			jQuery(this).removeClass('fail');
		}
	});
	
	jQuery("input[name='password_check']").blur(function(){
		
		if(jQuery('#passcheck').length > 0){
			clearAlert('passcheck');
		}
		var pass1 = jQuery("input[name='user_password']").val();
		if(this.value != '' && this.value != pass1){
			clearAlert('passcheck');
			alertUser(jQuery(this), 'pass', 'Sua senha está diferente, verifique por favor.')
		}else{
			clearAlert('passcheck');
			jQuery(this).removeClass('fail');
		}
	});
	
	jQuery("input[name='user_name']").blur(function(){

		var name = jQuery(this).attr('name');
		if(jQuery('#check'+name).length > 0){
			clearAlert('check'+name);
			jQuery(this).removeClass('fail');
		}

		if(this.value != '' && this.value.length < 3){
			clearAlert('checkname');
			alertUser(jQuery(this), 'checkname', 'Campo obrigatório, deve conter no mínimo 3 caractéres.')
		}else{
			if(this.value.match(/^([a-z,A-Z,á,é,í,ó,ú,â,ê,ô,ã,õ,ç,Á,É,Í,Ó,Ú,Â,Ê,Ô,Ã,Õ,Ç,ü,ñ,Ü,Ñ,' '])*$/)){
					clearAlert('checkname');
					jQuery(this).removeClass('fail');
				
			}else{
					clearAlert('checkname');
					alertUser(jQuery(this), 'checkname', 'Campo obrigatório, deve conter caracteres.')
			}
		}
	});
	
	jQuery("input[name='user_lastname']").blur(function(){

		var name = jQuery(this).attr('name');
		if(jQuery('#check'+name).length > 0){
			clearAlert('check'+name);
			jQuery(this).removeClass('fail');
		}

		if(this.value != '' && this.value.length < 3){
			clearAlert('check'+name);
			alertUser(jQuery(this), 'checklastname', 'Campo obrigatório, deve conter no mínimo 3 caractéres.')
		}else{
		
			if(this.value.match(/^([a-z,A-Z,á,é,í,ó,ú,â,ê,ô,ã,õ,ç,Á,É,Í,Ó,Ú,Â,Ê,Ô,Ã,Õ,Ç,ü,ñ,Ü,Ñ,' '])*$/)){
				clearAlert('checklastname');
				jQuery(this).removeClass('fail');
			}else{
				clearAlert('checklastname');
				alertUser(jQuery(this), 'checklastname', 'Campo obrigatório, deve conter caracteres.')
			}
		}
	});
	/*
	jQuery("input[name='areacode']").blur(function(){
		if(jQuery('#checkareacode').length >=2  ){
			clearAlert('checkareacode');
			jQuery(this).removeClass('fail');
		}
		if(this.value != '' && this.value.length < 2){
			alertUser(jQuery(this), 'checkareacode', 'Campo obrigatório, deve conter no mínimo 2 números.')
		}else{
			if(this.value.match(/^([0-9])*$/)){
				clearAlert('checkareacode');
				jQuery(this).removeClass('fail');
			}else{
				clearAlert('checkareacode');
				alertUser(jQuery(this), 'checkareacode', 'Campo obrigatório, deve ser numérico.')
			}
		}
	});
	
	jQuery("input[name='user_cellphone']").blur(function(){
			
		
		if(this.value != '' && this.value.length < 8){
			jQuery('#checkedcellphone').remove();
			clearAlert('checkcellphone');
			alertUser(jQuery(this), 'checkcellphone', 'Campo obrigatório, deve conter 8 números.')
		}else{
			
			if(this.value != ''){
				if(!this.value.match(/^([0-9])*$/)){
				
					clearAlert('checkcellphone');
					alertUser(jQuery(this), 'checkcellphone', 'Campo obrigatório, deve ser numérico.')
					jQuery('#checkedcellphone').remove();
				}else{
					clearAlert('checkcellphone');
					jQuery(this).removeClass('fail');
				}
			}else{
				//Vacio
				clearAlert('checkcellphone');
				jQuery(this).removeClass('fail');
			}	
		}
		
		
	});*/

	jQuery("input[name='captcha']").blur(function(){
		var captcha = jQuery(this);
		var value   = jQuery("input[name='captchavalue']").val();
		if(jQuery('#checkcaptcha').length > 0){
			jQuery('#checkcaptcha').remove();
			captcha.removeClass('fail');
		
		}
		
		$.ajax({
			type: "POST",
			url: "/captcha/validate",
			data: "captcha="+captcha.val()+"&captchavalue="+value,
			async:false,
			success: function(msg){
				if(msg == 0){
					if(jQuery("#checkcaptcha").length > 0){
						jQuery("#checkcaptcha").fadeOut('fast').fadeIn('fast');
					}else{
							if(captcha.val()!=''){
							jQuery('#captchaok').remove();
							alertUser(captcha, 'checkcaptcha', 'O código inserido não está correto, verifique por favor');
						}//***
					}
				}else{
					jQuery('#captchaok').remove();
					captcha.after('<span id="captchaok"><img src="/interface/default/desktop/imgs/buttons/registro_ok.png" style="vertical-align:middle;"/></span>');
					clearAlert('checkcaptcha');
					captcha.removeClass('fail');
				}
			}
		});
	});
}

function echeck(str) {

	//if(str == ''){ return "Insira um e-mail válido";}
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	
	if(str!=''){
	if (str.indexOf(at)==-1){
		return "Insira um e-mail válido";
	}
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		return "Insira um e-mail válido";
	}
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		return "Insira um e-mail válido";
	}
	if (str.indexOf(at,(lat+1))!=-1){
		return "Insira um e-mail válido";
	}
	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		return "Insira um e-mail válido";
	}
	if (str.indexOf(dot,(lat+2))==-1){
		return "Insira um e-mail válido";
	}
	if (str.indexOf(" ")!=-1){
		return "Insira um e-mail válido";
	}
	}
	return false;
}

function clearAlert(id){
	jQuery('#'+id).remove();
}

function alertUser(jqobj, id, msj){
	jqobj.after('<div id="'+id+'" class="error"><div>'+msj+'</div></div>');
}



function checkForm(){

	var validated = true;
	
	var username = jQuery("#registro input[name='username']");
	
	if(username.val() == '' || username.val().length < 2){
		clearAlert('checkusername');	
		alertUser(username, 'checkusername', 'Campo obrigatório, deve conter entre 2 e 10 caracteres')
		username.addClass('fail');
		username.focus();
		validated = false;
	}
	else if(username.val().match(/\s+/)){
			clearAlert('checkusername');
			alertUser(username, 'checkusername', 'Campo obrigatório, não pode conter espaços')
			username.addClass('fail');
			username.focus();
			validated = false;
	}
	else if(!username.val().match(/^[A-Z a-z 0-9 _ . \-]+$/)){ 
			clearAlert('checkusername');
			alertUser(username, 'checkusername', 'Campo obrigatório, não pode conter caracteres especiales')
			username.addClass('fail');
			username.focus();
			validated = false;
		}
	else {
	
	jQuery.ajax({
				type: "POST",
				url: "/registration/validate-user",
				data: "username="+username.val(),
				async:false,
				success: function(response){
	
				if(response == '1'){
					jQuery('#checked').remove();
					//username.after('<span id="checked"><img src="/interface/default/desktop/imgs/buttons/registro_ok.png" style="vertical-align:middle;"/> Disponível</span>');
					username.after('<span id="checked"><img src="/interface/default/desktop/imgs/buttons/registro_ok.png" style="vertical-align:middle;margin-left:2px;"/></span>');
					jQuery('#checking').remove();
					clearAlert('checkusername');
					
				}else{
					jQuery('#checked').remove();
					//username.after('<span id="checked"><img src="/interface/default/desktop/imgs/buttons/registro_no.gif" style="vertical-align:middle;"/> Não disponível</span>');
					username.after('<span id="checked"><img src="/interface/default/desktop/imgs/buttons/registro_no.gif" style="vertical-align:middle;margin-left:2px;"/></span>');
					jQuery('#checking').remove();
					clearAlert('checkusername');
					validated=false;
				}
				
			}
		});
	} 
	
	var email = jQuery("input[name='user_email']");
	
	var msj = echeck(email.val());
	if(msj || email.val() == ''){
		clearAlert('erroremail');
		alertUser(email, 'erroremail', 'Insira um e-mail válido')
		email.addClass('fail');
		email.focus();
		validated = false;
	}

	var emailCheck = jQuery("input[name='email_check']");
	var msj = echeck(emailCheck.val());

	
	if(msj){
		clearAlert('erroremailcheck');
		
		alertUser(emailCheck, 'erroremailcheck', msj)

		emailCheck.addClass('fail');
		emailCheck.focus();
		validated = false;
	}
	else if(emailCheck.val() != email.val() || emailCheck.val()== ''){
		
		alertUser(emailCheck, 'erroremailcheck', 'Seu e-mail está diferente, verifique por favor.')
		emailCheck.addClass('fail');
		emailCheck.focus();
		validated = false;
	}

	var password = jQuery("input[name='user_password']");

	if(password == '' || password.val().length < 6){
		clearAlert('pass');
		alertUser(password, 'pass', 'Campo obrigatório, deve conter entre 6 e 10 caracteres')
		password.addClass('fail');
		password.focus();
		validated = false;
	}

	var password2 = jQuery("input[name='password_check']");
	
	if(password2.val() == '' || password2.val() != password.val()){
		clearAlert('passcheck');
		alertUser(password2, 'passcheck', 'Sua senha está diferente, verifique por favor.');
		password2.addClass('fail');
		password2.focus();
		validated = false;
	}
	
	var name = jQuery("input[name='user_name']");
	if(name.val() == '' || name.val().length < 3 ){
		clearAlert('checkname');
		alertUser(name, 'checkname', 'Campo obrigatório, deve conter no mínimo 3 caractéres.')
		name.addClass('fail');
		name.focus();
		validated = false;
	}else{
		if(!name.val().match(/^([a-z,A-Z,á,é,í,ó,ú,â,ê,ô,ã,õ,ç,Á,É,Í,Ó,Ú,Â,Ê,Ô,Ã,Õ,Ç,ü,ñ,Ü,Ñ,' '])*$/)){
			clearAlert('checkname');
			alertUser(name, 'checkname','Campo obrigatório, deve conter caracteres.')
			validated = false;
			name.addClass('fail');
			name.focus();
		}	
	}
	
	var lastname = jQuery("input[name='user_lastname']");
	if(lastname.val() == '' || lastname.val().length < 3 ){
		clearAlert('checklastname');
		alertUser(lastname, 'checklastname', 'Campo obrigatório, deve conter no mínimo 3 caractéres.')
		lastname.addClass('fail');
		lastname.focus();
		validated = false;
	}else{
		if(!lastname.val().match(/^([a-z,A-Z,á,é,í,ó,ú,â,ê,ô,ã,õ,ç,Á,É,Í,Ó,Ú,Â,Ê,Ô,Ã,Õ,Ç,ü,ñ,Ü,Ñ,' '])*$/)){
			clearAlert('checklastname');
			alertUser(lastname, 'checklastname','Campo obrigatório, deve conter caracteres.')
			validated = false;
			lastname.addClass('fail');
			lastname.focus();
		}	
	}


	var day 	= jQuery("select[name='day']");
	var month = jQuery("select[name='month']");
	var year 	= jQuery("select[name='year']");
	
	
	if(day.val() == 0 || month.val()==0 ||year.val()==0 ){

			clearAlert('checkdate');
			
			if(day.val() == 0 && month.val()==0 && year.val()==0 ){
				alertUser(day, 'checkdate', 'Campo obrigatório, deve escolhar uma data.')
			}
			else if(day.val() == 0 ){
				alertUser(day, 'checkdate', 'Campo obrigatório, deve escolhar um dia.')
			}
			else if(month.val() == 0 ){
				alertUser(day, 'checkdate', 'Campo obrigatório, deve escolhar um mês.')
			}
			else if(year.val() == 0 ){
				alertUser(day, 'checkdate', 'Campo obrigatório, deve escolhar um ano.')
			}
			
			day.addClass('fail');
			day.focus();
			validated = false;
	
	}else{
		
		
		age=calculate_age(day.val(),month.val(),year.val());

		if(age < 14){
			alertUser(day, 'checkdate', 'Você não pode ser inferior a 14 anos.')
			day.addClass('fail');
			day.focus();
			validated = false;
	
		}else{
			clearAlert('checkdate');
			jQuery(this).removeClass('fail');
		
		}
	}
		
		
	
	var agree = jQuery("input[name='agree']");
	if(!agree.is(':checked')){
		
		clearAlert('checkborndate');
		jQuery(this).removeClass('fail');
		alertUser(agree, 'checkborndate', 'Debe aceitar os Termo de uso e condições.')
		agree.focus();
		validated = false;
	}else{
				clearAlert('checkborndate');
				jQuery(this).removeClass('fail');
	}
	

	
	
	var captcha = jQuery("input[name='captcha']");
	clearAlert('checkcaptcha');

	if(captcha.val() == ''){
		clearAlert('checkcaptcha');
		alertUser(captcha, 'checkcaptcha', 'O código inserido não está correto, verifique por favor.')
		captcha.addClass('fail');
		captcha.focus();
		validated = false;
	}else{
		
		var value   = jQuery("input[name='captchavalue']").val();
				
		$.ajax({
				type: "POST",
				url: "/captcha/validate",
				data: "captcha="+captcha.val()+"&captchavalue="+value,
				async:false,
				success: function(msg){
					if(msg == 0){
						clearAlert('checkcaptcha');
						jQuery('#captchaok').remove();
						alertUser(captcha, 'checkcaptcha', 'O código inserido não está correto, verifique por favor');
						validated=false;
						captcha.addClass('fail');
						captcha.focus();
					}else{
						clearAlert('checkcaptcha');
						captcha.removeClass('fail');
						jQuery('#captchaok').remove();
						captcha.after('<span id="captchaok"><img src="/interface/default/desktop/imgs/buttons/registro_ok.png" style="vertical-align:middle;"/></span>');
					}
			}	
		});
	}
	
	if(validated){
		
		return true;
	}else{
	
		return false;
	}

}


function calculate_age(born_day,born_month,born_year)
{
  today = new Date();
  now_year = today.getYear();
  now_month = today.getMonth();
  now_day = today.getDate();
  age = (now_year + 1900) - born_year;
  if ( now_month < (born_month - 1))
  {
  	age--;
  }
  if (((born_month - 1) == now_month) && (now_day < born_day))
  { 
    age--;
  }
  if (age > 1900)
  {
  age -= 1900;
  }
  return age;
}


