function isNotEmpty(value) {
	if (value.length>0) return(true);
	else return(false);
} 
function isNumber(value, mandatory) {
	var isNumber = /^\d+(\.\d+)?$/;
	if (mandatory==true) {
		return(isNumber.test(value));
	}else{
		if (value.length>0) return(isNumber.test(value));
		else return(true);
	}
}
function isNotNumber(value, mandatory) {
	var isNumber = /^\d+(\.\d+)?$/;
	if (mandatory==true) {
		return(!isNumber.test(value));
	}else{
		if (value.length>0) return(!isNumber.test(value));
		else return(true);
	}
}
function isEqual(value, value2, mandatory) {
	if (mandatory==true) {
		return(value==value2);
	}else{
		if (value.length>0) return(value==value2);
		else return(true);
	}
}
function isNotEqual(value, value2, mandatory) {
	if (mandatory==true) {
		return(value!=value2);
	}else{
		if (value.length>0) return(value!=value2);
		else return(true);
	}
}
function isMinLength(value, value2, mandatory) {
	if (mandatory==true) {
		return(value.length>=value2);
	}else{
		if (value.length>0) return(value.length>=value2);
		else return(true);
	}
}
function isValidEmail(value, mandatory) {
	var isValidEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (mandatory==true) {
		return isValidEmail.test(value);
	}else{
		if (value.length>0) return(isValidEmail.test(value));
		else return(true);
	}
}
function isCedula(value, mandatory) {
	if (mandatory==true || value.length>0) {
		alert(value.length+', '+value);
		if(!isNumber(value, true)) {return false;}
		x=0;
		aux=0;
		if (value.length != 10 || value.substr(0,2) < 1 || value.substr(0,2) > 22) return(false);		
		for (i=1; i<8; i+=2) {			
			x += Number(value.substr(i,1));
		}
		for (i=0; i<9; i+=2) {
			aux = 2*Number(value.substr(i,1));
			if (aux > 9) {
				subcad = String(aux);
				aux = Number(subcad.substr(0,1)) + Number(subcad.substr(1,1));
			}
			x += aux;
		}
		x = x/10;
		x = Math.floor(x);
		x = 10 - x;
		if (x==10) {x=0;}
		alert(x +'!='+ Number(value.substr(9,1)))
		if (x != Number(value.substr(9,1))) return(false);
		else return(true);
	}else{return(true);}
}
function isOneSelected(fieldGroup) {
	for (var i=0; i<fieldGroup.length; i++) {
		if (fieldGroup[i].checked) {return true;}
	}	
	return false;
}
function isChecked(field) {
	if (field.checked) {return true;}else{return false;}
}

//***** DEPRECATED
function isSameValue(value1, value2, mandatory) {
	if (mandatory==true) {
		return(value1==value2);
	}else{
		if (value1.length>0 || value2.length>0) return(value1==value2);
		else return false;
	}
}
function validation(fieldsArray, lang) {
	var errors = new Array();
	
	for(var i=0; i<fieldsArray.length; i++) {	
		var field = fieldsArray[i].field;
		var fieldValue = field.value;
		var value = fieldsArray[i].value;
		var validateFunction = fieldsArray[i].validate;
		var mandatory = fieldsArray[i].mandatory; 
		var labelObj = (!fieldsArray[i].labelId)? field.parentNode.previousSibling : document.getElementById(fieldsArray[i].labelId);
		//alert(labelObj+', '+field.name);
		//alert(field.outerHTML);
		
		//DEPRECATED
		var field2 = (fieldsArray[i].field2)? fieldsArray[i].field2 : null;
		
		labelObj.style.color = '';
		//alert('VALIDATE: name:'+field.name+', value:'+fieldValue+', validateFunction:'+validateFunction+', mandatory:'+mandatory+', label:'+labelObj.id);

		if (validateFunction=='isNotEmpty' && !isNotEmpty(fieldValue,mandatory)) {errors[errors.length] = {field:field, labelObj:labelObj};}
		if (validateFunction=='isNumber' && !isNumber(fieldValue,mandatory)) {errors[errors.length] = {field:field, labelObj:labelObj};}
		if (validateFunction=='isNotNumber' && !isNotNumber(fieldValue,mandatory)) {errors[errors.length] = {field:field, labelObj:labelObj};}
		if (validateFunction=='isEqual' && !isEqual(fieldValue,value,mandatory)) {errors[errors.length] = {field:field, labelObj:labelObj};}
		if (validateFunction=='isNotEqual' && !isNotEqual(fieldValue,value,mandatory)) {errors[errors.length] = {field:field, labelObj:labelObj};}
		if (validateFunction=='isMinLength' && !isMinLength(fieldValue,value,mandatory)) {errors[errors.length] = {field:field, labelObj:labelObj};}
		if (validateFunction=='isValidEmail' && !isValidEmail(fieldValue,mandatory)) {errors[errors.length] = {field:field, labelObj:labelObj};}
		if (validateFunction=='isCedula' && !isCedula(fieldValue,mandatory)) {errors[errors.length] = {field:field, labelObj:labelObj};}
		if (validateFunction=='isOneSelected' && !isOneSelected(field)) {errors[errors.length] = {field:field, labelObj:labelObj};}
		if (validateFunction=='isChecked' && !isChecked(field)) {errors[errors.length] = {field:field, labelObj:labelObj};}
		
		//***** DEPRECATED
		if (validateFunction=='isSameValue' && !isSameValue(fieldValue,field2.value,mandatory)) {
			errors[errors.length] = {field:field, labelObj:labelObj};
			errors[errors.length] = {field:field2, labelObj:labelObj2};
		}
	}
	if (errors.length>0) {
		for(var i=0; i<errors.length; i++) {
			errors[i].labelObj.style.color = '#FF0000';
		}
		switch (lang){
			case 'sp': 
				alert('Los campos marcados son obligatorios y/o tienen información incorrecta.');
				break;
			case 'en': 
				alert('Marked fields are mandatory and/or the information provided are wrong.');
				break;
			default:
				alert('Los campos marcados son obligatorios y/o tienen información incorrecta.');
		}	
		return false;
	}
}