/*
 * Vari�veis gerais.
 */

/*
 * Express�o que verifica se tem 2 arrobas, dois pontos seguidos, arroba 
 * seguido de ponto, ponto no in�cio, arroba seguido de h�fen ou um ponto no 
 * in�cio.
 */
var rgx_email1 = /(\@.*\@)|(.*\.\..*)|(.*\@\..*)|(^\.)|(\.$)|(\@\/)|(.*\@\-.*)|(.*\.$)/;

/*
 * Express�es que verificam a formata��o correta do e-mail.
 */
var rgx_email2 = /^[_\w\d][\w\d\_\/\-\.]*\@[\d\w\-\.]+[0-9A-z]$/;
var rgx_email3 = /.*\@.*\.+.*/;

/*
 * Valida se a URL � v�lida.
 * 
 * 1 - Verifica se tem http://;
 * 2 - tem ou n�o www ou algum subdom�nio;
 * 3 - nome do dom�nio;
 * 4 - exten��o (ex.: .com, .blog);
 * 5 - se tem uma pasta ap�s o dom�nio.
 */
var rgx_url = /^http:\/\/((www|[\w\d]+)\.)?(\w+[\+\.\w-]*)\.([a-z]{2,4}([/\w]*)?)$/;

/*
 * Fun��o para validar e-mail.
 * 
 * @param string email O e-mail a ser validado.
 * @return boolean Indica se o e-mail � v�lido.
 */
function valida_email(email) {

  /*
   * Verifica se a primeira expressao bate e a segunda e a tarceira n�o batem 
   * com o valor passado.
   */
  return rgx_email1.test(email) || !rgx_email2.test(email) || !rgx_email3.test(email);
}

/*
 * Mostra pop-up de aviso.
 */
function exibe_pop_up(mostrar,formulario) {

  // Remove a pop-up de aviso
  $('#pop_up_aviso').hide();
  $('#pop_up_aviso').remove();

  $('fieldset', formulario).append('<div id="pop_up_aviso" class="png"><a class="png" href="#" onclick="fecha_pop_up(); return false;" title="Continuar">Continuar</a></div>');

  if (!mostrar) {
    $('#pop_up_aviso a').before('<p class="centro">Por favor, verifique se todos os campos foram preenchidos corretamente.</p>');
    $('#pop_up_aviso').addClass('erro');
  } else {
    $('#pop_up_aviso a').before('<p class="centro">Sua mensagem foi enviada com sucesso.</p>');
    $('#pop_up_aviso').removeClass('erro');
  }

  $('#pop_up_aviso').fadeIn('fast');
}

/*
 * Fun��o para fechar o pop-up de aviso.
 */
function fecha_pop_up() {
  $('#pop_up_aviso').hide();
  // Remove a pop-up de aviso
  $('#pop_up_aviso').remove();
  return false;
}



