function adinj_save_options()
{
    // TODO investigate register_settings for a future release
    if (isset($_POST['adinj_action'])) {
        switch ($_POST['adinj_action']) {
            case 'Save all settings':
                adinj_checkNonce();
                // Extract all know options
                $default_options = adinj_default_options();
                foreach ($default_options as $key => $value) {
                    if (isset($_POST[$key])) {
                        $ops[$key] = $_POST[$key];
                    } else {
                        $ops[$key] = "";
                    }
                }
                $raw_ad_code_random = stripslashes($_POST['ad_code_random_1']);
                $ops['ad_code_random_1'] = $raw_ad_code_random;
                $raw_ad_code_top = stripslashes($_POST['ad_code_top_1']);
                $ops['ad_code_top_1'] = $raw_ad_code_top;
                $raw_ad_code_bottom = stripslashes($_POST['ad_code_bottom_1']);
                $ops['ad_code_bottom_1'] = $raw_ad_code_bottom;
                $ad_referrers = stripslashes($_POST['ad_referrers']);
                // TODO do i need strip slashes?
                $ops['ad_referrers'] = $ad_referrers;
                $blocked_ips = stripslashes($_POST['blocked_ips']);
                $ops['blocked_ips'] = $blocked_ips;
                adinj_update_options($ops);
                if ($ops['ad_insertion_mode'] == 'mfunc') {
                    write_ad_to_file($raw_ad_code_random, ADINJ_AD_PATH . '/' . ADINJ_AD_RANDOM_FILE);
                    write_ad_to_file($raw_ad_code_top, ADINJ_AD_PATH . '/' . ADINJ_AD_TOP_FILE);
                    write_ad_to_file($raw_ad_code_bottom, ADINJ_AD_PATH . '/' . ADINJ_AD_BOTTOM_FILE);
                    adinj_write_config_file();
                }
                break;
            case 'Reset to Default':
                adinj_checkNonce();
                adinj_update_options(adinj_default_options());
                break;
            case 'Delete settings from DB':
                adinj_checkNonce();
                delete_option('adinj_options');
            case 'Delete widget settings from DB':
                adinj_checkNonce();
                delete_option('widget_adinj');
                // TODO add option to delete ads files as well
                break;
        }
    }
}
function adinj_save_options()
{
    // TODO investigate register_settings for a future release
    switch ($_POST['adinj_action']) {
        case 'Save all settings':
            adinj_checkNonce();
            // Extract all know options
            $default_options = adinj_default_options();
            $ops = adinj_options();
            foreach ($default_options as $key => $value) {
                if (isset($_POST[$key])) {
                    $ops[$key] = $_POST[$key];
                }
            }
            extract_text_args('ad_code_random_', $ops, 1, 10, ADINJ_AD_PATH . '/ad_random_');
            extract_text_args('ad_code_top_', $ops, 1, 10, ADINJ_AD_PATH . '/ad_top_');
            extract_text_args('ad_code_bottom_', $ops, 1, 10, ADINJ_AD_PATH . '/ad_bottom_');
            extract_text_args('ad_code_footer_', $ops, 1, 10, ADINJ_AD_PATH . '/ad_footer_');
            extract_text_args('ad_code_random_alt_', $ops, 1, 2, ADINJ_AD_PATH . '/ad_random_alt_');
            extract_text_args('ad_code_top_alt_', $ops, 1, 2, ADINJ_AD_PATH . '/ad_top_alt_');
            extract_text_args('ad_code_bottom_alt_', $ops, 1, 2, ADINJ_AD_PATH . '/ad_bottom_alt_');
            extract_text_args('ad_code_footer_alt_', $ops, 1, 2, ADINJ_AD_PATH . '/ad_footer_alt_');
            extract_text_args('ad_referrers', $ops);
            extract_text_args('blocked_ips', $ops);
            adinj_update_options($ops);
            if (adinj_mfunc_mode()) {
                adinj_write_config_file();
            }
            break;
        case 'Reset to Default':
            adinj_checkNonce();
            adinj_update_options(adinj_default_options());
            break;
        case 'Delete settings from DB':
            adinj_checkNonce();
            delete_option('adinj_options');
            adinj_install_db();
            adinj_options(1);
            break;
        case 'Delete widget settings from DB':
            adinj_checkNonce();
            delete_option('widget_adinj');
            // TODO add option to delete ads files as well
            break;
    }
}