Index: branches/2.2/expressoMail1_2/inc/class.imap_functions.inc.php
===================================================================
--- branches/2.2/expressoMail1_2/inc/class.imap_functions.inc.php	(revision 4014)
+++ branches/2.2/expressoMail1_2/inc/class.imap_functions.inc.php	(revision 4022)
@@ -100,6 +100,4 @@
 	function get_range_msgs2($params)
 	{
-		// Free others requests 
-		session_write_close(); 
 		$folder = $params['folder'];
 		$msg_range_begin = $params['msg_range_begin'];
@@ -111,18 +109,16 @@
 		if(!$this->mbox || !is_resource($this->mbox))
 			$this->mbox = $this->open_mbox($folder);
+
+		$return = array();
 		
-		$return = array();
-		//Para enviar o offset entre o timezone definido pelo usuário e GMT
-		$return['offsetToGMT'] = $this->functions->CalculateDateOffset();
-		
-		//Condição comentada devido a um problema na função imap_status que não retorna valores exatos para pastas 
-		//acentuadas e tambem pela não necessidade de se tratar mensagens lidas ou nÃ£o lidas das demais, em relação 
-		//a contagem de mensagens não lidas e do total de mensagens
-		/*
-		 if(!$search_box_type || $search_box_type=="UNSEEN" || $search_box_type=="SEEN") {
-			$msgs_info = imap_status($this->mbox,"{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$folder,SA_ALL);
-			$return['tot_unseen'] = $search_box_type == "SEEN" ? 0 : $msgs_info->unseen;
+		if(!$search_box_type || $search_box_type=="UNSEEN" || $search_box_type=="SEEN") {
+			$msgs_info = imap_mailboxmsginfo($this->mbox);		
+
+
+			$return['tot_unseen'] = $search_box_type == "SEEN" ? 0 : $msgs_info->Unread;
+
 			$sort_array_msg = $this-> get_msgs($folder, $sort_box_type, $search_box_type, $sort_box_reverse,$msg_range_begin,$msg_range_end);
-			$num_msgs = ($search_box_type=="UNSEEN") ? $msgs_info->unseen : (($search_box_type=="SEEN") ? ($msgs_info->messages - $msgs_info->unseen) : $msgs_info->messages);
+
+			$num_msgs = ($search_box_type=="UNSEEN") ? $msgs_info->Unread : (($search_box_type=="SEEN") ? ($msgs_info->Nmsgs - $msgs_info->Unread) : $msgs_info->Nmsgs);
 
 			$i = 0;
@@ -141,36 +137,31 @@
 		}
 		else {
-		* */
-		$msgs_info	= imap_status( $this->mbox,"{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$folder,SA_ALL );
-		$num_msgs	= imap_num_msg($this->mbox);
-        $sort_array_msg	= $this->get_msgs( $folder, $sort_box_type, $search_box_type, $sort_box_reverse, $msg_range_begin, $msg_range_end );
-        $return['tot_unseen'] = ( $search_box_type == "SEEN" ) ? 0 : $msgs_info->unseen;
-        
-        $i = 0;		
-
-        if( is_array($sort_array_msg) )
-        {
-            foreach($sort_array_msg as $msg_number => $value)
-            {
-                $temp = $this->get_info_head_msg($msg_number);
-                
-                if(!$temp)
-                    return false;
-
-                if($temp['Unseen'] == 'U' || $temp['Recent'] == 'N')
-                {
-                    $return['tot_unseen']++;
-                }
-
-                if($i <= ($msg_range_end-$msg_range_begin))
-                    $return[$i] = $temp;
-                
-                $i++;
-            }
-        }
-        
-        $return['num_msgs'] = $num_msgs;
-
-        return $return;
+			$num_msgs = imap_num_msg($this->mbox);	
+			$sort_array_msg = $this-> get_msgs($folder, $sort_box_type, $search_box_type, $sort_box_reverse,$msg_range_begin,$num_msgs);
+
+
+			$return['tot_unseen'] = 0;
+			$i = 0;		
+
+			if(is_array($sort_array_msg)){
+				foreach($sort_array_msg as $msg_number => $value)
+				{
+					$temp = $this->get_info_head_msg($msg_number);
+					if(!$temp)
+						return false;
+				
+					if($temp['Unseen'] == 'U' || $temp['Recent'] == 'N'){
+						$return['tot_unseen']++;
+					}
+				
+					if($i <= ($msg_range_end-$msg_range_begin))
+						$return[$i] = $temp;
+					$i++;
+				}
+			}
+			$return['num_msgs'] = count($sort_array_msg)+($msg_range_begin-1);
+
+		}
+		return $return;
 	}
 
