var formRef = "document." + formName;

function checkForm(){
	count = 0;
	for(i=0;i<fieldName.length;i++){
		if(checkField(fieldName[i],fieldType[i])){
			count++;
		}
		else{
			if(fieldErrorMsg[i]){
				alert(fieldErrorMsg[i]);
				if(fieldName[i].indexOf(",") != -1)
				{
					target = fieldName[i].split(",");
					eval(formRef + "." + target[0]).focus();
					break;
				}
				if(eval(formRef + "." + fieldName[i])[0])
				{
					eval(formRef + "." + fieldName[i])[0].focus();
				}
				else
				{
					eval(formRef + "." + fieldName[i]).focus();
				}
			}
			return;
		}
	}
	if(count == fieldName.length){
		eval(formRef).submit();
	}
}

function checkField(field,type){
	switch(type){
		case 'isEmptyandValidLength':
			if(isEmptyandValidLength(field)){
				return false;
			}
			else{
				return true;
			}
		break;
		case 'notEmpty':
			if(isEmpty(field)){
				return false;
			}
			else{
				return true;
			}
		break;
		case 'Email':
			if(isMail(field)){
				return true;
			}
			else{
				return false;
			}
		break;
		case 'Number':
			if(isNumber(field)){
				return true;
			}
			else{
				return false;
			}
		break;
		case 'Equal':
			if(isEqual(field)){
				return true;
			}
			else{
				return false;
			}
		break;
		
		case 'Day':
			if(isDay(field)){
				return true;
			}
			else{
				return false;
			}
		break;
		case 'Month':
			if(isMonth(field)){
				return true;
			}
			else{
				return false;
			}
		break;
		case 'Year':
			if(isYear(field)){
				return true;
			}
			else{
				return false;
			}
		break;
		case 'Selected':
			if(isSelected(field)){
				return true;
			}
			else{
				return false;
			}
		break;
		case 'Checked':
			if(isChecked(field)){
				return true;
			}
			else{
				return false;
			}
		break;		
		case 'Length':
			if(isLength(field)){
				return true;
			}
			else{
				return false;
			}
		break;
		case 'CEP':
			if(isCEP(field)){
				return true;
			}
			else{
				return false;
			}
		break;
		case 'isDate':
			if(isDate(field)){
				return true;
			}
			else{
				return false;
			}
		break;
		case 'isEmptyOrNumber':
			if (isEmpty(field)){
				return true;
			}else{
				if (isNumber(field)){
					return true;
				}else{
					return false;
				}
			}
		break;
		case 'Pair':
			if(isPair(field)){
				return true;
			}
			else{
				return false;
			}
		break;
		default:
			alert('Os tipos que podem ser validados são: notEmpty ; isEmptyandValidLength; Email ; Number ; Day ; Month ; Year ; CEP ; Selected ; Checked ; Equal; Pair; Length; CPF. Você selecionou:' + type);
			return false;
		break;
	}
}


function isEmpty(campo){
	if(eval(formRef+'.'+campo).value == ""){
		return true;
	}
	else{
		return false;
	}
}

function isEmptyandValidLength(campo){
	if(eval(formRef+'.'+campo).value == "" && eval(formRef+'.'+campo).value.length <= 430){
		return true;
	}
	else{
		return false;
	}
}

function isNumber(campo){
	field = eval(formRef+'.'+campo).value;
	if(isNaN(field) || field.indexOf('e') != -1 || field == ""){
		return false;
	}
	else{
		return true;
	}
}

function isDay(campo){
	field = eval(formRef+'.'+campo).value;
	intDay = field;
	if(isNaN(field) || field < 1 || field > 31 || field == ""){
		return false;
	}
	else{
		return true;
	}
}

function isMonth(campo){
	field = eval(formRef+'.'+campo).value;
	if(isNaN(field) || field < 1 || field > 12 || field == ""){
		return false;
	}
	else{
		if (intDay != '')
		{
			if (field == 2 && intDay > 28)
			{
				return false;
			}else{
				return true;
			}
		}else{
			return true;
		}
	}
}


