//---------------------------------------------// As variáveis abaixo ficariam externas// ao arquivo JS, para permitir a configuração// diretamente no código HTML, sem que seja// necessária a alteração dentro do arquivo// JS//---------------------------------------------// Esta variável contém a primeira linha a ser apresentada caso apareça um errovar strHeaderErro = 'Ocorreram os seguintes erros:\n\n';// Esta variável contém a última linha a ser apresentada caso apareça um errovar strBottomErro = '\nPor favor, corrija-os e tente novamente';//---------------------------------------------// As variáveis abaixo ficariam internas// ao arquivo JS//---------------------------------------------// Dados fixos da validação de datavar dtCh= "/";var minYear=1900;var maxYear=2100;//Variável global de controle de checkboxesvar strCheckboxes = '';var strRadioboxes = '';function Validacao(objForm) {	//------------------------------------------------------	// Validações que devemos considerar:	// 	//  Text	//		CPF	//		CGC	//			//	Select	//		Valor <> ''	//------------------------------------------------------	//	Máscaras que devemos considerar:	//			//	Text	//		Data	//		Telefone	//		Valores	//		CEP	//		Somente números	//------------------------------------------------------	// Controles que devemos adicionar:	//	//	Containers	//	Drop-down c/ n relacionamentos	//	Controle adição de novo / seleção de antigo (JP)	//	Data c/ calendário (JP)	//  Validação de senha	//------------------------------------------------------	//	Não é interessante fazer validações diretamente 	//	orientadas à checkbox caso estas sejam repetidas	//	(listagens). Melhor colocar um campo hidden 	//	orientando esta validação.	//------------------------------------------------------	// Esta variável contém as mensagens de erro	var strErro = '';	// Esta variável contém o campo para focus	var strCampo = '';		// Esta variável contém os nomes de checkboxes já validadas	strCheckboxes = '';	strRadioboxes = '';		for(var i=0;i<objForm.elements.length-1;i++)	{		objElemento		= objForm.elements[i];		strTipo			= objElemento.type;		strNome			= objElemento.nome;		if(objForm.elements[i].validacao) {			if(objForm.elements[i].validacao.indexOf(",")>0) {					strValidacao = objForm.elements[i].validacao.split(",");					for (var j=0; j<strValidacao.length; j++) {						strtmpErro = ValidaObjeto(objElemento,strTipo,strValidacao[j]);						if (strtmpErro.length > 0) {							strErro += strtmpErro;							if (strTipo != 'checkbox' && strTipo != 'hidden' && strCampo == '') strCampo = objElemento.name;						}					}			} else {				strValidacao	= objForm.elements[i].validacao				strtmpErro = ValidaObjeto(objElemento,strTipo,strValidacao);				if (strtmpErro.length > 0) {					strErro += strtmpErro;					if (strTipo != 'hidden' && strCampo == '') {strCampo = objElemento.name;}				} 			}		}	}	if (strErro.length > 0) {		alert(strHeaderErro + strErro + strBottomErro);				if (strCampo != '') 			{				if (document.all[ strCampo ].length)				{					if (document.all[ strCampo ].tagName=='SELECT') document.all[ strCampo ].focus();					else document.all[ strCampo ][0].focus()					return false				}				else				{					document.all[ strCampo ].focus()					return false				}			}		else			{			}		return false;	}	return true;}function ValidaObjeto(objeto, tipo, validacao) {	var tmpErro = '';	switch (tipo) {	case 'text': {		switch (validacao) {			case 'numero': {				if (isNaN(objeto.value) || isEmpty(objeto.value)) tmpErro += ' - O campo \'' + objeto.nome + '\' deve conter um número \n';				break;				}			case 'email': {				if (!isEmail(objeto.value)) tmpErro += ' - O campo \'' + objeto.nome + '\' contém um e-mail inválido \n';				break;				}			case 'ddmmyyyy': {				// Validação dd/mm/yyyy				if (!isDate(objeto.value)) tmpErro += ' - O campo \'' + objeto.nome + '\' deve ser preenchido com uma data no formato DD/MM/AAAA \n';				break;				}			case 'hhmm': {				// Validação dd/mm/yyyy				if (!isHour(objeto.value)) tmpErro += ' - O campo \'' + objeto.nome + '\' deve ser preenchido com uma hora no formato HH:MM \n';				break;				}			case 'ddmmyyyy2': { // Implementação feita por Rafael (rever para uso, pois esta situação pode existir)				// Validação dd/mm/yyyy				if (objeto.value.length > 0) {				 if (!isDate(objeto.value)) tmpErro += ' - O campo \'' + objeto.nome + '\' deve ser preenchido com uma data no formato DD/MM/AAAA \n';				}				break;				}			//case 'ddmmyyyy3': { // Implementação feita por Rafael (rever para uso, pois esta situação pode existir)				// Validação dd/mm/yyyy				//mdata1 = objeto.value.substr(3,2) + '/' + objeto.value.substr(0,2) + '/' + objeto.value.substr(6,4);			//	mdata2 = objeto.value.substr(3,2) + '/' + objeto.value.substr(0,2) + '/' + objeto.value.substr(6,4);							//data1 = new Date(mdata1);				//data2 = new Date(mdata2);							//if (data2 < data1) tmpErro += ' - Erros nas data so!!! \n';				//break;				//}			case 'preenchido': {				// Validação preenchido				if (isEmpty(objeto.value)) tmpErro += ' - O campo \'' + objeto.nome + '\' é de preenchimento obrigatório \n';				break;				}			break;			}		break;		}	case 'file' : {	    switch (validacao) {		    case 'preenchidoEXT' : 			{				var NomeArquivo = objeto.value;				var arrNomeArquivo = NomeArquivo.split(".")				var ext = arrNomeArquivo[arrNomeArquivo.length-1]								var extUC = ext.toUpperCase();								var extensao = objeto.extensao;				var extensaoUC = extensao.toUpperCase();								if (extUC != extensaoUC)				{					 tmpErro += ' - Selecione um arquivo no formato ' + extensaoUC + ', para o campo \'' + objeto.nome + '\'\n';					 break;				}			}			case 'preenchido' : {			    if (objeto.value.length < 1) tmpErro += ' - Selecione um arquivo para o campo \'' + objeto.nome + '\'\n';				break;			}			case 'extensao' : {			  var tamanho = objeto.value.length;			  var extensao = objeto.value.substr(tamanho-3,tamanho);			  if (objeto.value != 0) {			   if ((extensao != 'jpg') && (extensao != 'JPG')) tmpErro += ' - Selecione um arquivo com extensão JPG para o campo \'' + objeto.nome + '\'\n';			   break;			  }			}			break;		}		break;	}	case 'select-one': {		switch (validacao) {			case 'selecionado': {				if (objeto.value=='') tmpErro += ' - O campo \'' + objeto.nome + '\' deve conter um valor selecionado \n';				break;				}			break;			}		break;		}	case 'password': {		switch (validacao) {			case 'preenchido': {				// Validação preenchido				if (isEmpty(objeto.value)) tmpErro += ' - O campo \'' + objeto.nome + '\' é de preenchimento obrigatório \n';				break;				}			break;			}		break;		}	case 'textarea': {		switch (validacao) {			case 'preenchido': {				// Validação preenchido				if (objeto.value < 1) tmpErro += ' - O campo \'' + objeto.nome + '\' é de preenchimento obrigatório \n';				break;				}			break;			}		break;		}	case 'checkbox': {		switch (validacao) {			case 'marcado': {				// Validação marcado				if(strCheckboxes.indexOf('|' + objeto.nome + '|') < 0) {					if (!isAnyChecked(objeto)) {						tmpErro += ' - Você deve selecionar ao menos um campo \'' + objeto.nome + '\' \n';						strCheckboxes += '|'+ objeto.nome + '|';						break;						}					break;					}				break;				}			break;			}		break;		}	case 'radio': {		switch (validacao) {			case 'marcado': {				if(strRadioboxes.indexOf('|' + objeto.nome + '|') < 0) {					if (!isAnyRadio(objeto)) {						tmpErro += ' - Você deve selecionar ao menos um campo \'' + objeto.nome + '\' \n';						strRadioboxes += '|'+ objeto.nome + '|';						break;						}					break;					}				break;				}			break;			}		break;		}		case 'hidden': {		switch (validacao) {			case 'newold': {				// Algum selecionado				if( (eval(objeto.form.name+'.opt'+objeto.newold+'[0]').checked == true && eval(objeto.form.name+'.'+objeto.newold+'_1').value == 0) || (eval(objeto.form.name+'.opt'+objeto.newold+'[1]').checked == true && isEmpty(eval(objeto.form.name+'.'+objeto.newold+'_2').value)) ) {					tmpErro += ' - Você deve selecionar ou digitar um valor para o campo \'' + objeto.nome + '\' \n';					break;					}				break;				}			case 'newold2': {				// Algum selecionado				if( (eval(objeto.form.name+'.'+objeto.newold+'[0]').checked == true && isEmpty(eval(objeto.form.name+'.'+objeto.valida1).value)) || (eval(objeto.form.name+'.'+objeto.newold+'[1]').checked == true && isEmpty(eval(objeto.form.name+'.'+objeto.valida2).value)) ) {					tmpErro += ' - Você deve selecionar ou digitar um valor para o campo \'' + objeto.nome + '\' \n';					break;					}				break;				}			break;			}		break;		}	}	return(tmpErro);}function trim(inputString) {	if (typeof inputString != "string") { return inputString; }	var retValue = inputString;	var ch = retValue.substring(0, 1);	while (ch == " ") { 		retValue = retValue.substring(1, retValue.length);		ch = retValue.substring(0, 1);	}	ch = retValue.substring(retValue.length-1, retValue.length);	while (ch == " ") { 		retValue = retValue.substring(0, retValue.length-1);		ch = retValue.substring(retValue.length-1, retValue.length);	}	while (retValue.indexOf("  ") != -1) { 		retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); 	}	return retValue; } // -------------------------------// Funções para validação de hora// ------------------------------- function isHour(Hora)   {   var hm = -1;   var hora = Array(2);   var ch = Hora.charAt(0);    for(i=0; i < Hora.length && (( ch >= '0' && ch <= '9' ) || ( ch == ':' && i != 0 ) ); ){    hora[++hm] = '';    if(ch!=':' && i != 0) return false;    if(i != 0 ) ch = Hora.charAt(++i);    if(ch=='0') ch = Hora.charAt(++i);    while( ch >= '0' && ch <= '9' ){     hora[hm] += ch;     ch = Hora.charAt(++i);    }    }   if(ch!='') return false;   if(hora[0] == '' || isNaN(hora[0]) || parseInt(hora[0]) < 0 || parseInt(hora[0]) > 23) return false;   if(hora[1] == '' || isNaN(hora[1]) || parseInt(hora[1]) < 0 || parseInt(hora[1]) > 59) return false;   return true;  }//------------------------------------------// Funções de validação de checkbox//------------------------------------------function isAnyChecked(objeto){	var fn_form = objeto.form;	var fn_name = objeto.name;	for(var i=0;i<fn_form.elements.length-1;i++) {		if (fn_form.elements[i].type == 'checkbox' && fn_form.elements[i].name == fn_name) {			if(fn_form.elements[i].checked) return true;		}	}	return false;}//------------------------------------------// Funções de validação de radio//------------------------------------------function isAnyRadio(objeto){	//alert(objeto.form)	var fn_form = objeto.form;	var fn_name = objeto.name;	for(var i=0;i<fn_form.elements.length-1;i++) {		if (fn_form.elements[i].type == 'radio' && fn_form.elements[i].name == fn_name) {			if(fn_form.elements[i].checked) return true;		}	}	return false;}//------------------------------------------// Fim//------------------------------------------//------------------------------------------// Início das funções de validação de email//------------------------------------------function isEmail(param){	var testresults;	var str=param;	var filter= /^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.g12)|(\.inf)|(\.adv)|(\.arq)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$/i	return(filter.test(str))}//------------------------------------------// Fim das funções de validação de email//------------------------------------------//------------------------------------------// Início das funções de validação de vazio//------------------------------------------function isEmpty(param) {	if (param.replace(/ /g,'').length < 1) return (true);	return (false);}//------------------------------------------// Fim das funções de validação de vazio//------------------------------------------//------------------------------------------// Início das funções de validação de data//------------------------------------------function isInteger(s){	var i;    for (i = 0; i < s.length; i++){           // Check that current character is number.        var c = s.charAt(i);        if (((c < "0") || (c > "9"))) return false;    }    // All characters are numbers.    return true;}function stripCharsInBag(s, bag){	var i;    var returnString = "";    // Search through string's characters one by one.    // If character is not in bag, append to returnString.    for (i = 0; i < s.length; i++){           var c = s.charAt(i);        if (bag.indexOf(c) == -1) returnString += c;    }    return returnString;}function daysInFebruary (year){	// February has 29 days in any year evenly divisible by four,    // EXCEPT for centurial years which are not also divisible by 400.    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );}function DaysArray(n) {	for (var i = 1; i <= n; i++) {		this[i] = 31		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}		if (i==2) {this[i] = 29}   }    return this}function isDate(dtStr){	var daysInMonth = DaysArray(12)	var pos1=dtStr.indexOf(dtCh)	var pos2=dtStr.indexOf(dtCh,pos1+1)	var strDay=dtStr.substring(0,pos1)	var strMonth=dtStr.substring(pos1+1,pos2)	var strYear=dtStr.substring(pos2+1)	strYr=strYear	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)	for (var i = 1; i <= 3; i++) {		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)	}	month=parseInt(strMonth)	day=parseInt(strDay)	year=parseInt(strYr)	if (pos1==-1 || pos2==-1){		return false	}	if (strMonth.length<1 || month<1 || month>12){		return false	}	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){		return false	}	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){		return false	}	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){		return false	}return true}//------------------------------------------// Término das funções de validação de data//------------------------------------------function Mascara(objEvent) {		objField = objEvent.srcElement;		strTipo = objField.type;		strMascara = objField.mascara;				if (strTipo == 'text') {			// Tarefas			//------------------------------------------------------			// 1. Pegar onde o cursor está posicionado no campo			// 2. Pegar quais são as teclas de número e outros			// 3. Comparar posição atual com posição do strMascara			//objEvent.returnValue = true;			for (var i=0; i < strMascara.length; i++){ 				arrMascara[i] = strMascara.slice(i,i+1) 			}		}}function FormataCampo(Campo,teclapres,mascara){ strtext = Campo.value tamtext = strtext.length tammask = mascara.length arrmask = new Array(tammask)      for (var i = 0 ; i < tammask; i++){   arrmask[i] = mascara.slice(i,i+1)  }  if (((((arrmask[tamtext] == "#") || (arrmask[tamtext] == "9"))) || (((arrmask[tamtext+1] != "#") || (arrmask[tamtext+1] != "9"))))){   if ((teclapres.keyCode >= 37 && teclapres.keyCode <= 40)||(teclapres.keyCode >= 48 && teclapres.keyCode <= 57)||(teclapres.keyCode >= 96 && teclapres.keyCode <= 105)||(teclapres.keyCode == 8)||(teclapres.keyCode == 9) ||(teclapres.keyCode == 46) ||(teclapres.keyCode == 13)){    Organiza_Casa(Campo,arrmask[tamtext],teclapres.keyCode,strtext)           }   else{    Detona_Event(Campo,strtext)   }  }  else{   if ((arrmask[tamtext] == "A"))    {    charupper = event.valueOf()    Detona_Event(Campo,strtext)    masktext = strtext + charupper    Campo.value = masktext   }  } }  function Organiza_Casa(Campo,arrpos,teclapres_key,strtext){  if (((arrpos == "/") || (arrpos == ".") || (arrpos == ",") || (arrpos == ":") || (arrpos == " ") || (arrpos == "-")) && !(teclapres_key == 8)){   separador = arrpos   masktext = strtext + separador   Campo.value = masktext  } } function Detona_Event(Campo,strtext){  event.returnValue = false  if (strtext != "") {    Campo.value = strtext  } }function MarcarTodos(modo){  var nb;  var chk;  if (document.forms[0].idMestre.value == 0) {     chk=1  } else {     chk=0   }  nb = document.forms[0].idNucleo.length  for (var i=0;i<nb;i++) {    var e = document.forms[0].idNucleo[i];    	if (modo == 0) {	 e.checked = chk;	}else if (modo == 1) {	 e.checked = chk;	 e.disabled = chk;	}  }document.forms[0].idMestre.value = chk;}