function fm_delete($source)
{
    global $ftp, $ftp_prepath;
    if (!fm_ftpconnect()) {
        return false;
    }
    if (!fm_isdir($source)) {
        return @ftp_delete($ftp, $ftp_prepath . $source);
    }
    if (substr('/' . $source, -1) != '/') {
        $source .= '/';
    }
    // enforce trailing slash
    $csources = fm_fastgetfiles($source);
    foreach ($csources as $csource) {
        if ($csource == '.' || $csource == '..') {
            continue 1;
        }
        fm_delete($source . $csource);
    }
    return @ftp_rmdir($ftp, substr($ftp_prepath . $source, 0, -1));
}
function fm_isdir($path)
{
    if (!$path) {
        return true;
    }
    $cfiles = fm_fastgetfiles(upOne($ftp_prepath . $path));
    return in_array(basename($path) . '/', $cfiles);
}