@@ -182,11 +173,11 @@
 		//if ($this->prefs['use_important_flag'] )
 		//{
-			/*Como eu preciso do atributo Importance para saber se o email Ã©
-			 * importante ou nÃ£o, uso abaixo a funÃ§Ã£o imap_fetchheader e busco
-			 * o atributo importance nela. Isso faz com que eu acesse o cabeÃ§alho
+			/*Como eu preciso do atributo Importance para saber se o email é
+			 * importante ou não, uso abaixo a função imap_fetchheader e busco
+			 * o atributo importance nela. Isso faz com que eu acesse o cabeçalho
 			 * duas vezes e de duas formas diferentes, mas em contrapartida, eu
-			 * nÃ£o preciso reimplementar o mÃ©todo utilizando o fetchheader.
-			 * Como as mensagens sÃ£o renderizadas em um nÃºmero pequeno por vez,
-			 * nÃ£o parece ter perda considerÃ¡vel de performance.
+			 * não preciso reimplementar o método utilizando o fetchheader.
+			 * Como as mensagens são renderizadas em um número pequeno por vez,
+			 * não parece ter perda considerável de performance.
 			 */
 
@@ -194,6 +185,6 @@
 			$flag = preg_match('/importance *: *(.*)\r/i', $tempHeader, $importance);
                 //}
-                // Reimplementado cÃ³digo para identificaÃ§Ã£o dos e-mails assinados e cifrados
-                // no mÃ©todo getMessageType(). MÃ¡rio CÃ©sar Kolling <mario.kolling@serpro.gov.br>
+                // Reimplementado código para identificação dos e-mails assinados e cifrados
+                // no método getMessageType(). Mário César Kolling <mario.kolling@serpro.gov.br>
                 $head_array['ContentType'] = $this->getMessageType($msg_number, $tempHeader);
                 $head_array['Importance'] = $flag==0?"Normal":$importance[1];
@@ -242,5 +233,5 @@
 		$to = $header->to;
 		$head_array['to'] = array();
-		if($to[1] && $to[1]->host == ".SYNTAX-ERROR.") { //E-mails que nÃ£o possuem o campo "para", vÃªm com o recipiente preenchido, porÃ©m com um recipiente a mais alegando erro de sintaxe.
+		if($to[1] && $to[1]->host == ".SYNTAX-ERROR.") { //E-mails que não possuem o campo "para", vêm com o recipiente preenchido, porém com um recipiente a mais alegando erro de sintaxe.
 			$head_array['to']['name'] = $head_array['to']['email'] = NULL;
 		}
@@ -316,6 +307,6 @@
 	}
 	/**
-	* FunÃ§Ã£o que importa arquivos .eml exportados pelo expresso para a caixa do usuÃ¡rio. Testado apenas
-	* com .emls gerados pelo expresso, e o arquivo pode ser um zip contendo vÃ¡rios emls ou um .eml.
+	* Função que importa arquivos .eml exportados pelo expresso para a caixa do usuário. Testado apenas
+	* com .emls gerados pelo expresso, e o arquivo pode ser um zip contendo vários emls ou um .eml.
 	*/
 	function import_msgs($params) {
@@ -408,7 +399,7 @@
 	}
         /*
-		Remove os anexos de uma mensagem. A estratÃ©gia para isso Ã© criar uma mensagem nova sem os anexos, mantendo apenas
-		a primeira parte do e-mail, que Ã© o texto, sem anexos.
-		O mÃ©todo considera que o email Ã© multpart.
+		Remove os anexos de uma mensagem. A estratégia para isso é criar uma mensagem nova sem os anexos, mantendo apenas
+		a primeira parte do e-mail, que é o texto, sem anexos.
+		O método considera que o email é multpart.
 	*/
 	function remove_attachments($params) {
@@ -420,5 +411,5 @@
 
 		$headertemp = explode("\n",imap_fetchheader($this->mbox, imap_msgno($this->mbox, $params["msg_num"])));
-		foreach($headertemp as $head) {//Se eu colocar todo o header do email dÃ¡ pau no append, entÃ£o procuro apenas o que interessa.
+		foreach($headertemp as $head) {//Se eu colocar todo o header do email dá pau no append, então procuro apenas o que interessa.
 			$head1 = explode(":",$head);
 			if ( (strtoupper($head1[0]) == "TO") ||
@@ -430,7 +421,7 @@
 
 		$msg = &new message_components($this->mbox);
-		$msg->fetch_structure($params["msg_num"]);/* O fetchbody tava trazendo o email com problemas na acentuaÃ§Ã£o.
-							     EntÃ£o uso essa classe para verificar a codificaÃ§Ã£o e o charset,
-							     para que o mÃ©todo decodeBody do expresso possa trazer tudo certinho*/
+		$msg->fetch_structure($params["msg_num"]);/* O fetchbody tava trazendo o email com problemas na acentuação.
+							     Então uso essa classe para verificar a codificação e o charset,
+							     para que o método decodeBody do expresso possa trazer tudo certinho*/
 
 		$all_body_type = strtolower($msg->file_type[$params["msg_num"]][0]);
@@ -468,5 +459,5 @@
 							$all_body_encoding, $all_body_charset
 							)
-					), "\\Seen"); //Append do novo email, sÃ³ com header e conteÃºdo sem anexos.
+					), "\\Seen"); //Append do novo email, só com header e conteúdo sem anexos.
 
 		if(!$status)
