public IDocumentHandler dispatch(IDocumentHandler previous)
        {
            if (DateTime.Now >= DateTime.Parse("2013-10-15"))
            {
                return(new DummyHandler(previous));
            }

            ConfigResolver resolver = ConfigResolver.GetInstance();
            UrlMatcher     matcher  = new UrlMatcher(this.url);

            if (matcher.matches(resolver.GetPopupPatterns()))
            {
                if (null != previous)
                {
                    previous.destroy();
                }

                if (matcher.matches(resolver.GetTmsPatterns()))
                {
                    LogUtil.log("Match tms patterns");
                    return(new PopupHandler(new TMSFiller(this.document)));
                }
                else if (matcher.matches(resolver.GetPmsPatterns()))
                {
                    LogUtil.log("Match pms patterns");
                    return(new PopupHandler(new PMSFiller(this.document)));
                }
                else if (matcher.matches(resolver.GetDmsPatterns()))
                {
                    LogUtil.log("Match dms patterns");
                    return(new PopupHandler(new DMSFiller(this.document)));
                }
                else
                {
                    return(new PopupHandler(new DummyFiller(this.document)));
                }
            }
            else if (matcher.matches(resolver.GetRewritePatterns()))
            {
                if (null != previous)
                {
                    previous.destroy();
                }

                return(new RewriteHandler(this.document));
            }
            else if (matcher.matches(resolver.GetWrapPatterns()))
            {
                return(new WrapHandler());
            }

            return(new DummyHandler(previous));
        }