function colocaMascara(form) {
	var bValid = true;
	var fields = new Array();
	var oMascara = eval('new ' + retrieveFormName(form) +  '_Mascara()');
	for (var x in oMascara) {
		if (!verifyArrayElement(x, oMascara[x])) {
			continue;
		}
		var field = form[oMascara[x][0]];
		if (!isFieldPresent(field)) {
		  continue;
		}
		if (field.type == 'text' || field.type == 'textarea') {
			form[oMascara[x][0]].onkeypress = filtrar;
			form[oMascara[x][0]].onkeyup = mascarar;
			form[oMascara[x][0]].nextField = oMascara[x][2];
			form[oMascara[x][0]].preencheu = false;
			form[oMascara[x][0]].mascara = oMascara[x][1];
		}
	}
	return bValid;
}

function filtrar(evt) {
	if (navigator.appName == "Microsoft Internet Explorer") {
		var evt = window.event;
	}
	var charCode = (evt.which) ? evt.which : evt.keyCode;
	if (!evt.witch) {
		if (evt.keyCode == 8 || evt.keyCode == 46 || ( evt.keyCode >=37 && evt.keyCode <=40)) {
			return true;
		}
	}
	if (charCode > 31 && (charCode < 48 || charCode > 57)) {
		return false;
	}
	return true;
}

function mascarar() {
	with (this) {
		var tam = value.length;
		var dig=parseInt(value.substring(tam-1));
	
		if (mascara == 'CPF') {
			if (tam > 11 && (value.substring(3,4) != "." ||
						value.substring(7,8) != "." ||
						value.substring(11,12) != "-")) {
				value = "";
			} else if (tam > 7 && (value.substring(3,4) != "." ||
						value.substring(7,8) != ".")) {
				value = "";
			} else if (tam > 3 && value.substring(3,4) != ".") {
				value = "";
			}
			if (isNaN(dig)) {
				preencheu = true;
			} else if((tam == 3 || tam ==7)) {
				if (!preencheu) {
					value += ".";
					preencheu = true;
				} else {
					value = value.substring(0,tam-1);
					preencheu = false;
				}
			} else if(tam == 11) {
				if (!preencheu) {
					value += "-";
					preencheu = true;
				} else {
					value = value.substring(0,tam-1);
					preencheu = false;
				}
			} else if(tam == 14) {
				if (value.substring(3,4) != "." ||
						value.substring(7,8) != "." ||
						value.substring(11,12) != "-") {
					value = "";
				} else if (nextField != null) {
					if (!preencheu) {
						preencheu = true;
						nextField.focus();
					}
				}
			} else {
				preencheu = false;
			}
		} else if (mascara == 'CNPJ') {
			if (tam > 15 && (value.substring(2,3) != "." ||
				value.substring(6,7) != "." ||
				value.substring(10,11) != "/" ||
				value.substring(15,16) != "-")) {
				value = "";
			} else if (tam > 10 && (value.substring(2,3) != "." ||
						value.substring(6,7) != "." ||
						value.substring(10,11) != "/")) {
				value = "";
			} else if (tam > 6 && (value.substring(2,3) != "." ||
						value.substring(6,7) != ".")) {
				value = "";
			} else if (tam > 2 && value.substring(2,3) != ".") {
				value = "";
			}
			if (isNaN(dig)) {
				preencheu = true;	
			} else if(tam == 2 || tam == 6) {
				if (!preencheu) {
					value += ".";
					preencheu = true;
				} else {
					value = value.substring(0,tam-1);
					preencheu = false;
				}
			} else if(tam == 10) {
				if (!preencheu) {
					value += "/";
					preencheu = true;
				} else {
					value = value.substring(0,tam-1);
					preencheu = false;
				}
			} else if(tam == 15) {
				if (!preencheu) {
					value += "-";
					preencheu = true;
				} else {
					value = value.substring(0,tam-1);
					preencheu = false;
				}
			} else if(tam == 18) {
				if (value.substring(2,3) != "." ||
						value.substring(6,7) != "." ||
						value.substring(10,11) != "/" ||
						value.substring(15,16) != "-") {
					value = "";
				} else if (nextField != null) {
					if (!preencheu) {
						preencheu = true;
						nextField.focus();
					}
				}
			} else {
				preencheu = false;
			}
			
		}  else if (mascara == 'CEP') {
			if (tam > 5 && (value.substring(5,6) != "-")) {
				value = "";
			}
			if (isNaN(dig)) {
				preencheu = true;	
			} else if(tam == 5) {
				if (!preencheu) {
					value += "-";
					preencheu = true;
				} else {
					value = value.substring(0,tam-1);
					preencheu = false;
				}
			} else if(tam == 9) {
				if (value.substring(5,6) != "-") {
					value = "";
				} else if (nextField != null) {
					if (!preencheu) {
						preencheu = true;
						nextField.focus();
					}
				}
			} else {
				preencheu = false;
			}
		} else if (mascara == 'Data') {
			if (tam > 5 && (value.substring(2,3) != "/" ||
				            value.substring(5,6) != "/")) {
				value = "";
			} else if (tam > 2 && value.substring(2,3) != "/") {
				value = "";
			}
			
			if (isNaN(dig)) {
				preencheu = true;
			} else if(tam == 2 || tam == 5) {
				if (!preencheu) {
					value += "/";
					preencheu = true;
				} else {
					value = value.substring(0,tam-1);
					preencheu = false;
				}
			}else if(tam == 10) {
				if (value.substring(2,3) != "/" ||
						value.substring(5,6) != "/") {
					value = "";
				} else if (nextField != null) {
					if (!preencheu) {
						preencheu = true;
						nextField.focus();
					}
				}
			} else {
				preencheu = false;
			}
		}
	}
}

function retrieveFormName(form) {
	var formName;
	if (form.getAttributeNode) {
		if (form.getAttributeNode("id") && form.getAttributeNode("id").value) {
			formName = form.getAttributeNode("id").value;
		} else {
			formName = form.getAttributeNode("name").value;
		}
	} else if (form.getAttribute) {
		if (form.getAttribute("id")) {
			formName = form.getAttribute("id");
		} else {
			formName = form.attributes["name"];
		}
	} else {
		if (form.id) {
			formName = form.id;
		} else {
			formName = form.name;
		}
	}
	return formName;
}

function verifyArrayElement(name, element) {
	if (element && element.length && element.length == 3) {
		return true;
	} else {
		return false;
	}
}

function isFieldPresent(field) {
	var fieldPresent = true;
    if (field == null || field == undefined) {
		fieldPresent = false;
	} else {
		if (field.disabled) {
			fieldPresent = false;
        }
    }
    return fieldPresent;
}

function removerCaracteresEspeciais( valor ) {
  var especiais = ".,;:-_#%&*!@|\\/[]{}+=<>()";
  valor = trim(valor);
  var ret = "";
  for(var i=0; i<valor.length; i++) {
    if( especiais.indexOf(valor.charAt(i)) < 0 ) {
      ret += valor.charAt(i);
    }
  }
  return ret;
}