/**
  * Returns the HTML code for the Saferpay payment form.
  * @param   array   $arrCards     The optional accepted card types
  * @return  string                The HTML code
  * @static
  */
 static function _SaferpayProcessor()
 {
     global $_ARRAYLANG;
     $arrShopOrder = array('AMOUNT' => str_replace('.', '', $_SESSION['shop']['grand_total_price']), 'CURRENCY' => Currency::getActiveCurrencyCode(), 'ORDERID' => $_SESSION['shop']['order_id'], 'ACCOUNTID' => \Cx\Core\Setting\Controller\Setting::getValue('saferpay_id', 'Shop'), 'SUCCESSLINK' => \Cx\Core\Routing\Url::fromModuleAndCmd('Shop' . MODULE_INDEX, 'success', '', array('result' => 1, 'handler' => 'saferpay'))->toString(), 'FAILLINK' => \Cx\Core\Routing\Url::fromModuleAndCmd('Shop' . MODULE_INDEX, 'success', '', array('result' => 0, 'handler' => 'saferpay'))->toString(), 'BACKLINK' => \Cx\Core\Routing\Url::fromModuleAndCmd('Shop' . MODULE_INDEX, 'success', '', array('result' => 2, 'handler' => 'saferpay'))->toString(), 'DESCRIPTION' => '"' . $_ARRAYLANG['TXT_ORDER_NR'] . ' ' . $_SESSION['shop']['order_id'] . '"', 'LANGID' => \FWLanguage::getLanguageCodeById(FRONTEND_LANG_ID), 'NOTIFYURL' => \Cx\Core\Routing\Url::fromModuleAndCmd('Shop' . MODULE_INDEX, 'success', '', array('result' => '-1', 'handler' => 'saferpay'))->toString(), 'ALLOWCOLLECT' => 'no', 'DELIVERY' => 'no');
     $payInitUrl = \Saferpay::payInit($arrShopOrder, \Cx\Core\Setting\Controller\Setting::getValue('saferpay_use_test_account', 'Shop'));
     //DBG::log("PaymentProcessing::_SaferpayProcessor(): payInit URL: $payInitUrl");
     // Fixed: Added check for empty return string,
     // i.e. on connection problems
     if (!$payInitUrl) {
         return "<font color='red'><b>" . $_ARRAYLANG['TXT_SHOP_PSP_FAILED_TO_INITIALISE_SAFERPAY'] . "<br />{$payInitUrl}</b></font>" . "<br />" . \Saferpay::getErrors();
     }
     $return = "<script src='http://www.saferpay.com/OpenSaferpayScript.js'></script>\n";
     switch (\Cx\Core\Setting\Controller\Setting::getValue('saferpay_window_option', 'Shop')) {
         case 0:
             // iframe
             return $return . $_ARRAYLANG['TXT_ORDER_PREPARED'] . "<br/><br/>\n" . "<iframe src='{$payInitUrl}' width='580' height='400' scrolling='no' marginheight='0' marginwidth='0' frameborder='0' name='saferpay'></iframe>\n";
         case 1:
             // popup
             return $return . $_ARRAYLANG['TXT_ORDER_LINK_PREPARED'] . "<br/><br/>\n" . "<script type='text/javascript'>\n                     function openSaferpay() {\n                       strUrl = '{$payInitUrl}';\n                       if (strUrl.indexOf(\"WINDOWMODE=Standalone\") == -1) {\n                         strUrl += \"&WINDOWMODE=Standalone\";\n                       }\n                       oWin = window.open(strUrl, 'SaferpayTerminal',\n                           'scrollbars=1,resizable=0,toolbar=0,location=0,directories=0,status=1,menubar=0,width=580,height=400'\n                       );\n                       if (oWin == null || typeof(oWin) == \"undefined\") {\n                         alert(\"The payment couldn't be initialized.  It seems like you are using a popup blocker!\");\n                       }\n                     }\n                     </script>\n" . "<input type='button' name='order_now' value='" . $_ARRAYLANG['TXT_ORDER_NOW'] . "' onclick='openSaferpay()' />\n";
         default:
             //case 2: // new window
     }
     return $return . $_ARRAYLANG['TXT_ORDER_LINK_PREPARED'] . "<br/><br/>\n" . "<form method='post' action='{$payInitUrl}'>\n<input type='submit' value='" . $_ARRAYLANG['TXT_ORDER_NOW'] . "' />\n</form>\n";
 }
    static function getForm($arrOrder, $autopost = false)
    {
        global $_ARRAYLANG;
        /*        'AMOUNT' => str_replace('.', '', $_SESSION['shop']['grand_total_price']),
                'CURRENCY' => \Cx\Modules\Shop\Controller\Currency::getActiveCurrencyCode(),
                'ORDERID' => $_SESSION['shop']['order_id'],
                'ACCOUNTID' => \Cx\Core\Setting\Controller\Setting::getValue('saferpay_id','Shop'),
                'SUCCESSLINK' => urlencode('http://'.$serverBase.'index.php?section=Shop'.MODULE_INDEX.'&cmd=success&result=1&handler=saferpay'),
                'FAILLINK' => urlencode('http://'.$serverBase.'index.php?section=Shop'.MODULE_INDEX.'&cmd=success&result=0&handler=saferpay'),
                'BACKLINK' => urlencode('http://'.$serverBase.'index.php?section=Shop'.MODULE_INDEX.'&cmd=success&result=2&handler=saferpay'),
                'DESCRIPTION' => urlencode('"'.$_ARRAYLANG['TXT_ORDER_NR'].' '.$_SESSION['shop']['order_id'].'"'),
                'LANGID' => FWLanguage::getLanguageCodeById(FRONTEND_LANG_ID),
                'NOTIFYURL' => urlencode('http://'.$serverBase.'index.php?section=Shop'.MODULE_INDEX.'&cmd=success&result=-1&handler=saferpay'),
                'ALLOWCOLLECT' => 'no',
                'DELIVERY' => 'no',
                'PROVIDERSET' = $arrCards; // if set*/
        $payInitUrl = self::payInit($arrOrder, \Cx\Core\Setting\Controller\Setting::getValue('saferpay_use_test_account', 'Shop'));
        //DBG::log("Saferpay::getForm(): payInit URL: $payInitUrl");
        if (!$payInitUrl || strtoupper(substr($payInitUrl, 0, 5)) == 'ERROR') {
            return "<font color='red'><b>" . $_ARRAYLANG['TXT_SHOP_PSP_FAILED_TO_INITIALISE_SAFERPAY'] . "<br />Warnings:<br />" . Saferpay::getErrors() . "<br />Errors:<br />" . Saferpay::getWarnings() . "</b></font>";
        }
        $return = "<script src='http://www.saferpay.com/OpenSaferpayScript.js'></script>\n";
        switch (\Cx\Core\Setting\Controller\Setting::getValue('saferpay_window_option', 'Shop')) {
            case 0:
                // iframe -- UNUSED, because it does not work reliably!
                return $return . $_ARRAYLANG['TXT_ORDER_PREPARED'] . "<br/><br/>\n" . "<iframe src='{$payInitUrl}' width='580' height='400' scrolling='no' marginheight='0' marginwidth='0' frameborder='0' name='saferpay'></iframe>\n";
            case 1:
                // popup
                return $return . $_ARRAYLANG['TXT_ORDER_LINK_PREPARED'] . '<br/><br/>
<script type="text/javascript">
function openSaferpay() {
  strUrl = "' . $payInitUrl . '";
  if (strUrl.indexOf("WINDOWMODE=Standalone") == -1) {
    strUrl += "&WINDOWMODE=Standalone";
  }
  oWin = window.open(strUrl, "SaferpayTerminal",
    "scrollbars=1,resizable=0,toolbar=0,location=0,directories=0,status=1,menubar=0,width=580,height=400");
  if (oWin == null || typeof(oWin) == "undefined") {
    alert("The payment couldn\'t be initialized.  Maybe you are using a popup blocker?");
  }
}
' . ($autopost ? 'window.setTimeout(3000, openSaferpay());
' : '') . '
</script>
<input type="button" name="order_now" value="' . $_ARRAYLANG['TXT_ORDER_NOW'] . '" onclick="openSaferpay();" />
';
            default:
                //case 2: // new window
        }
        return $return . $_ARRAYLANG['TXT_ORDER_LINK_PREPARED'] . "<br/><br/>\n<form method='post' action='{$payInitUrl}'>\n  <input type='submit' value='" . $_ARRAYLANG['TXT_ORDER_NOW'] . "' />\n</form>\n" . ($autopost ? '
<script type="text/javascript">
window.setTimeout(3000, function() {
  document.forms[0].submit();
});
</script>
' : '');
    }