function clearErrorMessages(form) { var table = form.childNodes[1]; if( typeof table == "undefined" ) { table = form.childNodes[0]; } // clear out any rows with an "errorFor" attribute var rows = table.rows; var rowsToDelete = new Array(); if (rows == null){ return; } for(var i = 0; i < rows.length; i++) { var r = rows[i]; if (r.getAttribute("errorFor")) { rowsToDelete.push(r); } } // now delete the rows for (var i = 0; i < rowsToDelete.length; i++) { var r = rowsToDelete[i]; table.deleteRow(r.rowIndex); //table.removeChild(rowsToDelete[i]); } } function clearErrorLabels(form) { // set all labels back to the normal class var elements = form.elements; for (var i = 0; i < elements.length; i++) { var e = elements[i]; var cells = e.parentNode.parentNode.cells; if (cells && cells.length >= 2) { var label = cells[0].getElementsByTagName("label")[0]; if (label) { label.setAttribute("class", "label"); label.setAttribute("className", "label"); //ie hack cause ie does not support setAttribute } } } } function addError(e, errorText) { try { // clear out any rows with an "errorFor" of e.id var row = e.parentNode.parentNode; var table = row.parentNode; var error = document.createTextNode(errorText); var tr = document.createElement("tr"); var td = document.createElement("td"); var span = document.createElement("span"); td.align = "center"; td.valign = "top"; td.colSpan = 2; span.setAttribute("class", "errorMessage"); span.setAttribute("className", "errorMessage"); //ie hack cause ie does not support setAttribute span.appendChild(error); td.appendChild(span); tr.appendChild(td); tr.setAttribute("errorFor", e.id);; table.insertBefore(tr, row); // updat the label too var label = row.cells[0].getElementsByTagName("label")[0]; label.setAttribute("class", "errorLabel"); label.setAttribute("className", "errorLabel"); //ie hack cause ie does not support setAttribute } catch (e) { alert(e); } }