public static function AsyncCheckDB($oPage, $aParameters)
 {
     $sDBServer = $aParameters['db_server'];
     $sDBUser = $aParameters['db_user'];
     $sDBPwd = $aParameters['db_pwd'];
     $sDBName = $aParameters['db_name'];
     $oPage->add_ready_script('oXHRCheckDB = null;');
     $checks = SetupUtils::CheckServerConnection($sDBServer, $sDBUser, $sDBPwd);
     if ($checks === false) {
         // Connection failed, disable the "Next" button
         $oPage->add_ready_script('$("#wiz_form").data("db_connection", "error");');
         $oPage->add_ready_script('$("#db_info").html("No connection to the database...");');
     } else {
         $aErrors = array();
         $aWarnings = array();
         foreach ($checks['checks'] as $oCheck) {
             if ($oCheck->iSeverity == CheckResult::ERROR) {
                 $aErrors[] = $oCheck->sLabel;
             } else {
                 if ($oCheck->iSeverity == CheckResult::WARNING) {
                     $aWarnings[] = $oCheck->sLabel;
                 }
             }
         }
         if (count($aErrors) > 0) {
             $oPage->add_ready_script('$("#wiz_form").data("db_connection", "error");');
             $oPage->add_ready_script('$("#db_info").html(\'<img src="../images/validation_error.png"/>&nbsp;<b>Error:</b> ' . htmlentities(implode('<br/>', $aErrors), ENT_QUOTES, 'UTF-8') . '\');');
         } else {
             if (count($aWarnings) > 0) {
                 $oPage->add_ready_script('$("#wiz_form").data("db_connection", "");');
                 $oPage->add_ready_script('$("#db_info").html(\'<img src="../images/error.png"/>&nbsp;<b>Warning:</b> ' . htmlentities(implode('<br/>', $aWarnings), ENT_QUOTES, 'UTF-8') . '\');');
             } else {
                 $oPage->add_ready_script('$("#wiz_form").data("db_connection", "");');
                 $oPage->add_ready_script('$("#db_info").html(\'<img src="../images/validation_ok.png"/>&nbsp;Database server connection Ok.\');');
             }
         }
         if ($checks['databases'] == null) {
             $sDBNameInput = '<input id="db_name" name="db_name" size="15" maxlen="32" value="' . htmlentities($sDBName, ENT_QUOTES, 'UTF-8') . '"/><span style="width:20px;" id="v_db_name"></span>';
             $oPage->add_ready_script('$("#table_info").html(\'<img src="../images/error.png"/>&nbsp;Not enough rights to enumerate the databases\');');
         } else {
             $sDBNameInput = '<select id="db_name" name="db_name">';
             foreach ($checks['databases'] as $sDatabaseName) {
                 if ($sDatabaseName != 'information_schema') {
                     $sEncodedName = htmlentities($sDatabaseName, ENT_QUOTES, 'UTF-8');
                     $sSelected = $sDatabaseName == $sDBName ? ' selected ' : '';
                     $sDBNameInput .= '<option value="' . $sEncodedName . '"' . $sSelected . '>' . $sEncodedName . '</option>';
                 }
             }
             $sDBNameInput .= '</select>';
         }
         $oPage->add_ready_script('$("#db_name_container").html("' . addslashes($sDBNameInput) . '");');
         $oPage->add_ready_script('$("#db_name").bind("click keyup change", function() { $("#existing_db").attr("checked", "checked"); WizardUpdateButtons(); });');
     }
     $oPage->add_ready_script('WizardUpdateButtons();');
 }