//Modal de Loading...
var $loading = $('#dialog').dialog({'autoOpen':false,'title':'Carregando...','modal':true,'height':70});
//Exibe mensagens(info,alert,errormsg,success)
var $message = $('.message');

//Executa a cada vez que um usuário digitar em um input
$(function(){
	 $('#frase').keyup(function(){
		 limitChars('frase', 120, 'infochar');
	 });
});

//Limita um numero de caracteres em uma input
function limitChars(textid, limit, infodiv) {
	var text = $('#'+textid).val(); 
	var textlength = text.length;
	
	if(textlength > limit) {
		$('#'+textid).val(text.substr(0,limit));
		
		message('Você não pode digitar mais de '+limit+' caracteres!','info');
		return false;
	} else {
		$('#' + infodiv).html('Você tem  '+ (limit - textlength) +' caracteres restantes.');
		return true;
	}
}

function message($mensagem, $tipo){
	
	//Limpa classe anterior
	$message.removeClass('info');
	$message.removeClass('success');
	$message.removeClass('erromsg');
	$message.removeClass('alert');
	//Remove mensagens anteriores
	$message.find('p').remove();
	//Define o tipo de erro
	$message.addClass($tipo);
	//Testa se é um vetor
	if($.isArray($mensagem)){
		$.each($mensagem,function(key,value){
			//Imprime cada mensagem
			$message.append('<p>'+value+'<p');
		});
	}else{
		//Se não for vetor imprime a mensagem
		$message.append('<p>'+$mensagem+'<p');
	}
	//Exibe Mensagens(com fade in 1200ms)
	$message.fadeIn(1200);
}

//Pega todos os inputs do form e separa em um array pra enviar via $.ajax
function dataAjax(resposta){
	resposta = resposta.find(':input');
	var data = {};
   resposta.each(function() {
       data[this.name] = $(this).val();
   });
  return data;
}

//Marca campos com erro vindo do Zend_Form
function marcaCampos(data){
	removeCampos();
	$.each(data.messages,function(key,value){
		$('#'+key).closest('label').addClass('marcaCampos');
	});
}
//Remove os campos marcados
function removeCampos(){
	$('.marcaCampos','#formConcurso').removeClass('marcaCampos');
}

function formErrors(data){
	
	$message.addClass('errormsg');
	//Limpa as mensagens anteriores
	$message.find('p').remove();
	
	$message.prepend('<p>Campo(s) obrigatório(s) em branco</p>');
	
	$.each(data.messages,function(key,value){
		//Deleta mensagens de campo em branco(já tem o marca campos)
		delete value.isEmpty;
		//Percorre o vetor e adiciona as mensagens na modal
		$message.fadeIn('slow');
		$.each(value,function(chave,valor){
			$message.append('<p>'+valor+'</p>');
		});
	});
}

//Padrão Ajax
$.ajaxSetup({
	dataType : "json",
	beforeSend:function(){
		//Abre a modal de loading toda vez que uma requisição ajax for iniciar
		$loading.dialog('open');
	},
	error :  function(xhr, status, errorThrown) {
		//Exibe erros se uma requisição ajax falhar
		message('Servidor indiponível no momento, tente mais tarde','errormsg');
        console.log(errorThrown+'\n'+status+'\n'+xhr.statusText);
	},
	complete : function(){
		//Encerra a modal de loading toda vez que uma requisição ajax completar
		$loading.dialog('close');
	}
});

