foreach ($sets as $s) {
        $argArray[] = 'sets[]=' . $s;
    }
    foreach ($colors as $c) {
        $argArray[] = 'colors[]=' . $c;
    }
    $argString = implode('&', $argArray);
    if (strlen($argString) !== 0) {
        $search_url .= '?' . $argString;
    }
    // Yay, finally done.
    $template->assign_vars(array('SEARCH_RESULT_COUNT' => $result_count, 'SEARCH_RESULT_START' => 1 + $start, 'SEARCH_RESULT_END' => min($start + $results_per_page, $result_count), 'PAGINATION' => generate_pagination($search_url, $result_count, $results_per_page, $start)));
    foreach ($cards as $row) {
        $manaCost = decodemana($row['mana_cost']);
        $isCreature = $row['power'] != NULL && $row['toughness'] != NULL ? true : false;
        $template->assign_block_vars('searchresults', array('CARD_NAME' => $row['name'], 'CARD_MANA' => $manaCost, 'CARD_CMC' => $row['cmc'], 'CARD_TYPES' => replaceManaSymbols($row['types']), 'S_IS_CREATURE' => $isCreature, 'CARD_POWER' => $row['power'], 'CARD_TOUGHNESS' => $row['toughness'], 'CARD_TEXT' => cleanRulesTextForDisplay($row['rules_text']), 'CARD_SET' => 'default', 'CARD_RARITY' => $RARITY_TRANSLATIONS[$row['rarity']], 'CARD_LOYALTY' => $row['loyalty'], 'URL' => './view_card.php?name=' . urlencode($row['name'])));
    }
    page_header('NGA Card Search Results');
    $template->set_filenames(array('body' => 'library/card_search_results_body.html'));
    page_footer();
} else {
    // No search is being performed yet. Show the search page.
    // Get a list of all sets
    // TODO: allow set owners to see their own sets
    $sql = 'SELECT * FROM nga_card_sets WHERE nga_card_sets.is_public = TRUE';
    $result = $db->sql_query($sql);
    $set_list = '';
    while ($row = $db->sql_fetchrow($result)) {
        $set_list .= '<option value="' . $row['short_name'] . '">' . $row['name'] . '</option>';
    }
    $db->sql_freeresult($result);
function cleanRulesTextForDisplay($text)
{
    // Clean up card text by:
    //  - replacing newlines with <br/>s
    //  - replacing {foo} with the appropriate mana symbols
    //  - making parenthetical things italic
    //  - replacing ~foo~ with italicized text
    //  - making //foo// purple
    $cleanedText = '<p>' . $text . '</p>';
    $cleanedText = str_replace("\n", '</p><p>', $cleanedText);
    $cleanedText = preg_replace('/(\\(.*?\\))/', '<i>\\1</i>', $cleanedText);
    $cleanedText = replaceManaSymbols($cleanedText);
    $cleanedText = preg_replace('/~(.*?)~/', '<i>\\1</i>', $cleanedText);
    $cleanedText = preg_replace('# //(.*?)//#', ' <span style="color:purple;">\\1</span>', $cleanedText);
    return $cleanedText;
}