public Html form_start(Attr at) { return vfmt("<form{0}>", at); }
public Html form(Attr at, params Html[] ha) { return v(form_start(at), ha, form_end()); }
public Html th(Attr at, string s) { return vfmt("<th{0}>{1}</th>", at, text(s)); }
public Html th(Attr at, params Html[] ha) { return v(vfmt("<th{0}>", at), ha, v("</th>")); }
public Html span(Attr at, params Html[] ha) { return v(vfmt("<span{0}>", at), ha, v("</span>")); }
public Html div_start(Attr at) { return vfmt("<div{0}>", at); }
public Html tr_start(Attr at) { return new Html(Context.Body, vfmt("<tr{0}>", at)); }
public Html a(Attr at, params Html[] ha) { return v(vfmt("<a{0}>", at), ha, v("</a>")); }
public Html table_start(Attr at) { return vfmt("<table{0}>", at); }
public Html tr(Attr at, params Html[] ha) { return new Html(Context.Body, tr_start(at), ha, tr_end()); }
public Html ul(Attr at, params Html[] ha) { return v(ul_start(at), ha, ul_end()); }
public Html ul_start(Attr at) { return vfmt("<ul{0}>", at); }
public Html div(Attr at, params Html[] ha) { return v(div_start(at), ha, div_end()); }
public Html input(Attr at, string id, params Html[] ha) { return vfmt("<input{0}></input>", new Attr(at, "name", id)); }
public Html td(Attr at, string s) { return td(at, text(s)); }
public Html editinplace(string id, string type, Attr at, params Html[] ha) { if (type == "textarea") { return v(vfmt("<textarea{0}{1}>", new Attr("name", id, "editinplace", "textarea"), at), ha, v("</textarea>")); } else { return v(vfmt("<span{0}{1}>", new Attr("id", id, "editinplace", type), at), ha, v("</span>")); } }
public Html td(Attr at, params Html[] ha) { return v(td_start(at), ha, td_end()); }
public Html ahref(Attr at, string url, params Html[] ha) { return v(vfmt("<a{0}{1}>", new Attr("href", url), at), ha, v("</a>")); }
public Html td_start(Attr at) { return vfmt("<td{0}>", at); }
public Html p(Attr at, params Html[] ha) { return v(vfmt("<p{0}>", at), ha, v("</p>\n")); }
public Attr(Attr parent, params object[] sa) { wv.assert((sa.Length % 2) == 0); if (parent != null) s = parent.ToString(); for (int i = 0; i < sa.Length; i += 2) s += String.Format(" {0}=\"{1}\"", HttpUtility.HtmlAttributeEncode(sa[i].ToString()), HttpUtility.HtmlAttributeEncode(sa[i+1].ToString())); }