package org.apache.taglibs.response;

import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.*;

import javax.servlet.http.HttpServletResponse;

import org.apache.regexp.*;

public class EncodeURLsTag extends BodyTagSupport {
    PageContext pageContext;

    public int doAfterBody() {
        BodyContent bodycontent  = getBodyContent();
        String      sBodyContent = bodycontent.getString();


        try {
			RE regex = new RE("\"(http://.+?)\"");

			if (regex.match(sBodyContent)) {
				String match   = regex.getParen(1);
				String encUrl  = ((HttpServletResponse)pageContext.getResponse()).encodeURL(match);
				String out     = regex.subst(sBodyContent, "\"" + encUrl + "\"");
            	bodycontent.getEnclosingWriter().print( out );
			} else {
				bodycontent.getEnclosingWriter().print( sBodyContent );
			}

		} catch (Exception e) {}

        return BodyTag.SKIP_BODY;
    }

    public void setPageContext(PageContext pc) {
        pageContext = pc;
    }
}