var exception = new FormException();
var checkbox = null;
var radio = null;
var password = null;
var prevCheckResult = new Array();
var isSubmitted = false;
function FormCheckPro(obj) {
this.errMsg = new Array();
/***** defaults *****/
var doSubmit = true;
var lang = "ru";
var resultTargetNamePrefix = "null";
var template = "null";
/***** /defaults *****/
var form = null;
var checkObjArr = new Array();
/***** set form object *****/
try {
if(obj) {
if(obj.nodeName == "FORM") {
form = obj;
} else if(obj.form == "FORM") {
form = obj.form;
} else if(typeof(obj) == "string" || typeof(obj) == "number") {
form = document.forms[obj];
} else {
form = findForm(obj);
}
if(!form) throw exception.setMessage("Имя формы или ссылка на ее объект заданы неверно!");
}
else throw exception.setMessage("Конструктру объекта не передана ссылка на форму!");
} catch(e) {exception.getMessage();}
/***** /set form object *****/
/***** set class parameters *****/
if(form) {
lang = form.getAttribute("LANG").substring(0,2) || lang;
doSubmit = form.getAttribute("AUTOSUBMIT") || doSubmit;
resultTargetNamePrefix = form.getAttribute("RESULT") || resultTargetNamePrefix;
template = form.getAttribute("TEMPLATE") || template;
}
/***** set class parameters *****/
/***** set checkObjArr *****/
if(form) {
for(var i=0; i
0) {
for(var i=0; i 0) {
if(resultTargetNamePrefix != "null") {
if(prevCheckResult.length > 0) {
for(var i=0; i' + name + '').replace('--fieldLen--', size);
prevCheckResult[prevCheckResult.length] = target;
} catch(e) {continue;}
}
} else {
var alertStr = new String();
for(var i=0; i 1) {
setErr(INSET);
} else {
setErr(ATLEAST);
}
} else {this.bad = false;}
}
else if(formItem.type.toLowerCase() == "radio" && radio != formItem.name) {
radio = formItem.name;
if(!isValidRadio(formItem)) {
setErr(ATLEAST);
} else {this.bad = false;}
}
else if(formItem.nodeName.toUpperCase() == "SELECT") {
if(formItem.selectedIndex == 0) {
setErr(ATLEAST);
} else {this.bad = false;}
}
else if(formItem.type.toLowerCase() == "file") {
var str = formItem.value;
var re = /.+/;
if(!str.match(re)) {
setErr(EMPTY);
} else {this.bad = false;}
}
else if(formItem.nodeName.toUpperCase() == "TEXTAREA") {
if(formItem.value == '') {
setErr(EMPTY);
} else {this.bad = false;}
}
else if(formItem.type.toLowerCase() == "password") {
if(formItem.value.toString().length == 0) {
setErr(EMPTY);
}
else if(password != null && password != formItem.value) {
setErr(PWD);
}
else {
if(password == null) {
password = formItem.value;
}
this.bad = false;
}
}
else this.bad = false;
this.getErrorMsg = function() {
return errorMsg;
}
}
/***** check functions *****/
function isValid(elem, type) {
if(elem.type == 'text') {
var result = true;
var str = elem.value.toString();
switch(type) {
case 'email':
var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
if(!str.match(re)) result = false;
break;
case 'phone':
var re = /^((\+)?[0-9]{1,3}|)(\s)?[(]?[0-9 )-]{3,}$/;
if(!str.match(re) && str!="") result = false;
break;
case 'number':
var re = /^[-]?\d*\.?\d*$/;
if(!str.match(re)) result = false;
break;
case 'date':
var re = /^[^\/][0-9 .:\/]+[^\/]$/; // syntax: [mm/dd/yy hh:mm] or [dd.mm.yy hh:mm]
if(!str.match(re)) result = false;
break;
}
return result;
} else return true;
}
function isEmpty(elem) {
if(elem.type == 'text') {
var str = elem.value;
var re = /.+/;
if(!str.match(re)) return true;
}
else return false;
}
function isMoreThanMaxlen(elem, size) {
if(elem.type == 'text') {
if(elem.value.toString().length > size) return true;
}
else return false;
}
function isValidCheckbox(elem, size) {
var form = elem.form;
var count = 0;
for(var i=0; i 1 && form.elements[i].checked) {
count++;
} else if(form.elements[i].checked) {
return true;
}
}
}
if(count >= 1 && count <= size) {
return true;
}
return false;
}
function isValidRadio(elem) {
var form = elem.form;
for(var i=0; i