@@ -537,5 +528,5 @@
 			$msg_info = $this->get_info_msg($new_params);
 
-			$this->mbox = $this->open_mbox($params['folder']); //NÃ£o sei porque, mas se nÃ£o abrir de novo a caixa dÃ¡ erro.
+			$this->mbox = $this->open_mbox($params['folder']); //Não sei porque, mas se não abrir de novo a caixa dá erro.
 			$msg_info['header'] = $this->get_info_head_msg($msg_number);
 
@@ -1343,8 +1334,8 @@
 		$body = $this-> replace_links($body);
 
-		//RemoÃ§Ã£o de tags <span></span> para correÃ§Ã£o de erro no firefox 
+		//Remoção de tags <span></span> para correção de erro no firefox 
 		$body = mb_eregi_replace("<span><span>","",$body); 
 		$body = mb_eregi_replace("</span></span>","",$body); 
-		//CorreÃ§Ã£o para compatibilizaÃ§Ã£o com Outlook, ao visualizar a mensagem 
+		//Correção para compatibilização com Outlook, ao visualizar a mensagem 
 		$body = mb_ereg_replace('<!--\[','<!-- [',$body); 
 		$body = mb_ereg_replace('&lt;!\[endif\]--&gt;', '<![endif]-->', $body);
@@ -1404,5 +1395,5 @@
 		 */ 
 
