function IsSingleSelection(select) { var selcount = 0; if (select.tagName == "SELECT") { for(var o = 0; o < select.options.length; o++) { var opt = select.options.item(o); if (opt.selected) { selcount++; if (opt.value == -1) return false; } } } return selcount == 1; } function CheckFormValues(form_id) { var node = document.getElementById(form_id); return CheckFormValuesRecurse(node); } function CheckFormValuesRecurse(node) { if (!node) return true; for(var i = 0; i < node.childNodes.length; i++) { var childNode = node.childNodes.item(i); if (childNode.tagName == "INPUT") { var next = childNode.nextSibling; if (next && next.tagName == "INPUT" && next.id === (childNode.name + "_TYPE")) { var value = childNode.value; var type = next.value; var checkErr = CheckValueType(value, type); if (checkErr !== false) { var fieldName = document.getElementById(childNode.name + "_NAME"); if (!fieldName) fieldName = "Any numeric"; else fieldName = "\"" + fieldName.value + "\""; alert(fieldName + " " + checkErr); return false; } } } if (!CheckFormValuesRecurse(childNode)) return false; } return true; } function CheckValueType(value, type) { if (value.length == 0) return false; type = parseInt(type); switch(type) { case -1: return false; case 2: return CheckInt(value); break; case 3: return CheckFloat(value); break; case 4: return CheckDate(value); break; case 1: case 5: return false; break; default: alert("Design error. Unknown field type."); } return false; } function CheckInt(value) { var re = new RegExp(/^([-]?)([\d]*)$/); if (!re.test(value.toString())) { return "field can contain minus and numbers only. For example \"6543\" or \"-523\"."; } return false; } function CheckFloat(value) { var re = new RegExp(/^([-]?)([\d]*)(\.[\d]*)?$/); if (!re.test(value)) return "field can contain minus and number with floating point only. For example \"6543.34\" or \"-523.764\"."; return false; } function CheckDate(value) { var re = new RegExp(/^[\d]{1,2}\/[\d]{1,2}\/[\d]{4}$/); if (!re.test(value)) return "field can contain date in 'mm/dd/yyyy' format. For example \"11/23/2003\"."; return false; } function CheckFormValuesRecurse2(node, register_form_info) { if (!node) return true; for(var i = 0; i < node.childNodes.length; i++) { var childNode = node.childNodes.item(i); if (childNode.tagName == "INPUT") { //alert(childNode.name + " " + childNode.id); var column_info = GetColumnInfoByControlName(childNode.name, register_form_info); if (column_info) { var value = childNode.value; var type = column_info.type; var ctrl_type = column_info.ctrl_type; var flags = column_info.flags; var fieldName = "\"" + column_info.name + "\""; if (ctrl_type && ctrl_type == 15) { var confirmed_id = column_info.ref_id; //alert(value + " " + column_info.control_name + " " + column_info.ref_id); if (confirmed_id && !ConfirmPasswordColumn(value, confirmed_id)) { alert(fieldName + " field has different password."); return false; } } if (flags & 2) { if (value.length == 0) { alert(fieldName + " must be filled."); return false; } } var checkErr = CheckValueType(value, type); //alert(childNode.name + " " + checkErr + " " + value + " " + type) if (checkErr !== false) { alert(fieldName + " " + checkErr); return false; } } } if (!CheckFormValuesRecurse2(childNode, register_form_info)) return false; } return true; } function GetColumnInfoByControlName(control_name, register_form_info) { for(var r = 0; r < register_form_info.length; r++) { var column_info = register_form_info[r]; if (column_info.control_name === control_name) return column_info; } return null; } function ConfirmPasswordColumn(value, confirmed_id) { var passwd = document.getElementById(confirmed_id); if (!passwd) return false; if (value != passwd.value) return false; return true; } function EnableControls(parentId, bEnable) { var node = document.getElementById(parentId); EnaleControlsRecurse(node, bEnable); } function EnaleControlsRecurse(node, bEnable) { if (!node) return; for(var i = 0; i < node.childNodes.length; i++) { var childNode = node.childNodes.item(i); if (childNode.tagName == "INPUT") { childNode.disabled = !bEnable; } CheckFormValuesRecurse(childNode); } return; } function CheckFormValuesRecurse2AddProduct(node, register_form_info, action) { var ok = CheckFormValuesRecurse2(node, register_form_info); if (!ok && action != ""){ eval(action); } return ok; }