function isLength(campo){
	fields = campo.split(",");
	field = eval(formRef+'.'+fields[0])
	if (field.value.length >= fields[1])
	{
		return true;
	}
	else
	{
		return false;
	}
}

function isEqual(campo){
	fields = campo.split(",");
	value = eval(formRef+'.'+fields[0]).value;
	for(k=1;k<fields.length;k++)
	{
		if(eval(formRef+'.'+fields[k]).value != value)
		{
			return false;
		}
	}
	return true;
}

function isYear(campo){
	field = eval(formRef+'.'+campo).value;
	tempo = new Date();
	anoAtual = tempo.getYear();		
	if (anoAtual < 1900)
	{
		anoAtual += 1900;
	}
	if(isNaN(field) || field < 1900 || field == ""){
		return false;
	}
	else
	{
		return true;
	}
}
/*
function isLength(campo,num){
	field = eval(formRef+'.'+campo).value;
	if(field.length != num){
		return false;
	}
	else{
		return true;
	}
}
*/
function isSelected(campo){
	field_value = eval(formRef+"."+campo+"["+formRef+"."+campo+".selectedIndex"+"]"+".value");
	if(field_value == ""){
		return false;
	}
	else{
		return true;
	}
}

function isChecked(campo){
	field = eval(formRef+'.'+campo);
	selected = false;
	if (field[0])
	{
		for (x=0;x!=field.length;x++)
		{
			if(field[x].checked)
			{
				selected = true;
			}
		}	
	}
	else
	{
		if(field.checked)
		{
			selected = true;
		}	
	}
	
	return selected;
}


function isMail(campo){
	field = eval(formRef+'.'+campo).value;
	if(field.indexOf("@") != -1){
		mail_back = field.substring(field.indexOf("@")+1,field.length);
		if(mail_back.indexOf(".") > 0){
			mail_end = mail_back.substring(mail_back.lastIndexOf(".")+1,mail_back.length);
			if(mail_end.length != 2 && mail_end.length != 3){
				return false;
			}
			else{
				return true;
			}		
		}
		else{
			return false;
		}
	}
	else{
		return false;
	}
}

function isCEP(campo){
	field = eval(formRef+'.'+campo).value;
	if(field.indexOf("-") != -1){
	 	var begin = field.substring(0,field.indexOf("-"));
		var end = field.substring(field.indexOf("-") + 1, field.length);
		if(begin.length != 5 || end.length != 3 || isNaN(begin) || begin.indexOf('e') != -1 || isNaN(end) || end.indexOf('e') != -1){
			return false;
		}
		else{
			return true;
		}
	}
	else{
		if(field.length == 8 && isNumber(campo)){
			return true;
		}
		else{
			return false;
		}
	}
	
}

function isPair(campo){
	field = eval(formRef+'.'+campo).value;
	if(isNaN(field) || field.indexOf('e') != -1 || field == "" || field%2 != 0){
		return false;
	}
	else{
		return true;
	}
}


function isDate(campo)
{
	arrCampos = eval(formRef+'.'+campo).value.split("/");
	dia=arrCampos[0];
	mes=arrCampos[1];
	ano=arrCampos[2];
  if ((mes >= 1)&&(mes <= 12)&&(ano > 0)) {
    if((dia >= 1)&&(dia <= DiasMes(mes,ano))) {
      return(true);
    } else {
      return(false); }
  } else {
    return(false); } 
}


 
function DiasMes(mes,ano) {
  if(mes == 2) {
    if(((ano % 4) != 0)||(((ano % 100) == 0) && ((ano % 400) != 0))) {
      return(28); 
    } else {
      return(29); }
  } else {
    if(mes < 8) {
      return(30 + (mes % 2));
    } else { 
      return(31 - (mes % 2)); } }
}