-		// PHP 5.2.x - Remover assim que possÃ­vel 
+		// PHP 5.2.x - Remover assim que possível 
 		$body = preg_replace_callback( $pattern, 
 			create_function( 
@@ -1510,5 +1501,5 @@
                             $this->db = new db_functions();
                             
-                            // TODO: testar se existe um certificado no banco e verificar qual Ã¯Â¿Å o mais atual.
+                            // TODO: testar se existe um certificado no banco e verificar qual ï¿œ o mais atual.
                             if(!$certificado->dados['EXPIRADO'] && !$certificado->dados['REVOGADO'] && count($certificado->erros_ssl) < 1)
                                 $this->db->insert_certificate(strtolower($certificado->dados['EMAIL']), $certificado->cert_assinante, $certificado->dados['SERIALNUMBER'], $certificado->dados['AUTHORITYKEYIDENTIFIER']);
@@ -1625,11 +1616,11 @@
 		foreach($msgs_to_exec as $msg_number)
 		{
-			/*A funÃ§Ã£o imap_headerinfo nÃ£o traz o cabeÃ§alho completo, e sim alguns
-			* atributos do cabeÃ§alho. Como eu preciso do atributo Importance
-			* para saber se o email Ã© importante ou nÃ£o, uso abaixo a funÃ§Ã£o
+			/*A função imap_headerinfo não traz o cabeçalho completo, e sim alguns
+			* atributos do cabeçalho. Como eu preciso do atributo Importance
+			* para saber se o email é importante ou não, uso abaixo a função
 			* imap_fetchheader e busco o atributo importance nela para passar
-			* para as funÃ§Ãµes ajax. Isso faz com que eu acesse o cabeÃ§alho
+			* para as funções ajax. Isso faz com que eu acesse o cabeçalho
 			* duas vezes e de duas formas diferentes, mas em contrapartida, eu
-			* nÃ£o preciso reimplementar o mÃ©todo utilizando o fetchheader.
+			* não preciso reimplementar o método utilizando o fetchheader.
 			*/
     
@@ -1719,9 +1710,9 @@
 
      /**
-     * MÃ©todo que faz a verificaÃ§Ã£o do Content-Type do e-mail e verifica se Ã© um e-mail normal,
+     * Método que faz a verificação do Content-Type do e-mail e verifica se é um e-mail normal,
      * assinado ou cifrado.
-     * @author MÃ¡rio CÃ©sar Kolling <mario.kolling@serpro.gov.br>
-     * @param $headers Uma String contendo os Headers do e-mail retornados pela funÃ§Ã£o imap_imap_fetchheader
-     * @param $msg_number O nÃºmero da mesagem
+     * @author Mário César Kolling <mario.kolling@serpro.gov.br>
+     * @param $headers Uma String contendo os Headers do e-mail retornados pela função imap_imap_fetchheader
+     * @param $msg_number O número da mesagem
      * @return Retorna o tipo da mensagem (normal, signature, cipher).
      */
@@ -1745,9 +1736,9 @@
      * Metodo que retorna todas as pastas do usuario logado.
      * @param $params array opcional para repassar os argumentos ao metodo.
-     * Se usar $params['noSharedFolders'] = true, ira retornar todas as pastas do usuÃ¡rio logado,
+     * Se usar $params['noSharedFolders'] = true, ira retornar todas as pastas do usuário logado,
      * excluindo as compartilhadas para ele.
-     * Se usar $params['folderType'] = "default" irÃ¡ retornar somente as pastas defaults
-     * Se usar $params['folderType'] = "personal" irÃ¡ retornar somente as pastas pessoais
-     * Se usar $params['folderType'] = null irÃ¡ retornar todas as pastas
+     * Se usar $params['folderType'] = "default" irá retornar somente as pastas defaults
+     * Se usar $params['folderType'] = "personal" irá retornar somente as pastas pessoais
+     * Se usar $params['folderType'] = null irá retornar todas as pastas
      * @return Retorna um array contendo as seguintes informacoes de cada pasta: folder_unseen,
      * folder_id, folder_name, folder_parent e folder_hasChildren.
@@ -2077,5 +2068,5 @@
         {
             $body = $params['body'];
-	    //CompatibilizaÃ§Ã£o com Outlook, ao encaminhar a mensagem
+	    //Compatibilização com Outlook, ao encaminhar a mensagem
 	    $body = mb_ereg_replace('<!--\[','<!-- [',$body);
         }
@@ -3406,5 +3397,5 @@
 	function remove_accents($string) {
 		return strtr($string,
-	 	"?Ã??Ã³?Ã?ÃºÃÃÃÃÃÃÃÃÃÃÃÃ?ÃÃÃÃÃÃÃÃÃÃ?ÃÃ?Ã¡Ã Ã£Ã¢Ã€Ã§Ã©ÃšÃªÃ«Ã­Ã¬?Ã®Ã¯Ã±Ã³Ã²ÃµÃŽÃ¶ÃºÃ¹?Ã»ÃŒÃœÃ¿",
+	 	"?Ó??ó?Ý?úÁÀÃÂÄÇÉÈÊËÍÌ?ÎÏÑÕÔÓÒÖÚÙ?ÛÜ?áàãâäçéèêëíì?îïñóòõôöúù?ûüýÿ",
 	 	"SOZsozYYuAAAAACEEEEIIIIINOOOOOUUUUUsaaaaaceeeeiiiiinooooouuuuuyy");
 	}
@@ -3871,5 +3862,5 @@
 
 //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Insere emails no imap a partir do fonte do mesmo. Se o argumento timestamp for passado ele utiliza do script python
-///expressoMail1_2/imap.py para inserir uma msg com o horÃ¡rio correto pois isso nÃ£o Ã© porssÃ­vel com a funÃ§Ã£o imap_append do php.
+///expressoMail1_2/imap.py para inserir uma msg com o horário correto pois isso não é porssível com a função imap_append do php.
 
     function insert_email($source,$folder,$timestamp,$flags){
@@ -3927,10 +3918,10 @@
         if (version_compare(PHP_VERSION, '5.2.0', '>=')){
             if(!$source = base64_decode($source,true))
-                return "error ".$source."EspaÃ§os ".$i;
+                return "error ".$source."Espaços ".$i;
 
         }
         else {
             if(!$source = base64_decode($source))
-                return "error ".$source."EspaÃ§os ".$i;
+                return "error ".$source."Espaços ".$i;
         }
 
@@ -3968,5 +3959,5 @@
 
 //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Trata fontes de emails enviados via POST para o servidor por um xmlhttprequest, as partes codificados com
-//Base64 os "+" sÃ£o substituidos por " " no envio e essa funÃ§Ã£o arruma esse efeito.
+//Base64 os "+" são substituidos por " " no envio e essa função arruma esse efeito.
 
     function treat_base64_from_post($source){
@@ -3994,5 +3985,5 @@
     }
 
-//Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Recebe os fontes dos emails a serem desarquivados, separa e envia cada um para funÃ§Ã£o insert_mail.
+//Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Recebe os fontes dos emails a serem desarquivados, separa e envia cada um para função insert_mail.
 
     function unarchive_mail($params)
