public function getCategoryNames($virtuemart_category_id, $catMenuId = 0, $parents = 0)
    {
        if (empty(self::$categoryNamesCache)) {
            self::$categoryNamesCache = array();
        }
        if (empty(self::$categoryNamesCache[$this->vmlang])) {
            self::$categoryNamesCache[$this->vmlang] = array();
        }
        $strings = array();
        $db = JFactory::getDBO();
        if (empty($parents)) {
            $parents_id = array_reverse($this->getCategoryRecurse($virtuemart_category_id, $catMenuId));
        } else {
            $parents_id = array_reverse($parents);
        }
        foreach ($parents_id as $id) {
            if (!isset(self::$categoryNamesCache[$this->vmlang][$id])) {
                $q = 'SELECT `category_name` as name
					FROM  `#__virtuemart_categories_' . $this->vmlang . '`
					WHERE  `virtuemart_category_id`=' . (int) $id;
                $db->setQuery($q);
                $cslug = $db->loadResult();
                if (empty($cslug)) {
                    $q = 'SELECT `category_name` as name
					FROM  `#__virtuemart_categories_en_gb`
					WHERE  `virtuemart_category_id`=' . (int) $id;
                    $db->setQuery($q);
                    $cslug = $db->loadResult();
                }
                if (!$this->nostatic) {
                    self::$categoryNamesCache[$this->vmlang][$id] = $cslug;
                }
                $strings[] = $cslug;
            } else {
                $strings[] = self::$categoryNamesCache[$this->vmlang][$id];
            }
        }
        if (function_exists('mb_strtolower')) {
            return mb_strtolower(implode('~/~', $strings));
        } else {
            return strtolower(implode('~/~', $strings));
        }
    }