/* js functions for forms */ /* display a simple form from a ejs Form object caller should fill in f.name = form name f.action = action to be taken on submit (optional, defaults to current page) f.class = css class (optional, defaults to 'form') f.submit = an array of submit labels f.add(name, label, [type], [value]) = Add another element f.element[i].label = element label f.element[i].name = element name (defaults to label) f.element[i].type = element type (defaults to text) f.element[i].value = current value (optional, defaults to "") */ function form_display() { var f = this; var i, size = 20; write('<form name="' + f.name + '" method="post" action="' + f.action + '" class="' + f.class + '">\n'); if (f.element.length > 0) { write("<table>\n"); } for (i in f.element) { var e = f.element[i]; if (e.name == undefined) { e.name = e.label; } if (e.value == undefined) { e.value = ""; } if (strlen(e.value) > size) { size = strlen(e.value) + 4; } } for (i in f.element) { var e = f.element[i]; write("<tr>"); write("<td>" + e.label + "</td>"); if (e.type == "select") { write('<td><select name="' + e.name + '">\n'); for (s in e.list) { if (e.value == e.list[s]) { write('<option selected=selected>' + e.list[s] + '</option>\n'); } else { write('<option>' + e.list[s] + '</option>\n'); } } write('</select></td>\n'); } else { var sizestr = ""; if (e.type == "text" || e.type == "password") { sizestr = sprintf('size="%d"', size); } writef('<td><input name="%s" type="%s" value="%s" %s /></td>\n', e.name, e.type, e.value, sizestr); } write("</tr>"); } if (f.element.length > 0) { write("</table>\n"); } for (i in f.submit) { write('<input name="submit" type="submit" value="' + f.submit[i] + '" />\n'); } write("</form>\n"); } function __addMethod(name, label) { var f = this; var i = f.element.length; f.element[i] = new Object(); f.element[i].name = name; f.element[i].label = label; f.element[i].type = "text"; f.element[i].value = ""; if (arguments.length > 2) { f.element[i].type = arguments[2]; } if (arguments.length > 3) { f.element[i].value = arguments[3]; } } /* create a Form object with the defaults filled in, ready for display() */ function FormObj(name, num_elements, num_submits) { var f = new Object(); f.name = name; f.element = new Array(num_elements); f.submit = new Array(num_submits); f.action = session_uri(request.REQUEST_URI); f.class = "defaultform"; f.add = __addMethod; for (i in f.element) { f.element[i] = new Object(); f.element[i].type = "text"; f.element[i].value = ""; } f.display = form_display; return f; }