function booster_wp()
{
    // Dump output buffer
    if ($out = ob_get_contents()) {
        // Check for right PHP version
        if (strnatcmp(phpversion(), '5.0.0') >= 0) {
            $booster_cache_dir = BOOSTER_CACHE_DIR;
            $js_plain = '';
            $booster_out = '';
            $booster_folder = explode('/', rtrim(str_replace('\\', '/', realpath(dirname(__FILE__))), '/'));
            $booster_folder = $booster_folder[count($booster_folder) - 1];
            $booster = new Booster();
            if (!is_dir($booster_cache_dir)) {
                @mkdir($booster_cache_dir, 0777);
                @chmod($booster_cache_dir, 0777);
            }
            if (is_dir($booster_cache_dir) && is_writable($booster_cache_dir) && substr(decoct(fileperms($booster_cache_dir)), 1) == "0777") {
                $booster_cache_reldir = $booster->getpath(str_replace('\\', '/', realpath($booster_cache_dir)), str_replace('\\', '/', dirname(__FILE__)));
            } else {
                $booster_cache_dir = rtrim(str_replace('\\', '/', dirname(__FILE__)), '/') . '/../../booster_cache';
                $booster_cache_reldir = '../../booster_cache';
            }
            $booster->booster_cachedir = $booster_cache_reldir;
            $booster->js_minify = FALSE;
            // Calculate relative path from root to Booster directory
            $root_to_booster_path = $booster->getpath(str_replace('\\', '/', dirname(__FILE__)), str_replace('\\', '/', dirname(realpath(ABSPATH))));
            if (preg_match_all('/<head.*<\\/head>/ims', $out, $headtreffer, PREG_PATTERN_ORDER) > 0) {
                // Prevent processing of conditional comments
                $headtreffer[0][0] = preg_replace('/<!--\\[if.+?endif\\]-->/ims', '', $headtreffer[0][0]);
                // CSS part
                $css_rel_files = array();
                // Start width inline-files
                preg_match_all('/<style[^>]*>(.*?)<\\/style>/ims', $headtreffer[0][0], $treffer, PREG_PATTERN_ORDER);
                for ($i = 0; $i < count($treffer[0]); $i++) {
                    // Get media-type
                    if (preg_match('/media=[\'"]*([^\'"]+)[\'"]*/ims', $treffer[0][$i], $mediatreffer)) {
                        $media = preg_replace('/[^a-z]+/i', '', $mediatreffer[1]);
                        if (trim($media) == '') {
                            $media = 'all';
                        }
                    } else {
                        $media = 'all';
                    }
                    // Save plain CSS to file to keep everything in line
                    $filename = $booster_cache_dir . '/' . md5($treffer[1][$i]) . '_plain.css';
                    if (!file_exists($filename)) {
                        file_put_contents($filename, $treffer[1][$i]);
                    }
                    if (file_exists($filename)) {
                        @chmod($filename, 0777);
                        // Calculate relative path from Booster to file
                        $booster_to_file_path = $booster->getpath($booster_cache_dir . '/', str_replace('\\', '/', dirname(realpath(__FILE__))) . '/');
                        $linkhref = get_option('siteurl') . '/wp-content/plugins/' . $booster_folder . '/' . $booster_to_file_path . '/' . basename($filename);
                        $booster_cache_dir = $booster_cache_dir;
                        $linkcode = '<!-- Moved to file by Booster ' . $treffer[0][$i] . ' --><link rel="stylesheet" media="' . $media . '" href="' . $linkhref . '" />';
                        $headtreffer[0][0] = str_replace($treffer[0][$i], $linkcode, $headtreffer[0][0]);
                        $out = str_replace($treffer[0][$i], $linkcode, $out);
                    } else {
                        $linkcode = '<!-- Failed to move inline-style to file ' . $filename . ' by Booster -->' . $treffer[0][$i];
                        $headtreffer[0][0] = str_replace($treffer[0][$i], $linkcode, $headtreffer[0][0]);
                        $out = str_replace($treffer[0][$i], $linkcode, $out);
                    }
                }
                // Continue with external files
                preg_match_all('/<link[^>]*?href=[\'"]*?([^\'"]+?\\.css)[\'"]*?[^>]*?>/ims', $headtreffer[0][0], $treffer, PREG_PATTERN_ORDER);
                for ($i = 0; $i < count($treffer[0]); $i++) {
                    // Get media-type
                    if (preg_match('/media=[\'"]*([^\'"]+)[\'"]*/ims', $treffer[0][$i], $mediatreffer)) {
                        $media = preg_replace('/[^a-z]+/i', '', $mediatreffer[1]);
                        if (trim($media) == '') {
                            $media = 'all';
                        }
                    } else {
                        $media = 'all';
                    }
                    // Get relation
                    if (preg_match('/rel=[\'"]*([^\'"]+)[\'"]*/ims', $treffer[0][$i], $reltreffer)) {
                        $rel = $reltreffer[1];
                    } else {
                        $rel = 'stylesheet';
                    }
                    // Convert file's URI into an absolute local path
                    $filename = preg_replace('/^http:\\/\\/[^\\/]+/', rtrim($_SERVER['DOCUMENT_ROOT'], '/'), $treffer[1][$i]);
                    // Remove any parameters from file's URI
                    $filename = preg_replace('/\\?.*$/', '', $filename);
                    // If file exists
                    if (file_exists($filename)) {
                        // If its a normal CSS-file
                        if (substr($filename, strlen($filename) - 4, 4) == '.css' && file_exists($filename)) {
                            // Put file-reference inside a comment
                            $out = str_replace($treffer[0][$i], '<!-- Processed by Booster ' . $treffer[0][$i] . ' -->', $out);
                            // Calculate relative path from Booster to file
                            $booster_to_file_path = $booster->getpath(str_replace('\\', '/', dirname($filename)), str_replace('\\', '/', dirname(__FILE__)));
                            $filename = $booster_to_file_path . '/' . basename($filename);
                            // Create sub-arrays if not yet there
                            if (!isset($css_rel_files[$media])) {
                                $css_rel_files[$media] = array();
                            }
                            if (!isset($css_abs_files[$media])) {
                                $css_abs_files[$media] = array();
                            }
                            if (!isset($css_rel_files[$media][$rel])) {
                                $css_rel_files[$media][$rel] = array();
                            }
                            if (!isset($css_abs_files[$media][$rel])) {
                                $css_abs_files[$media][$rel] = array();
                            }
                            // Enqueue file to respective array
                            array_push($css_rel_files[$media][$rel], $filename);
                            array_push($css_abs_files[$media][$rel], rtrim(str_replace('\\', '/', dirname(realpath(ABSPATH))), '/') . '/' . $root_to_booster_path . '/' . $filename);
                        } else {
                            $out = str_replace($treffer[0][$i], $treffer[0][$i] . '<!-- Booster skipped ' . $filename . ' -->', $out);
                        }
                    } else {
                        $out = str_replace($treffer[0][$i], $treffer[0][$i] . '<!-- Booster had a problems finding ' . $filename . ' -->', $out);
                    }
                }
                // Creating Booster markup for each media and relation seperately
                reset($css_rel_files);
                for ($i = 0; $i < count($css_rel_files); $i++) {
                    $media_rel = $css_rel_files[key($css_rel_files)];
                    $media_abs = $css_abs_files[key($css_rel_files)];
                    reset($media_rel);
                    for ($j = 0; $j < count($media_rel); $j++) {
                        $booster->getfilestime($media_rel[key($media_rel)], 'css');
                        $media_rel[key($media_rel)] = implode(',', $media_rel[key($media_rel)]);
                        $media_abs[key($media_rel)] = implode(',', $media_abs[key($media_rel)]);
                        $link = '<link type="text/css" rel="' . key($media_rel) . '" media="' . key($css_rel_files) . '" href="' . get_option('siteurl') . '/wp-content/plugins/' . $booster_folder . '/booster_css.php/dir=' . htmlentities(str_replace('..', '%3E', $media_rel[key($media_rel)])) . '&amp;cachedir=' . htmlentities(str_replace('..', '%3E', $booster_cache_reldir), ENT_QUOTES) . ($booster->debug ? '&amp;debug=1' : '') . ($booster->librarydebug ? '&amp;librarydebug=1' : '') . '&amp;nocache=' . $booster->filestime . '" />';
                        if (key($css_rel_files) != 'print') {
                            $booster_out .= $link . "\r\n";
                        } else {
                            $booster_out .= '<noscript>' . $link . '</noscript>' . "\r\n";
                            $js_plain .= 'jQuery(document).ready(function () {
								jQuery("head").append("' . addslashes($link) . '");
							});
							';
                        }
                        $booster_out .= "\r\n";
                        #$booster_out .= "\r\n<!-- ".$media_abs[key($media_rel)]." -->\r\n";
                        next($media_rel);
                    }
                    next($css_rel_files);
                }
                // Injecting the result
                $out = str_replace('</title>', "</title>\r\n<meta name=\"booster_cache_dir\" content=\"" . BOOSTER_CACHE_DIR . "\" />\r\n" . $booster_out, $out);
                $booster_out = '';
                // JS-part
                $js_rel_files = array();
                $js_abs_files = array();
                preg_match_all('/<script[^>]*>(.*?)<\\/script>/ims', $headtreffer[0][0], $treffer, PREG_PATTERN_ORDER);
                for ($i = 0; $i < count($treffer[0]); $i++) {
                    if (preg_match('/<script.*?src=[\'"]*([^\'"]+\\.js)[\'"]*.*?<\\/script>/ims', $treffer[0][$i], $srctreffer)) {
                        // Get Domainname
                        if (isset($_SERVER['SCRIPT_URI'])) {
                            $host = parse_url($_SERVER['SCRIPT_URI'], PHP_URL_HOST);
                        } else {
                            $host = $_SERVER['HTTP_HOST'];
                        }
                        // Convert siteurl into a regex-safe expression
                        $host = str_replace(array('/', '.'), array('\\/', '\\.'), $host);
                        // Convert file's URI into an absolute local path
                        $filename = preg_replace('/^http:\\/\\/' . $host . '[^\\/]*/', rtrim($_SERVER['DOCUMENT_ROOT'], '/'), $srctreffer[1]);
                        // If file is external
                        if (substr($filename, 0, 7) == 'http://') {
                            $buffered_filename = $booster_cache_dir . '/' . md5($filename) . '_buffered.js';
                            $parsed_url = parse_url($filename);
                            if (!file_exists($buffered_filename) || filemtime($buffered_filename) < time() - 1 * 24 * 60 * 60) {
                                $host = $parsed_url['host'];
                                $service_uri = $parsed_url['path'];
                                $vars = $parsed_url['query'];
                                // Compose HTTP request header
                                $header = "Host: {$host}\r\n";
                                $header .= "User-Agent: CSS-JS-Booster\r\n";
                                $header .= "Connection: close\r\n\r\n";
                                $fp = fsockopen($host, 80, $errno, $errstr);
                                if ($fp) {
                                    $body = '';
                                    fputs($fp, "GET {$service_uri}?{$vars}  HTTP/1.0\r\n");
                                    fputs($fp, $header . $vars);
                                    while (!feof($fp)) {
                                        $body .= fgets($fp, 65000);
                                    }
                                    fclose($fp);
                                    $body = preg_replace('/HTTP.+[\\r\\n]{1}[\\r\\n]{1}/ims', '', $body);
                                    @file_put_contents($buffered_filename, $body);
                                    @chmod($filename, 0777);
                                    // Put file-reference inside a comment
                                    $out = str_replace($srctreffer[0], '<!-- Processed by Booster ' . $srctreffer[0] . ' -->', $out);
                                    // Enqueue file to array
                                    $booster_to_file_path = $booster->getpath(str_replace('\\', '/', dirname($buffered_filename)), str_replace('\\', '/', dirname(__FILE__)));
                                    array_push($js_rel_files, $booster_cache_reldir . '/' . md5($filename) . '_buffered.js');
                                    array_push($js_abs_files, rtrim(str_replace('\\', '/', dirname(realpath(ABSPATH))), '/') . '/' . $buffered_filename);
                                } else {
                                    $out = str_replace($srctreffer[0], $srctreffer[0] . '<!-- Booster had a problems retrieving ' . $filename . ' -->', $out);
                                }
                            } else {
                                // Put file-reference inside a comment
                                $out = str_replace($srctreffer[0], '<!-- Processed by Booster ' . $srctreffer[0] . ' -->', $out);
                                // Enqueue file to array
                                $booster_to_file_path = $booster->getpath(str_replace('\\', '/', dirname($buffered_filename)), str_replace('\\', '/', dirname(__FILE__)));
                                array_push($js_rel_files, $booster_cache_reldir . '/' . md5($filename) . '_buffered.js');
                                array_push($js_abs_files, rtrim(str_replace('\\', '/', dirname(realpath(ABSPATH))), '/') . '/' . $buffered_filename);
                            }
                        } elseif (file_exists($filename)) {
                            // If its a normal JavaScript-file
                            if (substr($filename, strlen($filename) - 3, 3) == '.js') {
                                // Remove any parameters from file's URI
                                $filename = preg_replace('/\\?.*$/', '', $filename);
                                // Put file-reference inside a comment
                                $out = str_replace($srctreffer[0], '<!-- Processed by Booster ' . $srctreffer[0] . ' -->', $out);
                                // Calculate relative path from Booster to file
                                $booster_to_file_path = $booster->getpath(str_replace('\\', '/', dirname($filename)), str_replace('\\', '/', dirname(__FILE__)));
                                $filename = $booster_to_file_path . '/' . basename($filename);
                                // Enqueue file to array
                                array_push($js_rel_files, $filename);
                                array_push($js_abs_files, rtrim(str_replace('\\', '/', dirname(realpath(ABSPATH))), '/') . '/' . $root_to_booster_path . '/' . $filename);
                            } else {
                                $out = str_replace($srctreffer[0], $srctreffer[0] . '<!-- Booster skipped ' . $filename . ' -->', $out);
                            }
                        } else {
                            $out = str_replace($srctreffer[0], $srctreffer[0] . '<!-- Booster had a problems finding ' . $filename . ' -->', $out);
                        }
                    } else {
                        // Save plain JS to file to keep everything in line
                        $filename = $booster_cache_dir . '/' . md5($treffer[1][$i]) . '_plain.js';
                        if (!file_exists($filename)) {
                            @file_put_contents($filename, $treffer[1][$i]);
                        }
                        @chmod($filename, 0777);
                        // Enqueue file to array
                        $booster_to_file_path = $booster->getpath(str_replace('\\', '/', dirname($filename)), str_replace('\\', '/', dirname(__FILE__)));
                        array_push($js_rel_files, $booster_cache_reldir . '/' . md5($treffer[1][$i]) . '_plain.js');
                        #array_push($js_rel_files,$booster_cache_reldir.'/'.md5($treffer[1][$i]).'_plain.js');
                        array_push($js_abs_files, rtrim(str_replace('\\', '/', dirname(realpath(ABSPATH))), '/') . '/' . $filename);
                        //$js_plain .= "try{".$treffer[1][$i];
                        $out = str_replace($treffer[0][$i], '<!-- ' . $treffer[0][$i] . ' -->', $out);
                    }
                }
                // Creating Booster markup
                $js_rel_files = implode(',', $js_rel_files);
                $js_abs_files = implode(',', $js_abs_files);
                $js_plain = preg_replace('/\\/\\*.*?\\*\\//ims', '', $js_plain);
                $js_plain .= 'try {document.execCommand("BackgroundImageCache", false, true);} catch(err) {}
				';
                $booster_out .= '<script type="text/javascript" src="' . get_option('siteurl') . '/wp-content/plugins/' . $booster_folder . '/booster_js.php/dir=' . htmlentities(str_replace('..', '%3E', $js_rel_files)) . '&amp;cachedir=' . htmlentities(str_replace('..', '%3E', $booster_cache_reldir), ENT_QUOTES) . ($booster->debug ? '&amp;debug=1' : '') . (!$booster->js_minify ? '&amp;js_minify=0' : '') . '&amp;nocache=' . $booster->getfilestime($js_abs_files, 'js') . '"></script>
				<script type="text/javascript">' . $js_plain . '</script>';
                $booster_out .= "\r\n";
                #$booster_out .= "\r\n<!-- ".$js_abs_files." -->\r\n";
                // Injecting the result
                $out = str_replace('</head>', $booster_out . '</head>', $out);
            }
        } else {
            $out = str_replace('<body', '<div style="display: block; padding: 1em; background-color: #FFF9D0; color: #912C2C; border: 1px solid #912C2C; font-family: Calibri, \'Lucida Grande\', Arial, Verdana, sans-serif; white-space: pre;">You need to upgrade to PHP 5 or higher to have CSS-JS-Booster work. You currently are running on PHP ' . phpversion() . '</div><body', $out);
        }
        // Recreate output buffer
        ob_end_clean();
        if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') && function_exists('ob_gzhandler') && (!ini_get('zlib.output_compression') || intval(ini_get('zlib.output_compression')) <= 0) && !function_exists('wp_cache_ob_callback')) {
            @ob_start('ob_gzhandler');
        } elseif (function_exists('wp_cache_ob_callback')) {
            @ob_start('wp_cache_ob_callback');
        } else {
            @ob_start();
        }
        // Output page
        echo $out;
    }
}