// 1 - пустота
// 2 - емайл
// 3 - номер телефона
// 4 - целое число
// 5 - действительное число
// 6 - корректные символы для логина
// 7 - проверка одиннаковых полей
// 8 - спрятать поле
// 9 - проверка выбранных чекбоксов ('goods_checked':{9:this})
// 10 - проверка нескольких полей на пустоту (хотя бы одно должно быть заполнено) ('regist_all':{10:new Array('element1',...)})
// 11 - проверка нескольких полей на пустоту (все должны быть заполнены) ('regist_all':{11:new Array('element1',...)})

// проверка формы
function CheckForm(fields){
	var check=true;
	for(i in fields){
		if(document.getElementById(i+'_empty'))
			document.getElementById(i+'_empty').style.display='none';
		if(document.getElementById(i+'_incorrect'))
			document.getElementById(i+'_incorrect').style.display='none';
		if(document.getElementById(i+'_notsame'))
			document.getElementById(i+'_notsame').style.display='none';
		if(document.getElementById(i+'_notchecked'))
			document.getElementById(i+'_notchecked').style.display='none';
		if(document.getElementById(i+'_emptyall'))
			document.getElementById(i+'_emptyall').style.display='none';
		if(document.getElementById(i+'_emptyone'))
			document.getElementById(i+'_emptyone').style.display='none';
		// empty
		if(fields[i][1] && !CheckFill(i)){
			document.getElementById(i+'_empty').style.display='block';
			check=false;
		}else{
			// email
			if(fields[i][2] && !CheckEmail(i)){
				document.getElementById(i+'_incorrect').style.display='block';
				check=false;
			}
			// phone
			if(fields[i][3] && !CheckPhone(i)){
				document.getElementById(i+'_incorrect').style.display='block';
				check=false;
			}
			// integer
			if(fields[i][4] && !CheckInteger(i)){
				document.getElementById(i+'_incorrect').style.display='block';
				check=false;
			}
			// real
			if(fields[i][5] && !CheckReal(i)){
				document.getElementById(i+'_incorrect').style.display='block';
				check=false;
			}
			// login
			if(fields[i][6] && !CheckLogin(i)){
				document.getElementById(i+'_incorrect').style.display='block';
				check=false;
			}
			//  same fields
			if(fields[i][7] && !CheckSameFields(i)){
				document.getElementById(i+'_notsame').style.display='block';
				check=false;
			}
			//  hide field
			if(fields[i][8]){
				document.getElementById(i).style.display='none';
			}
			//  checkboxes
			if(fields[i][9] && !CheckCheckboxes(i,fields[i][9])){
				document.getElementById(i+'_notchecked').style.display='block';
				check=false;
			}
			//  empty all
			if(fields[i][10] && fields[i][10].length && !CheckFillOne(i,fields[i][10])){
				document.getElementById(i+'_emptyall').style.display='block';
				check=false;
			}
			//  empty at least one
			if(fields[i][11] && fields[i][11].length && !CheckFillAll(i,fields[i][11])){
				document.getElementById(i+'_emptyone').style.display='block';
				check=false;
			}
		}
	}
	return check;
}
// проверка на пустоту
function CheckFill(id){
	if(!document.getElementById(id).value)
		return false;
	return true;
}
// проверка e-mail на корректноть
function CheckEmail(id){
	var symbols='qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM_-0123456789';
	var q=1;
	var q3_was=false;
	var x=document.getElementById(id).value;
	if(x != ''){
		for(var i=0; i<x.length; i++){
			c = x.charAt(i);
			if(q==1){
				if(symbols.indexOf(c)<0 && c!='.')
					return false;
				else
					q=2;
			}else if(q==2){
				if((symbols.indexOf(c)<0) && c!='.' && c!='@')
					return false;
				else if(c=='@')
					q=3;
			}else if(q==3){
				if((symbols.indexOf(c)<0) && c!='.')
					return false;
				else if(c=='.')
					q=4;
			}else if(q==4){
				if(symbols.indexOf(c)<0)
					return false;
				else{
					q3_was=true;
					q=3;
				}
			}
				
		}
		if(q!=3 || !q3_was)
			return false;
	}
	return true;
	/*var x=document.getElementById(id).value;
	if(x.length < 1){
		return false;
	}else{
		var s1 = x.indexOf('@');
		var s2 = x.indexOf('.');
		if((s1<0)||(s2<0)||(s1>s2)||(s1<1)||(s2<4)||((x.length-s2)<3)){
			return false;
		}
	}
	return true;*/
}
// проверка номера телефона на корректноть
function CheckPhone(id){
	var symbols='0123456789+-() ,./\\';
	var x=document.getElementById(id).value;
	if(x != ''){
		for(var i=0; i<x.length; i++){
			c = x.charAt(i);
			if(symbols.indexOf(c)<0)
				return false;
		}
	}
	return true;
}
// проверка целого числа на корректноть
function CheckInteger(id){
	var symbols='0123456789';
	var x=document.getElementById(id).value;
	if(x != ''){
		for(var i=0; i<x.length; i++){
			c = x.charAt(i);
			if(symbols.indexOf(c)<0)
				return false;
		}
	}
	return true;
}
// проверка действительного числа на корректноть
function CheckReal(id){
	var symbols='0123456789.,';
	var q=false;
	var x=document.getElementById(id).value;
	if(x != ''){
		for(var i=0; i<x.length; i++){
			c = x.charAt(i);
			if(symbols.indexOf(c)<0)
				return false;
			if((c=='.')||(c==',') && !q)
					q=true;
			else if((c=='.')||(c==','))
				return false;
		}
	}
	return true;
}
// проверка английских букв
function CheckLogin(id){
	var symbols='qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM_0123456789';
	var x=document.getElementById(id).value;
	if(x != ''){
		for(var i=0; i<x.length; i++){
			c = x.charAt(i);
			if(symbols.indexOf(c)<0)
				return false;
		}
	}
	return true;
}
// проверка одиннаковых полей
function CheckSameFields(id){
	if(document.getElementById(id).value!=document.getElementById(id+'2').value)
		return false;
	return true;
}
// проверка выбранных чекбоксов
function CheckCheckboxes(id,f){
	var count=0,l=id.length,i;
	for(i=0; i<f.elements.length; i++){
		if(f.elements[i].name&&f.elements[i].name.substr(0,l)==id)
			if(f.elements[i].checked)
				count++;
	}
	if(count)
		return true;
	return false;
}
// проверка нескольких полей на пустоту (хотя бы одно должно быть заполнено)
function CheckFillOne(id,a){
	var fill=false,i;
	for(i in a){
		if(CheckFill(a[i]))
			fill=true;
	}
	return fill;
}
// проверка нескольких полей на пустоту (все должны быть заполнены)
function CheckFillAll(id,a){
	var fill=true,i;
	for(i in a){
		if(!CheckFill(a[i]))
			fill=false;
	}
	return fill;
}