--- modules/brazilian_ids/brazilianids.module	2008-01-24 21:19:46.000000000 -0200
+++ brazilian_ids/brazilianids.module	2009-08-03 22:01:50.000000000 -0300
@@ -8,7 +8,7 @@
  */
 
 if (module_exists('content')) {
-  require_once(drupal_get_path('module', 'brazilianids') .'/brazilianids_cck.inc');
+  module_load_include('inc', 'brazilianids', 'brazilianids_cck');
 }
 
 /**
@@ -19,6 +19,8 @@ if (module_exists('content')) {
  */
 function _brazilianids_admin() {
   // Choose which of these fields shuold be used
+  $form=array();
+  
   $form['brazilianids_cpf']= array(
     '#default_value'  => variable_get('brazilianids_cpf', FALSE),
     '#description'    => t('Enable the CPF on user profiles'),
@@ -31,6 +33,21 @@ function _brazilianids_admin() {
     '#title'          => t('Enable the CNPJ'),
     '#type'           => 'checkbox'
   );
+  
+  
+   $form['brazilianids_cpfcnpj'] = array(
+    '#default_value'  => variable_get('brazilianids_cpfcnpj', FALSE),
+    '#description'    => t('Enable the CPF/CNPJ on user profiles'),
+    '#title'          => t('Enable the CPF/CNPJ'),
+    '#type'           => 'checkbox'
+  );
+  
+  $form['brazilianids_category'] = array(
+		'#default_value'	=> variable_get('brazilianids_category', t('account')),
+		'#description'		=> t('Category to groupin brazilianids'),
+		'#title'			=> t('Category'),
+		'#type'				=> 'textfield'
+  );
 
   // It will determine if these Brazilian IDs are
   // required fields
@@ -49,24 +66,24 @@ function _brazilianids_admin() {
     '#title'          => t('User registration'),
     '#type'           => 'checkbox'
   );
-
+  //return $form;
   return system_settings_form($form);
 }
 
 /**
  * Implementation of hook_menu().
  */
-function brazilianids_menu($may_cache) {
-  if (!empty($may_cache)) {
-    $items[] = array(
-      'access'              => user_access('administer users'),
-      'callback'            => 'drupal_get_form',
-      'callback arguments'  => array('_brazilianids_admin'),
-      'path'                => 'admin/user/brazilianids',
-      'title'               => t('Brazilian IDs')
+function brazilianids_menu() {
+	$items = array();
+
+    $items['admin/user/brazilianids'] = array(
+      'access arguments' => array('administer users'),
+      'page callback'            => 'drupal_get_form',
+      'page arguments'  => array('_brazilianids_admin'),
+      'title'               => 'Brazilian IDs',
+	  'type='	=> MENU_NORMAL_ITEM,
     );
     return $items;
-  }
 }
 
 /**
@@ -80,10 +97,16 @@ function brazilianids_user($type, &$edit
       if (!variable_get('brazilianids_registration', FALSE)) {
         return;
       }
+	  $group = check_plain(variable_get('brazilianids_category', t('account')));
+	  if($category == null) { $category = $group ; };	  
     case 'form':
+	
+	  $group = check_plain(variable_get('brazilianids_category', t('account')));
+	  if(strtolower($group) != strtolower(t($category))) return;
+	
       // Include the CNPJ
       if (variable_get('brazilianids_cpf', FALSE)) {
-        $form['brazilianids_cpf'] = array(
+        $form[$category]['brazilianids_cpf'] = array(
           '#description'    => t('Your CPF. Only the numbers.'),
           '#default_value'  => empty($user->brazilianids_cpf) ? '' : $user->brazilianids_cpf,
           '#maxlength'      => 11,
@@ -96,7 +119,7 @@ function brazilianids_user($type, &$edit
 
       // Include the CNPJ
       if (variable_get('brazilianids_cnpj', FALSE)) {
-        $form['brazilianids_cnpj'] = array(
+        $form[$category]['brazilianids_cnpj'] = array(
           '#description'    => t('Your CNPJ. Only the numbers.'),
           '#default_value'  => empty($user->brazilianids_cnpj) ? '' : $user->brazilianids_cnpj,
           '#maxlength'      => 14,
@@ -106,56 +129,76 @@ function brazilianids_user($type, &$edit
           '#type'           => 'textfield'
         );
       }
+	  
+	  // Include the CPF/CNPJ
+      if (variable_get('brazilianids_cpfcnpj', FALSE)) {
+        $form[$category]['brazilianids_cpfcnpj'] = array(
+          '#description'    => t('Your CPF/CNPJ. Only the numbers.'),
+          '#default_value'  => empty($user->brazilianids_cpfcnpj) ? '' : $user->brazilianids_cpfcnpj,
+          '#maxlength'      => 14,
+          '#required'       => variable_get('brazilianids_required', FALSE),
+          '#size'           => 20,
+          '#title'          => t('CPF/CNPJ'),
+          '#type'           => 'textfield'
+        );
+      }
 
       return $form;
 
     case 'validate':
       // Include the validation functions
-      include drupal_get_path('module', 'brazilianids') .'/brazilianids.check.inc';
-
+      module_load_include('check.inc', 'brazilianids', 'brazilianids');
+	  
       // Validate the CPF, if any
-      if (variable_get('brazilianids_cpf', FALSE)
+      if (isset($edit['brazilianids_cpf'])
           and !_brazilianids_validate_cpf($edit['brazilianids_cpf'])) {
         form_set_error('brazilianids_cpf',
           t('Your CPF is not valid or it already exists.'));
       }
 
       // Validate the CNPJ, if any
-      if (variable_get('brazilianids_cnpj', FALSE)
+      if (isset($edit['brazilianids_cnpj'])
           and !_brazilianids_validate_cnpj($edit['brazilianids_cnpj'])) {
         form_set_error('brazilianids_cnpj',
           t('Your CNPJ is not valid or it already exists.'));
       }
+	  
+	  // Validate the CNPJ, if any
+      if (isset($edit['brazilianids_cpfcnpj'])
+		  and !(_brazilianids_is_cpf_cnpj($edit['brazilianids_cpfcnpj'])=='CPF'?_brazilianids_validate_cpf($edit['brazilianids_cpfcnpj']):_brazilianids_validate_cnpj($edit['brazilianids_cpfcnpj']))
+		  //and !(_brazilianids_validate_cpf($edit['brazilianids_cpfcnpj'])  or _brazilianids_validate_cnpj($edit['brazilianids_cpfcnpj']))
+         ) {
+        form_set_error('brazilianids_cpfcnpj',
+          t('Your CPF/CNPJ is not valid or it already exists.'));
+      }
       return;
     case 'view':
       // Include the validation functions
-      include drupal_get_path('module', 'brazilianids') .'/brazilianids.check.inc';
-
+      module_load_include('check.inc', 'brazilianids', 'brazilianids');
+	$group = check_plain(variable_get('brazilianids_category', t('account')));
+	
       if (!empty($user->brazilianids_cpf)) {
-        $cnpjcpf[] = array(
+        $user->content[$group][t('CPF')] = array(
           'class' => 'item',
           'title' => t('CPF'),
           'value' => _brazilianids_format_cpf($user->brazilianids_cpf)
         );
-        $toggle = t('CPF');
       }
       if (!empty($user->brazilianids_cnpj)) {
-        $cnpjcpf[] = array(
+       $user->content[$group][t('CNPJ')] = array(
           'class' => 'item',
           'title' => t('CNPJ'),
           'value' => _brazilianids_format_cnpj($user->brazilianids_cnpj)
         );
-        if (!empty($toggle)) {
-          $toggle = t('CPF/CNPJ');
-        }
-        else {
-          $toggle = t('CNPJ');
-        }
       }
+	  
+	  if (!empty($user->brazilianids_cpfcnpj)){
+		$user->content[$group][t('CPF/CNPJ')] = array(
+			'#type' => 'user_profile_item',
+			'#title' => t('CPF/CNPJ'),
+			'#value' => _brazilianids_is_cpf_cnpj($user->brazilianids_cpfcnpj)=='CPF'?_brazilianids_format_cpf($user->brazilianids_cpfcnpj):_brazilianids_format_cnpj($user->brazilianids_cpfcnpj)
+		);
 
-      // If any of these fields are enabled, show it!
-      if (!empty($toggle)) {
-        return array($toggle => $cnpjcpf);
-      }
+	  }
   }
 }
