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"){
		if (f[i][ f[i].selectedIndex ].text.length==0){
			HighlightError(f, i);
			return false;
		}
	}else if (f[i].type=="file"){
		if (f[i].value.length==0){
			HighlightError(f, i);
			return false;
		}
	}else if (f[i].type=="checkbox"){
		if (!f[i].checked){
			HighlightError(f, i);
			return false;
		}
	}
  
	return true;   
}


//-------------------------------------------------
function Raise(f,i){
	HighlightError(f,i);
	alert('Wrong e-mail'); 
	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 CheckPositive(f,i) {
	if (f[i].type=="text"){
		v = f[i].value;
		if (v.charAt(0)=='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 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('Passwords do not coincide'); 
				notfound = false;
			}else if ( passwd1==''){
				HighlightError(f, i);
				HighlightError(f, i+1);
				alert('Password required!'); 
				notfound = false;
			}
  return notfound;   
}

//--------------------------------------------------------
/*function CheckTelNumb(f,i) {
	if (!(/^(\d{3})-(\d{3})-(\d{4})$/.f[i].value)){
			HighlightError(f, i);
			alert('Not an integer!'); 
			return false;
	}
	return true;   
}
*/
//--------------------------------------------

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=="required1"){
				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=="emailornull"){
				res = CheckEmailOrNull(f, i) && res;
			}
			//else if (f[i].id=="telnumb"){//format xxx-xxx-xxxx
				//res = CheckTelNumb(f, i) && res;
			//}
		} 
		
		return res;
}

function switchStateType()
{
		var state_select = getElementByClassName('state-select');
		var state_input = getElementByClassName('state-input');
		
		if (document.reg.country.value == "USA")
		{
			state_select.style.display = "";
			state_select.name = "state";
			state_input.style.display = "none";
			state_input.name = "state-1";			
		}
		else
		{
			state_input.style.display = "";
			state_input.name = "state";
			state_select.style.display = "none";
			state_select.name = "state-1";
		}
}

function getElementByClassName(classname)
{
	elem = document.reg;
	for (var i = 0; i < elem.length; i++) 
	{
		var classes = elem[i].className;
		if (classes.search(classname) >= 0) return elem[i];
	}
	
	return false;
}
