Index: trunk/prototype/services/ImapServiceAdapter.php
===================================================================
--- trunk/prototype/services/ImapServiceAdapter.php	(revision 6576)
+++ trunk/prototype/services/ImapServiceAdapter.php	(revision 6641)
@@ -538,7 +538,13 @@
 					
 					$data['messageId'] = $headers[0]->message_id;
-							
-
-					return ($s) ? $data : array();
+					
+					/*
+					 * TODO
+					 * Verificar erro ao tentar setar uma flag com o limite de flags atingido
+					 * onde o status retornado pelo imap_setflag_full é true mesmo não sendo possível
+					 * a inserção da flag.
+					 */
+
+					return (($s) && (imap_last_error() != 'Too many user flags in mailbox')) ? $data : array();
 
 				} else if (isset($data['messageId'])) {
Index: trunk/prototype/modules/mail/interceptors/Helpers.php
===================================================================
--- trunk/prototype/modules/mail/interceptors/Helpers.php	(revision 6566)
+++ trunk/prototype/modules/mail/interceptors/Helpers.php	(revision 6641)
@@ -206,12 +206,10 @@
 		
 		if(empty($params['messageId'])) 
-		{ 
-			throw new Exception('#FollowupflagMessageIdError');
-		}else{ 
-		
-			$params = Controller::create($imap_uri, $params);
-		}
+		    throw new Exception('#FollowupflagMessageIdError');
+		else 
+		    $params = Controller::create($imap_uri, $params);
+
 		if (!$params)
-			throw new Exception('#FollowupflagParamsError');
+		    throw new Exception('#FollowupflagLimitError');
 	}
 	
@@ -222,4 +220,8 @@
 		 * deste interceptor.
 		 */
+		
+	   
+	    
+	    
 		if ($original['URI']['service'] == 'PostgreSQL') return $result;
 		
@@ -267,6 +269,6 @@
 	//followupflagged:PostgreSQL.after.find
 	public function doImapFind( &$uri , &$result , &$criteria , $original ){
-
-		$imap_uri = $uri;
+	    
+	  	$imap_uri = $uri;
 		$imap_uri['service'] = 'Imap';
 		$imap_criteria = $original['criteria'];
@@ -311,5 +313,5 @@
 		 * Faz a consistÃªncia do banco com o imap
 		 */
-		 /*
+		/*
 		if ($result) {
 			$idList = array();
Index: trunk/prototype/modules/mail/js/label.js
===================================================================
--- trunk/prototype/modules/mail/js/label.js	(revision 6566)
+++ trunk/prototype/modules/mail/js/label.js	(revision 6641)
@@ -127,10 +127,7 @@
 				var hasLabel = true;
 				$.each(data, function(index, value) {
-					if(typeof value == 'object'){
-						hasLabel = false;
-					}
-					else {
-						hasLabel = value;
-					}
+					
+					hasLabel = typeof value == 'object' ? false : value;
+					
 				});
 					
Index: trunk/prototype/modules/mail/js/followupflag.js
===================================================================
--- trunk/prototype/modules/mail/js/followupflag.js	(revision 6487)
+++ trunk/prototype/modules/mail/js/followupflag.js	(revision 6641)
@@ -1,2 +1,16 @@
+MsgsCallbackFollowupflag = {
+
+    '#FollowupflagMessageIdError': function(){
+	alert('Não foi possível sinalizar esta mensagem. \nDetalhes do erro: mensagem não contém o atributo message-id.');
+    },
+    '#FollowupflagLimitError': function(){
+	alert('Não foi possível sinalizar esta mensagem. \nDetalhes do erro: limite de flags atingido para esta pasta.');
+    },
+    '#FollowupflagParamsError': function(){
+	alert('Não foi possível sinalizar esta mensagem. \nDetalhes do erro: mensagem não contém todos os atributos necessários.');
+    }
+    
+}
+
 function updateCacheFollowupflag(msgNumber, msgFolder, op){
 	if(op){
Index: trunk/expressoMail1_2/js/search.js
===================================================================
--- trunk/expressoMail1_2/js/search.js	(revision 6612)
+++ trunk/expressoMail1_2/js/search.js	(revision 6641)
@@ -586,18 +586,9 @@
 							
 							if (fail) {
-								if(current_folder == mailbox){
-									$('#td_message_followup_' + messageClickedId + ', ' + 
-									'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC");	
-								}else{								
-									$('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC");		
-								}
-								
-								switch( fail )
-								{
-								    case '#FollowupflagMessageIdError': alert("Não foi possível sinalizar esta mensagem. \nDetalhes do erro: mensagem não contém o atributo message-id."); break;
-								    case '#FollowupflagParamsError': alert("Não foi possível sinalizar esta mensagem. \nDetalhes do erro: mensagem não contém todos os atributos necessários."); break;
-								}
-								
-								return false;
+							    
+							    var isCurrentFolder = current_folder == mailbox ? '#td_message_followup_' + messageClickedId + ', ' : ''; 	
+							    $(isCurrentFolder + 'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC");
+							    MsgsCallbackFollowupflag[fail]();
+							    return false;
 							}
 							
Index: trunk/expressoMail1_2/js/draw_api.js
===================================================================
--- trunk/expressoMail1_2/js/draw_api.js	(revision 6629)
+++ trunk/expressoMail1_2/js/draw_api.js	(revision 6641)
@@ -1760,22 +1760,14 @@
 					.html('<img src="../prototype/modules/mail/img/flagEditor.png">');
 					
-					switch( fail )
-					{
-					    case '#FollowupflagMessageIdError': {
-						    $('#td_message_followup_' + messageClickedId + ', ' + 
-						    'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC");
-						    alert("Não foi possível sinalizar esta mensagem. \nDetalhes do erro: mensagem não contém o atributo message-id."); break;
-					    }
-					    case '#FollowupflagParamsError': {
-						    $('#td_message_followup_' + messageClickedId + ', ' + 
-						    'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC");
-						    alert("Não foi possível sinalizar esta mensagem. \nDetalhes do erro: mensagem não contém todos os atributos necessários."); break;
-					    }
-					    default : {
-						    $('#td_message_followup_' + messageClickedId + ', ' + 
-						    'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", headers_msgs.followupflagged.backgroundColor);
-						    updateCacheFollowupflag(messageClickedId, msg_folder, true);
-					    }
-					}
+					
+					if(fail != 'success'){
+					    $('#td_message_followup_' + messageClickedId + ', ' + 
+					    'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC");
+					    MsgsCallbackFollowupflag[fail]();
+					}else{
+					    $('#td_message_followup_' + messageClickedId + ', ' + 
+					    'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", headers_msgs.followupflagged.backgroundColor);
+					    updateCacheFollowupflag(messageClickedId, msg_folder, true);
+					}				
 				});
 				