$(document).ready(function () {

  /*
   * VALIDA��O DO FORM DE CONTATO.
   */
  $('#frmcontato').submit(function () {
    var nome = $('#nome');
    var email = $('#email');
    var assunto = $('#assunto');
    var mensagem = $('#mensagem');
    var formulario = $('#frmcontato');

    var enviar = true;

    if (!nome.val()) {
      nome.addClass('erro');
      enviar = false;
    } else {
      nome.removeClass('erro');
    }

    /*
     * Chama fun��o que valida e-mail.
     */
    if(valida_email(email.val())) {
      email.addClass('erro');
      enviar = false;
    } else {
      email.removeClass('erro');
    }

    /*
     * Valida se tem alguma assunto selecionado.
     */
    if (!assunto.val()) {
      assunto.addClass('erro');
      assunto.css({ background: "#fae5e5" });
      enviar = false;
    } else {
      assunto.removeClass('erro');
      assunto.css({ background: "#fff" });
    }

    /*
     * Valida se tem alguma mensagem.
     */
    if(!mensagem.val()) {
      mensagem.addClass('erro');
      enviar = false;
    } else {
      mensagem.removeClass('erro');
    }

    /*
     * Mostra pop-ip de aviso.
     */
    if (!enviar) {
      exibe_pop_up(enviar,formulario);
    }

    return enviar;
  });



  /*
   * VALIDA��O DO FORM DE TRABALHE CONOSCO.
   */

  // Limita��o do campo da descri��o
  $('#descricao_trabalhe').keyup( function () {
    var limite = 300;
    var descricao = $('#descricao_trabalhe').val();
    if (descricao.length > limite) {
      $('#descricao_trabalhe').val(descricao.substr(0,limite));
      return false;
    } else {
      if (descricao.length == 0) {
        $('.descricao label span').html('0');
      } else {
        // retorna quantos caracteres foram escritos
        $('.descricao label span').html(descricao.length);
      }
    }
  });

  $('#frmtrabalhe').submit(function () {
    var area = $('#area_trabalhe');
    var nome = $('#nome_trabalhe');
    var email = $('#email_trabalhe');
    var site = $('#site_trabalhe');
    var descricao = $('#descricao_trabalhe');
    var formulario = $('#frmtrabalhe');

    var enviar = true;

    if (!area.val()) {
      area.addClass('erro');
      area.css({ background: "#fae5e5" });
      enviar = false;
    } else {
      area.removeClass('erro');
      area.css({ background: "#fff" });
    }

    if (!nome.val()) {
      nome.addClass('erro');
      enviar = false;
    } else {
      nome.removeClass('erro');
    }

    /*
     * Chama fun��o que valida e-mail.
     */
    if (valida_email(email.val())) {
      email.addClass('erro');
      enviar = false;
    } else {
      email.removeClass('erro');
    }

    /*
     * Valida se o campo do site � diferente do default ou diferente de nulo.
     */
    if (site.val() != 'http://' && site.val() != '') {

      if (!site.val().match(rgx_url)) {

        /*
         * Foca no campo do site.
         */
        site.addClass('erro');
        enviar = false;
      } else {
        site.removeClass('erro');
      }
    } else {
      site.removeClass('erro');
    }

    /*
     * Valida se tem alguma descri��o.
     */
    if (!descricao.val()) {
      descricao.addClass('erro');
      enviar = false;
    } else {
      descricao.removeClass('erro');
    }

    /*
     * Chama a fun��o para mostrar a pop-up de aviso.
     */
    if (!enviar) {
    	exibe_pop_up(enviar,formulario);
    }

    return enviar;

  });
  
  /*
   * VALIDA��O DO FORM DE USABILIDADE.
   */
  $('#frmusabilidade').submit(function () {
	    var nome = $('#nome_usabilidade');
	    var idade = $('#idade_usabilidade');
	    var email = $('#email_usabilidade');
	    var profissao = $('#profissao_usabilidade');
	    var cod_tel = $('#tel_cod');
	    var telefone = $('#tel_usabilidade');
	    var sites = $('#area_usabilidade');
	    var formulario = $('#frmusabilidade');
	    
	    var enviar = true;

	    //Valida o nome
	    if (!nome.val()) {
	      nome.addClass('erro');
	      enviar = false;
	    } else {
	      nome.removeClass('erro');
	    }
	    
	    //Valida o ddd
	    if (!cod_tel.val()) {
	    	cod_tel.addClass('erro');
		      enviar = false;
		    } else {
		    	cod_tel.removeClass('erro');
		    }
	    
	    //Valida o telefone
	    if (!telefone.val()) {
	    	telefone.addClass('erro');
		      enviar = false;
		    } else {
		    	telefone.removeClass('erro');
		    }
	    
	    /*
	     * Chama fun��o que valida e-mail.
	     */
	    if(valida_email(email.val())) {
	      email.addClass('erro');
	      enviar = false;
	    } else {
	      email.removeClass('erro');
	    }
	    
	    /*
	     * Valida se tem algum site na textarea.
	     */
	    if(!sites.val()) {
	    	sites.addClass('erro');
	      enviar = false;
	    } else {
	    	sites.removeClass('erro');
	    }
	    
	    /*
	     * Mostra pop-ip de aviso.
	     */
	    if (!enviar) {
	      exibe_pop_up(enviar,formulario);
	    }

	    return enviar;

  });  
  

});
