function checkMail(mail){var er = new RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);if(er.test(mail)){ return true;}else{return false;}}
function checkReturnValue(evt){
	if(window.event){if(!window.event.returnValue){return false;}}
	else {if(!evt.returnValue){return false;}}
}
function charLimit(el,max_len,evt) {
	var BACKSPACE=8;var DEL=46;var FRENTE=39;var TRAS=37; TAB=9;
	if(!evt){evt = window.event;}
	if(evt.keyCode){code = evt.keyCode;}
	else if (evt.which){code = evt.which;}
	var tecla = code;
	//alert(tecla);
	if((tecla == BACKSPACE )||(tecla == DEL)||(tecla == FRENTE)||(tecla == TRAS)||(tecla == TAB)) {
		
	}
	else{
		if (el.value.length > max_len-1) {
			el.value = el.value.substr(0, max_len-1);
			return false;
		}
		else {
			return true;
		}

	}
}

function formatCurr(e) {
	var fld = this;var milSep = '.';
	var decSep = ',';  var sep = 0;  
	var key = '';  var i = j = 0;  var len = len2 = 0;  
	var strCheck = '0123456789';  var aux = aux2 = '';  
	var whichCode = '';
	if(!e){e = window.event;}
	if(e.keyCode){whichCode = e.keyCode;}
	else if (e.which){whichCode = e.which;}
	
	if (whichCode == 13) return true;if (whichCode == 8) return true;key = String.fromCharCode(whichCode);
	if (strCheck.indexOf(key) == -1) return false;len = fld.value.length;for(i = 0; i < len; i++)
		if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
		aux = '';
		for(; i < len; i++)
			if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
			aux += key;
			len = aux.length;
	if (len == 0) fld.value = '';
	if (len == 1) fld.value = '0'+ decSep + '0' + aux;
	if (len == 2) fld.value = '0'+ decSep + aux;
	if (len > 2) {
		aux2 = '';
		for (j = 0, i = len - 3; i >= 0; i--) {
			if (j == 3) {
				aux2 += milSep;
				j = 0;
			}
			aux2 += aux.charAt(i);
			j++;
		}
		fld.value = '';
		len2 = aux2.length;
		for (i = len2 - 1; i >= 0; i--)
			fld.value += aux2.charAt(i);
			fld.value += decSep + aux.substr(len - 2, len);
			}
			return checkReturnValue(e);	
	}
	
	function validateKey(evt) {
		var BACKSPACE=8;var DEL=46;var FRENTE=39;var TRAS=37; TAB=9;
		if(!evt){evt = window.event;}
		if(evt.keyCode){code = evt.keyCode;}
		else if (evt.which){code = evt.which;}
		var tecla = code;
		//alert(tecla);
		if((tecla == BACKSPACE )||(tecla == DEL)||(tecla == FRENTE)||(tecla == TRAS)||(tecla == TAB)) {
			evt.returnValue = true;
			return false; 
		}
		if ( tecla == 13 ) { evt.returnValue = true; return true; }
		if((tecla<48)||(tecla>57)){evt.returnValue = false;return false;}
		else{evt.returnValue=true;return true;} 
		return false;
	}
	function adjustDDD(evt){	
		var input = this;	
		charLimit(this, 2,evt);
		if(validateKey(evt)) { 
			
		}
		return checkReturnValue(evt);				
	}
	
	function adjustUF(evt){	
		var input = this;	
		charLimit(this, 2,evt);
		return checkReturnValue(evt);	
			
	}
	
	
	function adjustFone(evt){
		var input = this;
		charLimit(this, 14,evt);
		if(validateKey(evt)) { 
			if (input.value.length===0) {
				input.value=input.value + "(";
			}
			if (input.value.length===3) {
				input.value=input.value + ") ";
			}
			if (input.value.length===9) {
				input.value=input.value + "-";
			}
		}
		return checkReturnValue(evt);			
	}
	function adjustTxt(evt){
		var input = this;
		//charLimit(this, 255);
		return checkReturnValue(evt);			
	}
	function adjustCEP(evt){	
		var input = this;	
		charLimit(this, 9);
		if(validateKey(evt)) { 
			if ((input.value.length==5)) {
				input.value=input.value + "-" ;
			}
		}
		return checkReturnValue(evt);				
	}
	
	
	
	
	function adjustDate(evt){
		var input = this;
		charLimit(this, 10,evt);
		if(validateKey(evt)) { 
			if((input.value.length==2)||(input.value.length==5)) {
				input.value=input.value + "/";
			}
		}
		return checkReturnValue(evt);			
	}
	function adjustCPF(evt){
		var input = this;
		charLimit(this, 14,evt);
		if(validateKey(evt)) { 
			if((input.value.length==3)||(input.value.length==7)) {
				input.value=input.value + ".";
			}
			if ((input.value.length==11)) {
				input.value=input.value + "-" ;
			}
		}
		return checkReturnValue(evt);			
	}
	function adjustCNPJ(evt){
		var input = this;
		charLimit(this, 18,evt);
		if(validateKey(evt)) { 
			if((input.value.length==2)||(input.value.length==6)) {
				input.value=input.value + ".";
			}
			if ((input.value.length==10)) {
				input.value=input.value + "/" ;
			}
			if ((input.value.length==15)) {
				input.value=input.value + "-" ;
			}
		}
		return checkReturnValue(evt);			
	}
	function adjustRG(evt){
		var input = this;
		charLimit(this, 13,evt);
		if(validateKey(evt)){ 
			if((input.value.length==2)||(input.value.length==6)) {
				input.value=input.value + ".";
			}
			if ((input.value.length==10)) {
				input.value=input.value + "-" ;
			}
		}
		return checkReturnValue(evt);			
	}
	function validateCPF(el){
		/*if(!isValidCPF(el.value.replace('-','').replace('.',''))){
			alert("CPF Inválido!");
			el.value="";
			el.focus();
		}*/
		return true;
	}
	function validateCNPJ(el){
		if(!isValidCNPJ(el.value.replace('-','').replace('.','').replace('/',''))){
			alert("CNPJ Inválido!");
			el.focus();
		}
	}
	function isValidCPF(cpf){
		exp = /\.|\-/g
		cpf = cpf.toString().replace( exp, "" ); 
		var digitoDigitado = eval(cpf.charAt(9)+cpf.charAt(10));
		var soma1=0, soma2=0;
		var vlr =11;
		
		for(i=0;i<9;i++){
			soma1+=eval(cpf.charAt(i)*(vlr-1));
			soma2+=eval(cpf.charAt(i)*vlr);
			vlr--;
		}       
		soma1 = (((soma1*10)%11)==10 ? 0:((soma1*10)%11));
		soma2=(((soma2+(2*soma1))*10)%11);
		
		var digitoGerado=(soma1*10)+soma2;
		if(cpf.toString().length > 1){
			if(digitoGerado!=digitoDigitado){
				return false;
			}
			else{
				return true;
			}
		}
		else{
			return true;
		}
	}
	function isValidCNPJ(cnpj){
		var valida = new Array(6,5,4,3,2,9,8,7,6,5,4,3,2);
		var dig1= new Number;var dig2= new Number;
		exp = /\.|\-|\//g;
		cnpj = cnpj.toString().replace( exp, "" );
		var digito = new Number(eval(cnpj.charAt(12)+cnpj.charAt(13)));
		if(cnpj.toString().length > 1){
			for(i = 0; i<valida.length; i++){dig1 += (i>0? (cnpj.charAt(i-1)*valida[i]):0);dig2 += cnpj.charAt(i)*valida[i];}
			dig1 = (((dig1%11)<2)? 0:(11-(dig1%11)));dig2 = (((dig2%11)<2)? 0:(11-(dig2%11)));
			if(((dig1*10)+dig2) != digito) {
				return false;
			}
			else {
				return true;
			}
		}
		else {
			return true;
		}
	}
	
	
	
	
	function vForm(form) {
		var In = form.getElementsByTagName('input');
		var Sl = form.getElementsByTagName('select');
		var Err = false;
		Ignored = /submit|reset|checkbox/gi;
		for(i=0;i<In.length;i++){
			In[i].style.borderColor = '';
			In[i].style.backgroundColor = '';
			if((In[i].title.indexOf(';') > 0)&&(!Ignored.exec(In[i].type))) {
				if(In[i].type == 'radio'){
					if(In[i].title.split(';')[1].toLowerCase() === 'requerido'){
						if(!In[i].checked){
							ErrMsg = document.getElementById(In[i].title.split(';')[0].toLowerCase()+'_err');
							if(ErrMsg){
								ErrMsg.style.display = 'inline';
							}
						}
					}
				}
				else{
					if(In[i].title.split(';')[1].toLowerCase() === 'requerido'){
						if((In[i].value.length === 0)||(In[i].value == ' ')){
							In[i].style.borderColor = '#F00';
							In[i].style.backgroundColor = '#FFCCCC';
							Err = true;
						}
					}
					if((In[i].title.split(';')[0].toLowerCase() == 'email')&&(In[i].title.split(';')[1].toLowerCase() === 'requerido')){
						//alert(checkMail(In[i]));
						if(checkMail(In[i].value) === false){
							In[i].style.borderColor = '#F00';
							In[i].style.backgroundColor = '#FFCCCC';
							Err = true;
						}
					}
					if(In[i].title.split(';')[0].toLowerCase() == 'cnpj'){
						el =In[i];
						if(isValidCNPJ(el.value.replace('-','').replace('.','').replace('/','')) === false){
							el.style.borderColor = '#F00';
							el.style.backgroundColor = '#FFCCCC';
							Err = true;
						}
					}
				}
			}
		}
		for(j=0;j<Sl.length;j++){
			if((Sl[j].title.indexOf(';') > 0)&&(!Ignored.exec(Sl[j].type))) {
				if(Sl[j].title.split(';')[1].toLowerCase() === 'requerido'){
					if((Sl[j].value.selectedIndex === 0)||(Sl[j].value == ' ')||(Sl[j].value == '')){
						//alert((Sl[j].value.selectedIndex === 0)+'/'+(Sl[j].value == ' ')+'/'+(Sl[j].value == ''));
						Sl[j].style.borderColor = '#F00';
						Sl[j].style.backgroundColor = '#FFCCCC';
						Err = true;
					}
				}
			} 
		}
		if(Err){alert('Verifique os campos destacados.');return false;}
	}
	function addInputsEvents(){
		var In = document.getElementsByTagName('input');
		var Txt = document.getElementsByTagName('textarea');
		for(j=0;j<Txt.length;j++){
			Txt[j].onkeyup = adjustTxt;
		}
		for(i=0;i<In.length;i++){
			if(In[i].title.indexOf(';') > 0) {
				if(In[i].title.split(';')[0].toLowerCase().indexOf('data') > -1) {
					In[i].onkeypress = adjustDate;
				}
				else {
					In[i].onfocus = function(){
						ErrMsg = document.getElementById(this.title.split(';')[0].toLowerCase()+'_err');
						if(ErrMsg){
							ErrMsg.style.display = 'none';
						}
						this.style.borderColor = '';
						this.style.backgroundColor = '';
					};
					switch (In[i].title.split(';')[0].toLowerCase()){
						case 'nome': 
							In[i].onkeyup = function() { this.value=this.value.replace(/[\(\)\.\-\\\/\|\'\"\!\@\#\$\%\¨\&\*\+\=\?\;\:\^\~\´\`\{\}\[\],]/g,"");};
							break;
						case 'email': 
							In[i].onkeyup = function() { this.value=this.value.replace(/[\(\)\\\/\|\'\"\!\#\$\%\¨\&\*\+\=\?\;\:\^\~\´\`\{\}\[\],]/g,""); };
							break;
						case 'ddd':
							In[i].onkeypress = adjustDDD;
							break;	
						case 'telefone':
							In[i].onkeypress = adjustFone;
							break;	
						case 'cep':
							In[i].onkeypress = adjustCEP;
							break;	
						case 'uf':
							In[i].onkeypress = adjustUF;
							break;	
						case 'cpf':
							In[i].onkeypress = adjustCPF;
							In[i].onblur = function() { validateCPF(this); };
							break;
						case 'cnpj':
							In[i].onkeypress = adjustCNPJ;
							In[i].onblur = function() { validateCNPJ(this); };
							break;
						case 'valor r$':
							In[i].onkeypress = formatCurr;
							In[i].style.textAlign = 'right';
							break;								
						case 'drg':
							In[i].onkeypress = adjustRG;
							break;			
					}
				}
			}
		}
		
	}
window.onload = function(){addInputsEvents();};
