public string _OutputForPageFilter_Old()
        {
            string cacheTimestamp = getOutputCacheTimestamp();

            StringBuilder html = new StringBuilder();
            string        EOL  = Environment.NewLine;

            // A: put CSS files and style statements first so that scripts can reference them: http://code.google.com/speed/page-speed/docs/rendering.html#PutCSSInHead
            // -- 1: CSS Files
            //       note: do NOT use @import rule
            foreach (CSSGroup cssGroup in Enum.GetValues(typeof(CSSGroup)))
            {
                foreach (string css in cssFilePaths_Aggregate[cssGroup])
                {
                    html.Append("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + getOutputUrl(css, cacheTimestamp) + "\" />" + EOL);
                }
            }

            // -- 2: Style statements
            if (styleStatements.Count > 0)
            {
                html.Append("<style type=\"text/css\">" + EOL);
                foreach (string s in styleStatements)
                {
                    html.Append(s + EOL);
                }
                html.Append(EOL + "</style>" + EOL);
            }

            // B: Javascript files should be placed before javascript statements (http://code.google.com/speed/page-speed/docs/rtt.html#PutStylesBeforeScripts)
            // -- 3: Javascript files
            foreach (JavascriptGroup jsGroup in Enum.GetValues(typeof(JavascriptGroup)))
            {
                foreach (string js in jsFilePaths_Aggregate[jsGroup])
                {
                    html.Append("<script src=\"" + getOutputUrl(js, cacheTimestamp) + "\" type=\"text/javascript\"></script>" + EOL);
                }
            }

            bool scriptTagStarted = false;

            // -- 4: Javascript Statements
            if (jsStatements.Count > 0)
            {
                html.Append("<script type=\"text/javascript\">" + EOL);
                scriptTagStarted = true;
                foreach (string js in jsStatements)
                {
                    html.Append(js + EOL + EOL);
                } // foreach
            }

            // -- 5: Javascript On Ready
            if (jqueryIsIncluded() && jsOnReadyStatements.Count > 0)
            {
                if (!scriptTagStarted)
                {
                    html.Append("<script type=\"text/javascript\">" + EOL);
                    scriptTagStarted = true;
                }
                html.Append("$(document).ready(function() {" + EOL);
                foreach (string js in jsOnReadyStatements)
                {
                    html.Append(js + EOL + EOL);
                } // foreach
                html.Append("});" + EOL);
            }
            else if (mooToolsIsIncluded() && jsOnReadyStatements.Count > 0)
            {
                //  window.addEvent('domready', function(){
                if (!scriptTagStarted)
                {
                    html.Append("<script type=\"text/javascript\">" + EOL);
                    scriptTagStarted = true;
                }
                html.Append("window.addEvent('domready', function(){" + EOL);
                foreach (string js in jsOnReadyStatements)
                {
                    html.Append(js + EOL + EOL);
                } // foreach
                html.Append("});" + EOL);
            }
            else if (jsOnReadyStatements.Count > 0)
            {
                string onLoadFunctionName = "hatCms_pageLoad";
                if (!scriptTagStarted)
                {
                    html.Append("<script type=\"text/javascript\">" + EOL);
                    scriptTagStarted = true;
                }
                html.Append("function " + onLoadFunctionName + "() {" + EOL);
                foreach (string js in jsOnReadyStatements)
                {
                    html.Append(js + EOL + EOL);
                } // foreach
                html.Append("} // " + onLoadFunctionName + "()" + EOL);
                html.Append(CmsPageHeadSection.getOnloadJavascript(onLoadFunctionName));
                html.Append(EOL);
            }
            if (scriptTagStarted)
            {
                html.Append("</script>" + EOL);
            }

            html.Append("</head>" + EOL);
            return(html.ToString());
        } // ToHtml
        private string _OutputForPageFilter()
        {
            StringBuilder html          = new StringBuilder();
            string        EOL           = Environment.NewLine;
            string        fileTimestamp = getOutputCacheTimestamp();

            // -- 1: output CSS files
            Array enumVals = Enum.GetValues(typeof(CSSGroup)); // this returns an unsorted list.

            Array.Sort(enumVals);
            foreach (CSSGroup cssGroup in enumVals)
            {
                // - first: external CSS files
                string[] externalCssUrls = getExternalUrls(cssFilePaths_Aggregate[cssGroup]);
                foreach (string externalCssUrl in externalCssUrls)
                {
                    html.Append("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + externalCssUrl + "\" />" + EOL);
                }

                // - second: internal (combined) CSS files
                string localCssUrl = combineInternalCssFiles(cssGroup, cssFilePaths_Aggregate[cssGroup], this.cssEmbeddedResources[cssGroup]);
                if (localCssUrl != "")
                {
                    html.Append("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + localCssUrl + "\" />" + EOL);
                }

                // - third: non-combined CSS files
                foreach (string rawCssUrl in cssFilePaths_DoNotAggregate[cssGroup])
                {
                    html.Append("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + getOutputUrl(rawCssUrl, fileTimestamp) + "\" />" + EOL);
                }
            }

            // -- Style statements
            // Q: should style statements be combined into the CSSGroup.FrontEnd file?
            if (styleStatements.Count > 0)
            {
                html.Append("<style type=\"text/css\">" + EOL);
                foreach (string s in styleStatements)
                {
                    html.Append(s + EOL);
                }
                html.Append(EOL + "</style>" + EOL);
            }

            // -- output Javascript files
            Array jsEnumVals = Enum.GetValues(typeof(JavascriptGroup)); // this returns an unsorted list.

            Array.Sort(jsEnumVals);

            foreach (JavascriptGroup jsGroup in jsEnumVals)
            {
                // - first: external JS files
                string[] externalJsUrls = getExternalUrls(jsFilePaths_Aggregate[jsGroup]);
                foreach (string externalJsUrl in externalJsUrls)
                {
                    html.Append("<script src=\"" + externalJsUrl + "\" type=\"text/javascript\"></script>" + EOL);
                }

                // - second: internal (combined) JS files
                string localJsUrl = combineInternalJsFiles(jsGroup, jsFilePaths_Aggregate[jsGroup], this.jsEmbeddedResources[jsGroup]);
                if (localJsUrl != "")
                {
                    html.Append("<script src=\"" + localJsUrl + "\" type=\"text/javascript\"></script>" + EOL);
                }

                // - third: non-combined JS files
                foreach (string rawJsUrl in jsFilePaths_DoNotAggregate[jsGroup])
                {
                    html.Append("<script src=\"" + getOutputUrl(rawJsUrl, fileTimestamp) + "\" type=\"text/javascript\"></script>" + EOL);
                }
            }

            bool scriptTagStarted = false;

            // -- 4: Javascript Statements
            if (jsStatements.Count > 0)
            {
                html.Append("<script type=\"text/javascript\">" + EOL);
                scriptTagStarted = true;
                foreach (string js in jsStatements)
                {
                    html.Append(js + EOL + EOL);
                } // foreach
            }

            // -- 5: Javascript On Ready
            if (jqueryIsIncluded() && jsOnReadyStatements.Count > 0)
            {
                if (!scriptTagStarted)
                {
                    html.Append("<script type=\"text/javascript\">" + EOL);
                    scriptTagStarted = true;
                }
                html.Append("$(document).ready(function() {" + EOL);
                foreach (string js in jsOnReadyStatements)
                {
                    html.Append(js + EOL + EOL);
                } // foreach
                html.Append("});" + EOL);
            }
            else if (mooToolsIsIncluded() && jsOnReadyStatements.Count > 0)
            {
                //  window.addEvent('domready', function(){
                if (!scriptTagStarted)
                {
                    html.Append("<script type=\"text/javascript\">" + EOL);
                    scriptTagStarted = true;
                }
                html.Append("window.addEvent('domready', function(){" + EOL);
                foreach (string js in jsOnReadyStatements)
                {
                    html.Append(js + EOL + EOL);
                } // foreach
                html.Append("});" + EOL);
            }
            else if (jsOnReadyStatements.Count > 0)
            {
                string onLoadFunctionName = "hatCms_pageLoad";
                if (!scriptTagStarted)
                {
                    html.Append("<script type=\"text/javascript\">" + EOL);
                    scriptTagStarted = true;
                }
                html.Append("function " + onLoadFunctionName + "() {" + EOL);
                foreach (string js in jsOnReadyStatements)
                {
                    html.Append(js + EOL + EOL);
                } // foreach
                html.Append("} // " + onLoadFunctionName + "()" + EOL);
                html.Append(CmsPageHeadSection.getOnloadJavascript(onLoadFunctionName));
                html.Append(EOL);
            }
            if (scriptTagStarted)
            {
                html.Append("</script>" + EOL);
            }

            html.Append("</head>" + EOL);

            return(html.ToString());
        }