public function storeValue($value)
 {
     $db = JFactory::getDbo();
     $mainCatId = isset($value['main']) ? $value['main'] : '';
     if (isset($value['secondary'])) {
         $secondaryCatIds = explode(",", $value['secondary']);
         $secondaryCatIds = array_unique($secondaryCatIds);
         if (is_array($secondaryCatIds) && count($secondaryCatIds) > 0) {
             foreach ($secondaryCatIds as $i => $secondaryCatId) {
                 if (!is_numeric($secondaryCatId) || $secondaryCatId <= 0 || $secondaryCatId == $mainCatId) {
                     unset($secondaryCatIds[$i]);
                 }
             }
         }
     }
     if ($mainCatId) {
         if (!isset($this->listing->cat_id) || !$this->listing->cat_id) {
             // Insert main category
             $saveMainCat = JUDirectoryHelper::addCategory($this->listing_id, $mainCatId, 1);
             if (!$saveMainCat) {
                 return false;
             }
         } else {
             // Update main cat id
             if ($this->listing->cat_id != $mainCatId) {
                 $query = "UPDATE #__judirectory_listings_xref SET cat_id = " . $mainCatId . " WHERE listing_id= " . $this->listing_id . " AND main = 1";
                 $db->setQuery($query);
                 $db->execute();
             }
         }
     }
     /* Add/Update secondary categories */
     $allowCatIds = array();
     if (isset($secondaryCatIds)) {
         if ($secondaryCatIds) {
             foreach ($secondaryCatIds as $key => $catId) {
                 $query = "SELECT id FROM #__judirectory_listings_xref WHERE listing_id = " . $this->listing_id . " AND cat_id = {$catId} AND main = 0";
                 $db->setQuery($query);
                 $itemId = $db->loadResult();
                 if ($itemId) {
                     $allowCatIds[] = $catId;
                     $query = "UPDATE #__judirectory_listings_xref SET ordering = " . ($key + 1) . " WHERE id = " . $itemId;
                     $db->setQuery($query);
                     $db->execute();
                 } else {
                     // Insert new secondary cat if it is not exists
                     if (JUDirectoryHelper::addCategory($this->listing_id, $catId, 0, $key + 1)) {
                         $allowCatIds[] = $catId;
                     }
                 }
             }
         }
         $query = $db->getQuery(true);
         $query->delete('#__judirectory_listings_xref')->where('listing_id = ' . $this->listing_id)->where('main = 0');
         if ($allowCatIds) {
             $query->where('cat_id NOT IN (' . implode(',', $allowCatIds) . ')');
         }
         $db->setQuery($query);
         $db->execute();
     }
     /* End - Process secondary categories */
     return true;
 }