protected function getCallingUrl()
    {
        $oGlobal = TGlobal::instance();
        $sCallingURL = $oGlobal->GetUserData('sourceurl');
        if (true === empty($sCallingURL)) {
            //the method will most likely be called on a basket page, in this case, ignore it...
            $activePageService = $this->getActivePageService();
            $oActivePage = $activePageService->getActivePage();
            $checkoutSystemPage = $this->getSystemPageService()->getSystemPage('checkout');
            if (null === $checkoutSystemPage || $checkoutSystemPage->fieldCmsTreeId !== $oActivePage->GetMainTreeId()) {
                $aExcludeParams = array('module_fnc');
                // we may be on a category list or an item page... so ignore those parameters, too
                $aExcludeParams[] = MTShopArticleCatalogCore::URL_CATEGORY_ID;
                $aExcludeParams[] = MTShopArticleCatalogCore::URL_ITEM_ID;
                $aExcludeParams[] = MTShopBasketCore::URL_REQUEST_PARAMETER;

                $sCallingURL = $activePageService->getLinkToActivePageRelative(array(), $aExcludeParams);
            } else {
                //basket, so try to get from session
                if (isset($_SESSION[MTShopOrderWizardCore::SESSION_PARAM_NAME]) && !empty($_SESSION[MTShopOrderWizardCore::SESSION_PARAM_NAME])) {
                    $sCallingURL = $_SESSION[MTShopOrderWizardCore::SESSION_PARAM_NAME];
                } else {
                    $portal = $this->getPortalDomainService()->getActivePortal();
                    if (null !== $portal) {
                        $sCallingURL = $this->getPageService()->getLinkToPortalHomePageAbsolute();
                    } else {
                        $sCallingURL = '/';
                    }
                }
            }
        }

        return $sCallingURL;
    }