function checkForm(obj, elems) { 
var element, pattern;

var reg =  new RegExp('[0-9a-z_-]+@[0-9a-z-_.]+\.[a-z]{2,3}', 'i');
		for (var i = 0; i < obj.elements.length; i++) {
				element = obj.elements[i];      
				if (elems != undefined) 
				if (elems.join().indexOf(element.type) < 0) continue;       
				if (!element.getAttribute("required")) continue;   
				if (pattern = element.getAttribute("check_pattern")) {
						pattern = new RegExp(pattern, "g"); 
						if (!pattern.test(element.value)) { 
								alert(element.getAttribute("required"));   
								element.focus();        
								return false;   
						}   
				}
				else if(/^0*\s*$/.test(element.value)) {
						alert(element.getAttribute("required"));       
						element.focus();    
						return false;       
				}
				if (null!=element.getAttribute("mail"))
				if (!reg.test(element.value)) {
						alert(element.getAttribute("mail"));
						element.focus(); 
						return false;
				}
				
				if (null != document.getElementById('i2') && null != document.getElementById('i3')) {
					if (document.getElementById('i2').value != document.getElementById('i3').value) {
						alert("Пароль и подтверждение не совпадают");
						document.getElementById('i3').focus(); 
						return false;
					}
				}
				
				if (null != document.getElementById('q2') && null != document.getElementById('q21')) {
					if (document.getElementById('q2').value == document.getElementById('q21').value) {
						alert("Выберите разные фонды");       
						element.focus();    
						return false;
					}
				}
				
// sum field
				if (null!=element.getAttribute("sum")) {
					if (!/^[0-9]+(\.|,)?[0-9]{0,2}$/.test(element.value)) {
						alert(element.getAttribute("sum"));
						element.focus(); 
						return false;
					}
				}
				
// pay num field
				if (null!=element.getAttribute("num")) {
					if (!/^[0-9]+(\.|,)?[0-9]{0,5}$/.test(element.value)) {
						alert(element.getAttribute("num"));
						element.focus(); 
						return false;
					}
				}
				
// checkbox
				if (null != document.getElementById('i5')) {
					var agree_elem = document.getElementById('i5');
				
					if (!agree_elem.checked) {
						alert(agree_elem.getAttribute("required"));
						agree_elem.focus();
						return false;
					}
				}
		}
		return true;
}

