var id_error;

function HighlightError(f, i){
  //f[i].style.backgroundColor="#C3C3C3";
  f[i].className = "inputerror";
  if ((id_error==-1) || (i<id_error)){
  	f[i].focus();
	id_error = i;
  }
}

function CheckRequired(f, i){
	//alert("req "+i);
	if (f[i].type=="text"){
		if (f[i].value.length==0){
			HighlightError(f, i);
			return false;
		}
	}else if (f[i].type=="textarea"){
		if (f[i].value.length==0){
			HighlightError(f, i);
			return false;
		}
	}else if (f[i].type=="select-one"){
		if (f[i][ f[i].selectedIndex ].text.length==0){
			HighlightError(f, i);
			return false;
		}
	}else if (f[i].type=="checkbox"){
		if (!f[i].checked){
			HighlightError(f, i);
			return false;
		}
	}else if (f[i].type=="file"){
		if (f[i].value.length==0){
			HighlightError(f, i);
			return false;
		}
	}

	return true;
}


//-------------------------------------------------
function Raise(f,i){
	HighlightError(f,i);
	return false;
}
function valid_email(f,i) {
		e = f[i];
		e_mail = e.value;

		zyuka = e_mail.indexOf("@");
		if (zyuka==-1) return Raise(f, i);

		dot = e_mail.indexOf(".", zyuka);
		if (dot==-1) return Raise(f, i);

		space = e_mail.indexOf(" ");
		if (space!=-1) return Raise(f, i);

		l = e_mail.length;
		if (l<6) return Raise(f, i);

		if (zyuka+1>=dot) return Raise(f, i);
		if (dot+3>l) return Raise(f, i);

		return true;
}

function CheckEmail(f, i) {
	if (f[i].type=="text")
		return valid_email(f, i);

	return true;
}
function CheckEmailOrNull(f, i) {
	if (f[i].type=="text"){
		if (f[i].value=="") return true;
		return valid_email(f, i);
	}
	return true;
}

//--------------------------------------------------------

function CheckInt(f,i) {
	if (f[i].type=="text"){
		v = f[i].value;
		for (s=0; s<v.length-1; s++){
			ch = v.charAt(s);
			if ( (ch=='0')||(ch=='1')||(ch=='2')||(ch=='3')||(ch=='4')||(ch=='5')||(ch=='6')||(ch=='7')||(ch=='8')||(ch=='9') )
				continue;
			HighlightError(f, i);
			alert('Not an integer!');
			return false;
		}
	}
	return true;
}

//--------------------------------------------------------

function CheckDouble(f,i) {
	if (f[i].type=="text"){
		v = f[i].value;
		n = 0;
		if ((v.charAt(v.length-1)==',') || (v.charAt(v.length-1)=='.') || (v.charAt(0)==',') || (v.charAt(0)=='.'))
		{
			HighlightError(f,i);
			return false;		
		}
		for (s=0; s<v.length-1; s++){
			ch = v.charAt(s);
			if ( (ch=='0')||(ch=='1')||(ch=='2')||(ch=='3')||(ch=='4')||(ch=='5')||(ch=='6')||(ch=='7')||(ch=='8')||(ch=='9') )
				continue;
			if ( (ch=='.') || (ch==','))
				n++;
			if (n < 2) continue;
			HighlightError(f,i);
			return false;
		}
	}
	return true;
}

//--------------------------------------------------------

function CheckPositive(f,i) {
	if (f[i].type=="text"){
		v = f[i].value;
		if (v.charAt(0)=='0' || v.length==0){
			HighlightError(f, i);
			alert('Должно быть целое положительное');
			return false;
		}
		for (s=0; s<v.length-1; s++){
			ch = v.charAt(s);
			if ( (ch=='0')||(ch=='1')||(ch=='2')||(ch=='3')||(ch=='4')||(ch=='5')||(ch=='6')||(ch=='7')||(ch=='8')||(ch=='9') )
				continue;

			HighlightError(f, i);
			alert('Должно быть целое положительное');
			return false;
		}
	}
   return true;
}
function CheckPositiveOrNull(f,i) {
	if (f[i].type=="text"){
		if (f[i].value=="") return true;
		return CheckPositive(f,i);
	}
   return true;
}

function CheckPositiveOr0(f,i) {
	if (f[i].type=="text"){
		if (f[i].value=="0" || f[i].value=="00" || f[i].value=="") return true;
		return CheckPositive(f,i);
	}
   return true;
}
//--------------------------------------------------------

function CheckPassword(f, i) {
  notfound = true;
	  		passwd1 = f[i].value;
			passwd2 = f[i+1].value;
			if ( passwd1 != passwd2 ){
				HighlightError(f, i);
				HighlightError(f, i+1);
				alert('Пароли не совпадают');
				notfound = false;
			}else if ( passwd1==''){
				HighlightError(f, i);
				HighlightError(f, i+1);
				//alert('Password required!');
				notfound = false;
			}
  return notfound;
}

//--------------------------------------------------------

function Check(f){
		id_error = -1;

		res = true;
		for (i=0; i<f.length; i++){
			//f[i].style.backgroundColor="";
			if (f[i].className=="inputerror") f[i].className = "";
			if (f[i].id=="required"){
				res = CheckRequired(f, i) && res;
		  	}else if (f[i].id=="email"){
				res = CheckEmail(f, i) && res;
			}else if (f[i].id=="int"){
				res = CheckInt(f, i) && res;
			}else if (f[i].id=="password"){
				res = CheckPassword(f, i) && res;
			}else if (f[i].id=="positive"){
				res = CheckPositive(f, i) && res;
			}else if (f[i].id=="positiveornull"){
				res = CheckPositiveOrNull(f, i) && res;
			}else if (f[i].id=="positiveor0"){
				res = CheckPositiveOr0(f, i) && res;				
			}else if (f[i].id=="emailornull"){
				res = CheckEmailOrNull(f, i) && res;
			}else if (f[i].id=="double"){
				res = CheckDouble(f, i) && res;
			}
			
		}

		return res;
}
