function maxLength(obj,tam) {
	if (obj.value.length > tam) {
		if (event.keyCode != 8) {
			event.returnValue = false;
			return false;
		}
	}
}

function EhNum() {
	var tecla = event.keyCode;
	var obj = event.srcElement;
	var num = "0123456789";
	var realKey = String.fromCharCode(tecla);
	if (num.indexOf(realKey) == -1) {
		obj.value = obj.value.substr(0,obj.value.length - 1);
		return
	}
}

function EhNumero(str) {
	var num = "0123456789";
	for (i = 0; i < str.length;i++)
		if (num.indexOf(str.charAt(i)) == -1)
			return false;
	return true;
}


	function EhData(s) {
		var num = "0123456789/";
		var max = "312831303130313130313031";
		var data;
		var d, m, a, ndias;
		
		if (s.length == 0) return true;
		
		for (var i = 0, p = 0; i < s.length; i++) {
			if (num.indexOf(s.charAt(i)) == -1) {
				return false; break;				
			}
			else {
				if (s.charAt(i) == "/") p = p + 1;
				if (p > 2) {
					return false; break;
				}
			}
		}
		
		if (p != 2) return false;
		
		data = s.split("/");
		d = data[0] - 0;
		m = data[1] - 0;
		a = data[2] - 0;
		if (a < 1900) {
			return false;
		}
		else if ((m < 1) ||( m > 12)) {
			return false;
		}
		else {
			ndias = parseInt(max.substring((m - 1) * 2, (m - 1) * 2 + 2));
			if ((m == 2) && ((a % 4) == 0) && ((a % 100) == 0) && ((a % 400) == 0)) ndias = 29;
			if ((d < 1) || (d > ndias)) return false;
		}
		
		return true
	}

	function EhBranco(s) {
		for (var i = 0;i<s.length;i++ ) {
			var iAsc = parseInt(s.charCodeAt(i));
			if ((iAsc!=32) && (iAsc!=9) && (iAsc!=13) && (iAsc!=10)) return false ;
		}
		return true;
	}

function validaFormulario(oFrm) {
	var strMsg = "";
	var oCampo = null;
	var i;
	for (i=0;i<oFrm.length;i++) {
		if (!blnEstaVazio(oFrm.elements[i].msg) && (!oFrm.elements[i].disabled == true) && !blnEstaVazio(oFrm.elements[i].requiredfield)) {
			switch(oFrm.elements[i].type) {
				case "text": 			validaCampoText(oFrm.elements[i]); break;
				case "textarea": 		validaCampoText(oFrm.elements[i]); break;
				case "select-one": 		validaCampoText(oFrm.elements[i]); break;
				case "select-multiple": validaCampoText(oFrm.elements[i]); break;
				case "radio": 			i = validaCampoRadio(oFrm.elements[i],i); break;
				case "checkbox":		i = validaCampoRadio(oFrm.elements[i],i); break;
				default: break;
			}
		}
	}
	if (oCampo != null) {
		alert(strMsg);
		try {
			oCampo.focus();
		} catch(e) {
		
		}
		if (oCampo.type != "select-one" && oCampo.type != "select-multiple") oCampo.select();
		return false;
	} else return true;

	function blnEstaVazio(s) {
		if (s == null) return true;
		for (var i = 0;i<s.length;i++ ) {
			var iAsc = parseInt(s.charCodeAt(i));
			if ((iAsc!=32) && (iAsc!=9) && (iAsc!=13) && (iAsc!=10)) return false ;
		}
		return true;
	}

	function validaCampoText(oElem) {
		if (blnEstaVazio(oElem.value) && oElem.requiredfield == "true") {
			strMsg += "O campo " + oElem.msg + " não foi preenchido!\n";
			if (oCampo == null) oCampo = oElem;
		} else {
			//se foi colocado  atributo maxlength em um textarea valida
			//o excesso de caracteres
			if (oElem.type == "textarea" && oElem.maxlength != null) {
				if (oElem.value.length > oElem.maxlength) {
					strMsg += "O campo " + oElem.msg + " excedeu o número máximo de caracteres permitidos!\n";
					if (oCampo == null) oCampo = oElem;
				}
			}
			if (oElem.datatype != null)
				switch (oElem.datatype) {
					case "date":
						if (!EhData(oElem.value)) {
							strMsg += "O campo " + oElem.msg + " não foi preenchido corretamente!\n";
							if (oCampo == null) oCampo = oElem;
						}
						if (oElem.period != null) {
							if (!blnEstaVazio(oElem.value) && !validaPeriodo(oElem.value,oElem.period)) {
								strMsg += "A " + oElem.msg + " não pode ser inferior ou superior a " + oElem.period + " dias.!\n";
								if (oCampo == null) oCampo = oElem;
							}
						}
						break;
					case "number":
						if (!EhNumero(oElem.value)) {
							strMsg += "O campo " + oElem.msg + " não foi preenchido corretamente!\n";
							if (oCampo == null) oCampo = oElem;
						}
						break;
					case "email":
						if (!validaEmail(oElem.value)) {
							strMsg += "O campo " + oElem.msg + " não foi preenchido corretamente!\n";
							if (oCampo == null) oCampo = oElem;
						}
						break;
				}
		}
	}

	function validaCampoRadio(oElem,indice) {
		var aRadio = document.getElementsByName(oElem.name)
		var bChecked = false;
		var ind = indice;
		var i;
		if (!blnEstaVazio(aRadio[0].msg)) {
			for (i = 0;i<aRadio.length;i++) {
				if (aRadio[i].checked == true) bChecked = true;
			}
			if (!bChecked) {
				strMsg += "O campo " + aRadio[0].msg + " não foi preenchido!\n";
				if (oCampo == null) oCampo = aRadio[0];
				ind = indice + i - 1;
			}
			return ind; 
		}
	}
}
	
function validaPeriodo(data, dias) {

	var dataHoje = new Date();
	var dataMenosDias = new Date();
	dataMenosDias.setDate(dataMenosDias.getDate()-parseInt(dias));
	var dataMaisDias = new Date();
	dataMaisDias.setDate(dataMaisDias.getDate()+parseInt(dias));
	var arrData = data.split("/");
	var strDataValidar = arrData[2] + arrData[1] + arrData[0];
	var strDataMenosDias = dataMenosDias.getFullYear() + '' + formataMes(dataMenosDias.getMonth()) + '' + (dataMenosDias.getDate());
	var strDataMaisDias = dataMaisDias.getFullYear() + '' + formataMes(dataMaisDias.getMonth())  + '' + (dataMaisDias.getDate());
	
	return (strDataValidar >= strDataMenosDias && strDataValidar <= strDataMaisDias);

	function formataMes(mes){
		var strMes = '0' + (parseInt(mes) + 1) //Month is 0-11 in JavaScript
		return strMes.substring(strMes.length -2,strMes.length)
	}

}

function validaTelefone(num) {
	var validatePhone = /^\d{4}-\d{4}$/;
	return validatePhone.test(num);
}

function validaEmail(email) {
	if (email.length == 0) return true;
	var validateEmail = /^[a-zA-Z0-9]*[\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
	return validateEmail.test(email);
}
