<?
ob_start();
ob_implicit_flush(0);
function CheckCanGzip(){
    global $HTTP_ACCEPT_ENCODING;
    if (headers_sent() || connection_aborted()){
        return 0;
    }
    if (strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false) return "x-gzip";
    if (strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false) return "gzip";
    return 0;
}
/* $level = compression level 0-9, 0=none, 9=max */
function GzDocOut($level,$debug){
    $ENCODING = CheckCanGzip();
    if ($ENCODING){
     //   print "\n<!-- Compressed with: $ENCODING -->\n";
        $Contents = ob_get_contents();
        ob_end_clean();

    
        if ($debug){
            $s = "<p>Not compress length: ".strlen($Contents);
            $s .= "<br />Compressed length: ".strlen(gzcompress($Contents,$level));
            $Contents .= $s;
        }
        header("Content-Encoding: $ENCODING");
        print "\x1f\x8b\x08\x00\x00\x00\x00\x00";
        $Size = strlen($Contents);
        $Crc = crc32($Contents);
        $Contents = gzcompress($Contents,$level);
        $Contents = substr($Contents, 0, strlen($Contents) - 4);
        print $Contents;
        print pack('V',$Crc);
        print pack('V',$Size);
        exit;
    }else{
        ob_end_flush();
        exit;
    }
}
?>
